What You'll Be Working On
Core to Polymorphing for Linux are modifications to GCC, LLVM and other compiler tool chains. Compilers make many choices. For example, register assignment often has a choice of registers, and instruction schedulers often have a choice of instructions to schedule next. Typical compilers use fixed and thus hackable patterns, but ours break ties randomly at every compilation. By recompiling Linux for every customer, no two clients run the same executables, which foils hacks built on ROP gadgets.
We are expanding our toolset across platforms, compilers, architectures and implementations (e.g., plug-ins). As a Senior Compiler Engineer, you'll be responsible for implementation from concept/design to testing/performance to productization/support.
Here are a couple of examples of past projects:
- We changed PHP's parser and lexer to use a syntax customized for each individual client machine and, naturally, made parallel changes to that client's PHP scripts. They work exactly like the originals, but code-injection hacks from outside use a mismatched syntax and thus fail.
- We have built machine-code rewriters that accept a linked executable and relocation metadata and emit an equivalent binary with safe, random changes. And we have done likewise to change executables as they start up at load-time and on-the-fly during execution.
- You will also be working closely with the build farm and serving team. The company runs the largest build farm in the world, constantly building unique copies of Alpine, CentOS, Fedora, Red Hat and Ubuntu.
Who We're Looking For
Does a fast-paced workplace that constantly pushes you well outside your current skill set excite you? At the company, you'll be challenged to solve diverse problems that will disrupt the cybersecurity industry!
- Working deep inside compilers, optimizers, linkers, loaders, and running programs. Experience with machine-level debuggers, profilers, interpreters, and emulators has come in handy too.
- Compiler intermediate representations, Intel and ARM assembly and machine code, object-file formats, and relocation data.
- The mechanisms that load and run executables on various Unix and Windows OSs.
So if this sounds exciting, and you're fearless and a fast learner, you'll love working at the firm!
You May Be the Right Fit If You...
- have a strong formal academic training in computer science (or equivalent work experience)
- have an expert understanding of compiler architecture and compiler implementation techniques
- tend to obsess over code correctness, simplicity and performance
- have a minimum of 4 years of hands-on experience in complex compiler code generation and optimization in at least one major general-purpose compiler for C/C++ for x86 or any ISA platform
- have experience with machine-code generation/compiler back-ends (e.g., register allocation, instruction scheduling)
- have 8+ years development experience with a proven track record of delivering high quality production software
- have 4+ years of software design and programming experience in C/C++ for development, debugging, testing and performance analysis.
- are proficient in scripting languages, assembler, open source development tools. Experience with simulation tools and performance analysis tools a plus.
- are a great teammate with strong analytical, communication, problem solving, debugging, and troubleshooting skills
- have a Github account that shows your chops