MicroWalk: A Framework for Finding Side Channels in Binaries
This work addresses the critical security issue of side-channel attacks for software developers and security analysts, especially when source code is unavailable, though it is incremental as it builds on existing techniques like dynamic binary instrumentation.
The authors tackled the problem of detecting microarchitectural side-channel vulnerabilities in software binaries, particularly in closed-source cryptographic libraries, by developing MicroWalk, a framework that uses dynamic binary instrumentation and mutual information analysis. They applied it to analyze 15 cryptographic implementations, processing 112 million instructions in about 105 minutes, and successfully identified previously unknown leakages in hardened code.
Microarchitectural side channels expose unprotected software to information leakage attacks where a software adversary is able to track runtime behavior of a benign process and steal secrets such as cryptographic keys. As suggested by incremental software patches for the RSA algorithm against variants of side-channel attacks within different versions of cryptographic libraries, protecting security-critical algorithms against side channels is an intricate task. Software protections avoid leakages by operating in constant time with a uniform resource usage pattern independent of the processed secret. In this respect, automated testing and verification of software binaries for leakage-free behavior is of importance, particularly when the source code is not available. In this work, we propose a novel technique based on Dynamic Binary Instrumentation and Mutual Information Analysis to efficiently locate and quantify memory based and control-flow based microarchitectural leakages. We develop a software framework named \tool~for side-channel analysis of binaries which can be extended to support new classes of leakage. For the first time, by utilizing \tool, we perform rigorous leakage analysis of two widely-used closed-source cryptographic libraries: \emph{Intel IPP} and \emph{Microsoft CNG}. We analyze $15$ different cryptographic implementations consisting of $112$ million instructions in about $105$ minutes of CPU time. By locating previously unknown leakages in hardened implementations, our results suggest that \tool~can efficiently find microarchitectural leakages in software binaries.