Security Researcher
Moscow, Moscow City, Russia
• Designed and developed a TUI for the fuzzing control using Rust. This includes a collection of live information about the testing process (amount of found bugs, the status of running processes, code coverage, CPU load, and so on) and fuzz process management (pause, kill, create a new one). This tool allows controlling a large number of targets under test with exceeding several thousand cores for some programs. • I've ported fuzzer to work on Windows. After my work, it can now use DynamoRIO and TinyInst on windows and fuzz big targets such as FreeCAD, Word, and Sublime Text. Also, we implemented GUI fuzzing on windows for our fuzzer. • Implemented custom QEMU machines for fuzzing. Those machines contain a simple mechanism of snapshots to make fast reloads (not that fast as in Nyx) • Architected and implemented a dynamic program analysis manager that controls the testing process (restart, shutdown, collect information, autostart, load balance) between many fuzzers running in parallel on the same machine or even many machines connected over the network. • Done some research on snapshot fuzzing. Implemented snapshots for TinyInst. Implemented the Linux side of TinyInst instrumentation. Connected Nyx as a backend for the main fuzzer tool developed by ISP RAS. • Fuzzed some hard targets including (but not limited to): ARM TrustZone (kernel and trustlets), PostgreSQL, various network protocols, and a lot of open-source targets which are used in many popular Linux distributions. • Participated in the implementation of the SDL approach in most projects in the company using Gitlab CI/CD, Jenkins, fuzzing, and static analysis. • Improved fuzzer performance by capturing and analyzing traces with perf. • Participated in the development of a fuzzing engine with partial emulation (based on Unicorn, S2E, and Qiling). It was successfully used to fuzz some firmware later on by my colleagues.