Personal details

Gary K. - Remote

Gary K.

Timezone: Pacific Time (US & Canada) (UTC-7)

Summary

I run my own consultancy, yGit Software. Previously, I worked on fuzzing harnesses in Python on Mozilla Firefox / SpiderMonkey JS engine for >8 years full time, 3+ years as a remote contractor. Experienced the pain of moving large codebases from Python 2.x to 3, and would love to share my knowledge of how to avoid known pain points of using Python in the practical world.

Work Experience

Principal
yGit Software | Aug 2020 - Present
Python
I'm currently a Principal at yGit Software.
Senior Software Engineer (Fuzzing Security Engineer)
MZ Canada (Mozilla) | Apr 2019 - Jan 2020
Python
Python 3
JavaScript
Built and deployed funfuzz running 24/7 on Windows / Linux / macOS locally, in the Amazon EC2 AWS Cloud, on x86 / x86-64 / ARM64 architectures; collated information from testcases including: stacktraces via gdb, reverse debugger traces via rr, rr trace submission via pernosco, Git/Mercurial revision, compilation information, runtime flags into the bug report; worked with developers to ensure the bugs’ reproduction on machines for debugging. • Managed funfuzz, 10K+ public Python project on GitHub, while interacting with FuzzManager to identify SpiderMonkey security bugs, Mozilla’s JavaScript engine. • Reduced several thousand-line (security-sensitive) JavaScript and WebAssembly (wasm) testcases to minimal forms using a line-based reducer, Lithium. • Produced Autobisectjs, Python code aiming to bisect test cases back in time to identify when the issue first occurred or when the bug first surfaced. This also worked for identifying when an issue got fixed or got hidden by another patch. • Reported >2,6K SpiderMonkey bugs via fuzzing, and >3,5K total across all Mozilla products. • Reported 19 bugs in Google V8 JS Engine, and 4 bugs in Microsoft ChakraCore Engine.

Personal Projects

2020
Python
Python 3
JavaScript
(Project at previous employment) This repository contains several JavaScript-based fuzzers. jsfunfuzz tests JavaScript engines and can run in a JavaScript shell, compare_jit compares output from SpiderMonkey using different flags, while randorderfuzz throws in random tests from the mozilla-central directory into generated jsfunfuzz output. Most of the code other than testcase generation is written in Python: restarting the program when it exits or crashes, noticing evidence of new bugs from the program's output, reducing testcases, and identifying when regressions were introduced.