Truecrypt Source Code Audit Finds No Critical Flaws Or Intentional Backdoors

Some vulnerabilities were identified but are likely accidental, security auditors from iSEC Partners said

The source code of TrueCrypt, a popular disk encryption tool, is not the most polished work of programming, but it has no critical flaws or intentional backdoors, security testers concluded in a report released Monday.

The professional code review was performed during January and February by security engineers from iSEC Partners, a subsidiary of information assurance company NCC Group, and was the first phase of a crowd-funded audit project that aims to thoroughly test TrueCrypt for code vulnerabilities and cryptographic weaknesses.

The iSEC auditors analyzed only select parts of the TrueCrypt 7.1a source code: the Windows kernel code, the bootloader, the filesystem driver and other code areas related to those important components.

The company didn't find any high-severity issues during the review and concluded that there was "no evidence of backdoors or intentional flaws." Some security vulnerabilities were identified, but they appeared to be accidental and did not present "immediate exploitation vectors," the auditors said in a summary of their findings.

Eleven vulnerabilities were found in total, four of them of medium severity, four of low severity, and three rated as informational.

Only one of the flaws was directly related to cryptographic implementations and stems from the use of PBKDF2, a standard key derivation algorithm, with a low iteration count.

"Developers are responsible for specifying an iteration count that influences the computational cost of deriving a key from a password," the iSEC auditors wrote in the full technical report. "The iteration count used by TrueCrypt is either 1000 or 2000, depending on the hash function and use case. In both cases, this iteration count is too small to prevent password guessing attacks for even moderately complex passwords."

The auditors recommended that TrueCrypt's developers should make the PBKDF2 iteration count configurable to keep pace with advances in CPU and GPU performance that improve the feasibility of brute-force attacks or, in the longer term, switch to a different key derivation function called Scrypt that uses larger amounts of memory and requires more expensive hardware to attack via brute-force techniques.

There's also room for improvement beyond resolving the identified issues. From a quality perspective, the source code for both the TrueCrypt bootloader and Windows kernel driver failed to meet expected standards for secure code, the iSEC auditors said in the report. "This includes issues such as lack of comments, use of insecure or deprecated functions, inconsistent variable types and so forth."

The Open Crypto Audit Project that contracted iSEC to perform the professional code review was created in October by Matthew Green, a cryptographer and research professor at Johns Hopkins University in Baltimore and Kenneth White, a security research and development engineer at Social & Scientific Systems, a clinical research and health consultancy. The project chose to focus on TrueCrypt because, despite being popular and important for a lot of people, the application has never been thoroughly analyzed from a security perspective.

TrueCrypt's developers have remained anonymous over the years for privacy reasons, and even though the program's source code has been publicly available for anyone to look at, questions have been raised about the integrity of the build process, as most people download and use pre-compiled binaries of TrueCrypt.

The source code review is just the first phase of the professional audit envisioned by the Open Crypto Audit Project. Phase two will consist of a formal cryptanalysis of the program's cryptographic functions.

The project also wants a legal review of the software's license and the creation of a deterministic build process to ensure that pre-compiled TrueCrypt binaries have not been altered.

New! Download the CIO March/April Digital Magazine