For better or worse, there is almost no facet of our modern world that works without a computer system. Virtually all of those computer systems rely on “systems software” to manage distinct tasks and bridge the gap between hardware and higher-level software. Whether it is an embedded system using tightly-coupled FPGA fabric to offload performance- or security-critical tasks or a server using a hypervisor to manage co-resident guests, there is low-level code making sure that higher-level code can see a sane and well-ordered world. That lower-level code is full of complexity as it works to bridge the gap from the realities of diverse hardware ISAs to higher-level abstractions. It is also foundational to the security story of all of our systems. At Riverside Research, the Secure and Resilient Systems group works to strengthen that code to provide our customers with secure foundations for their mission-critical software stacks. This is essential to getting ahead of the attacker rather than playing whack-a-mole with bug fixes. Sometimes, computers can help us to analyze and implement protections on these software layers in the form of program analysis and compiler-based security mechanisms.
Riverside Research is seeking a research scientist to support research and development of cutting-edge compiler and program analysis security technologies. As a key member of our Secure and Resilient Systems team, the research scientist will lead efforts to prototype new features in open-source compilers such as LLVM and program analysis tools and frameworks such as angr or others. Strong fundamentals in software development practices for large projects (version control, debugging techniques, etc), an understanding of the system software stack and the software/hardware interface, and a strong background in computer science fundamentals (e.g., algorithms, data structures, program languages) will be critical for efficiently designing and prototyping dramatic tools and features that advance the state of the art in compilers and program analysis.
The research scientist will contribute to a diverse team responsible for developing compiler technologies and program analyses that increase the security of complex targets like operating systems, build systems, or complex user applications. They will be expected to prototype and push both code and accompanying documentation/design documents. Additionally, they will jumpstart the research process by leading the team to design solutions to new challenges, break problems into subtasks, contribute to and oversee implementation, and evaluate the resulting prototypes. The research scientist should have the writing skills necessary to communicate their ideas and results to internal and external stakeholders. The research scientist will also contribute to technical marketing and proposal writing in their research area and interface with team members across Riverside Research locations. An ideal candidate will aspire to, with support and mentorship, pursue and grow funded R&D programs with government research organizations (e.g. DARPA, IARPA, service labs, etc.), lead R&D contracts, and transition technology into the field.
The research scientist should have experience in “systems” (e.g., C/C++, at least one assembly language, Python, Rust) and hacking on tools for program analysis (these may be written in higher-level languages and leverage DSLs or DSL interpreters/compilers). A good candidate research scientist should be able to explain, at different levels of abstraction, why programing language fundamentals from C to Haskell to different flavors of domain-specific languages are relevant to this role.
All Riverside Research opportunities require US citizenship.
Required Qualifications:
Desired Qualifications:
Software Powered by iCIMS
www.icims.com