Challenge binaries Challenge Binaries ran on the full 32-bit
Intel x86 architecture, albeit with a simplified
ABI. Reducing external interaction to its base components (e.g., system calls for well-defined I/O, dynamic memory allocation, and a single source of randomness) simplified both modeling and securely running the binaries in isolation to observe their behavior. Internal complexity was however unrestricted, with challenges going as far as implementing a particle physics simulator, chess, programming/scripting languages, parsing of huge amounts of markup data, vector graphics,
just-in-time compilation,
VMs, etc. The challenge authors were themselves scored based on how well they distinguished the players' relative performance, encouraging challenges to exercise specific weaknesses of automatic reasoning (e.g., state explosion) while remaining solvable by well-constructed systems.
Player systems Each playing system—a fully-automated "Cyber Reasoning System" (CRS) -- had to demonstrate ability in several areas of computer security: • Automatic
vulnerability finding on previously-unknown binaries. • Automatic
patching of binaries without sacrificing performance. • Automatic
exploit generation within the framework's limitations. • Implementing a security strategy: balancing resource-assignment among the available servers (a variation of the
multi-armed bandit problem), responding to competitors (e.g., analyzing their patches, reacting to exploitation), evaluating own action's effect on the final score, ... Teams described their approach in various venues. Additionally, the third-place finisher (Shellphish) released their entire system's source code. Due to the complexity of the task, players had to combine multiple techniques and do so in a fully-unattended and time-efficient fashion. For instance, the highest attack score was reached by discovering vulnerabilities via a combination of guided
fuzzing and
symbolic execution—i.e., an
AFL-based fuzzer combined with the angr binary analysis framework, leveraging a
QEMU-based emulation and execution-tracing system. == CGC Qualification Event (CQE) ==