TrueCrypt audit • Independent technical research public interest organization • Technical Advisory Board: academic, industry, and legal experts in security and privacy
TrueCrypt audit • Independent technical research public interest organization • Technical Advisory Board: academic, industry, and legal experts in security and privacy • Mission: Research, analysis & education around technical security in open source software • Focus: software security, cryptography engineering, public awareness
TrueCrypt audit • Independent technical research public interest organization • Technical Advisory Board: academic, industry, and legal experts in security and privacy • Mission: Research, analysis & education around technical security in open source software • Focus: software security, cryptography engineering, public awareness • Current project: CII OpenSSL audit
Initiative (CII) • Ambitious Scope o Independent review o Coordinating closely with OpenSSL core team o Delayed for v. 1.1 maturity (significant refactor) o Diverse, complex codebase o Linux, BSDs, Windows, OSX, SRV5 (AIX, HP-UX, Solaris) o Intel x86 (incl. AES-NI), ARMv7, MIPS, PowerPC, Alpha… o FIPS module
the core code in the next major release of OpenSSL • Demonstrate viability of a reusable open source test harness framework • Foster web-scale peer-reviewed public tools & data sets for protocol & negotiation analysis
some potential bugs invalidated due to pre- or post- target parsing o PEM parsing contained unexpected formats including access to ASN.1 decoding facilities HMAC and CMAC algorithms o Tooling used to provide most coverage for ASN.1 complex parsing o Memory leak and integer overflow identified but very unlikely invalid or low severity issues o RSA uses blinding and constant time operations by default o RSA_padding_check_SSLv23 does not appear to be constant time, but is deprecated o ECDSA also constant time, although implemented at the encryption layer rather than the BIGNUM layer o Some overreads identified in the TLS stack handshake, but unlikely to result in security issues
done on ~20M certs using afl-cmin • Corpus of 277 certificates that result in diverse paths being taken through the certificate parsing code. • Fuzzed the PEM_read_X509 function for 228 hours covering 28,552,385 executions, and 803 paths • Fuzzed the d2i_X509_fp function for 228 hours also, covering 28,647,659 executions and 959 paths. • x509 fuzzing resulted in no crashes or interesting results • DER fuzzing resulted in four instances of particularly slow execution • Tool developed to exercise several types of ASN.1 structures
data structures in init_buf used wen parsing network input masked buffer overreads o selftls did generate some crashes, but unlikely to lead to directly exploitable conditions (due to the oversized backing buffer) Crashes identified by small stub developed for fuzzing the BIO_print function when the attacker can control a format string No crashes identified by a small fuzzer developed for BIGNUM operations
via a stack buffer overflow when processing SSLv3 records using certain digest functions during PSK authentication (deprecated) • Potential code execution via heap buffer overflow during server key exchange messages • Possible Denial of Service caused by an uncontrolled out of bound read while processing client key exchange messages • Denial of Service caused by replay protections in DTLS • A few cases of potentially unwiped secrets in memory, likely difficult to exploit
of EVP_* opaque structures (function calls to initialize and process, rather than direct access) FIPS v 2.0 module • Implemented on over 100 platforms • Not in the initial release of v 1.1 • CMVP validation: $350K+ (est.) Post-Logjam