一句话:提出上下文数据流建模,扩展组合式污点分析以检查复杂污点规约,并用三项优化实现生产级精度与可扩展性。
自动静态数据流分析可发现敏感数据泄漏与注入攻击等安全问题,但在大型工业代码库上兼顾高精度、高召回与可扩展性十分困难。组合式分析独立分析组件并生成可复用摘要,适合 CI/CD 与容器镜像扫描,却难以处理实际中的上下文污点规约。本文提出上下文数据流建模,在保持组合性的同时支持复杂污点规约,提升召回率与精度。为在生产中扩展,作者采用三项优化:丢弃已分析组件的中间结果、按污点规约缩小分析范围、缓存分析模型。在 OWASP 基准与内部真实代码上,误报率降低 9.85%;并基于 Maven JVM 包与 AWS 服务代码评估各优化的性能与可扩展性,最终在 Amazon 内外大规模执行安全策略。
Automated static dataflow analysis is an effective technique for detecting security critical issues like sensitive data leak, and vulnerability to injection attacks. Ensuring high precision and recall requires an analysis that is context, field and object sensitive. However, it is challenging to attain high precision and recall and scale to large industrial code bases. Compositional style analyses in which individual software components are analyzed separately, independent from their usage contexts, compute reusable summaries of components. This is an essential feature when deploying such analyses in CI/CD at code-review time or when scanning deployed container images. In both these settings the majority of software components stay the same between subsequent scans. However, it is not obvious how to extend such analyses to check the kind of contextual taint specifications that arise in practice, while maintaining compositionality. In this work we present contextual dataflow modeling, an extension to the compositional analysis to check complex taint specifications and significantly increasing recall and precision. Furthermore, we show how such high-fidelity analysis can scale in production using three key optimizations: (i) discarding intermediate results for previously-analyzed components, an optimization exploiting the compositional nature of our analysis; (ii) a scope-reduction analysis to reduce the scope of the taint analysis w.r.t. the taint specifications being checked, and (iii) caching of analysis models. We show a 9.85% reduction in false positive rate on a comprehensive test suite comprising the OWASP open-source benchmarks as well as internal real-world code samples. We measure the performance and scalability impact of each individual optimization using open source JVM packages from the Maven central repository and internal AWS service codebases. This combination of high precision, recall, performance, and scalability has allowed us to enforce security policies at scale both internally within Amazon as well as for external customers.
@inproceedings{BanerjeeCEFHLLP23,
title = {Compositional Taint Analysis for Enforcing Security Policies at Scale},
author = {Subarno Banerjee and Siwei Cui and Michael Emmi and Antonio Filieri and Liana Hadarean and Peixuan Li and Linghui Luo and Goran Piskachev and Nicolás Rosner and Aritra Sengupta and Omer Tripp and Jingbo Wang},
booktitle = {FSE},
year = {2023},
doi = {10.1145/3611643.3613889}
}