一句话:通过实证研究识别 IaC 脚本中的七类安全坏味道,并实现静态分析工具 SLIC 进行大规模检测与缺陷报告验证。
论文关注基础设施即代码(IaC)脚本中可能被开发者无意引入的安全缺陷。作者对 1,726 个 IaC 脚本进行定性分析,归纳出七类安全坏味道;随后实现并验证静态分析工具 SLIC,在来自 293 个开源仓库的 15,232 个 IaC 脚本中检测这些坏味道。结果显示共有 21,201 次出现,其中硬编码密码有 1,326 次。作者还随机选取 1,000 个坏味道提交缺陷报告,获得 212 个回复,148 个被开发团队接受修复,并发现部分坏味道寿命很长,硬编码秘密最长持续 98 个月,中位寿命 20 个月。
Practitioners use infrastructure as code (IaC) scripts to provision servers and development environments. While developing IaC scripts, practitioners may inadvertently introduce security smells. Security smells are recurring coding patterns that are indicative of security weakness and can potentially lead to security breaches. The goal of this paper is to help practitioners avoid insecure coding practices while developing infrastructure as code (IaC) scripts through an empirical study of security smells in IaC scripts. We apply qualitative analysis on 1,726 IaC scripts to identify seven security smells. Next, we implement and validate a static analysis tool called Security Linter for Infrastructure as Code scripts (SLIC) to identify the occurrence of each smell in 15,232 IaC scripts collected from 293 open source repositories. We identify 21,201 occurrences of security smells that include 1,326 occurrences of hard-coded passwords. We submitted bug reports for 1,000 randomly-selected security smell occurrences. We obtain 212 responses to these bug reports, of which 148 occurrences were accepted by the development teams to be fixed. We observe security smells can have a long lifetime, e.g., a hard-coded secret can persist for as long as 98 months, with a median lifetime of 20 months.