DeAI Research
Source · ACM Transactions on Software Engineering and Methodology

Security Smells in Ansible and Chef Scripts

2021Akond Rahman; Md Rayhanur Rahman; Chris Parnin; Laurie A. Williams

cid c05a0461d2754aeb7a813c31d42e3577b8179b86870e8e3fe3ee4d1ca575b9bf · original · open access · via openalex

Title: Security Smells in Ansible and Chef Scripts
Authors: Akond Rahman; Md Rayhanur Rahman; Chris Parnin; Laurie A. Williams
Venue: ACM Transactions on Software Engineering and Methodology
Year: 2021
Canonical: doi:10.1145/3408897
URL: https://doi.org/10.1145/3408897
Collector: openalex
OA: true

ABSTRACT
Context: Security smells are recurring coding patterns that are indicative of security weakness and require further inspection. As infrastructure as code (IaC) scripts, such as Ansible and Chef scripts, are used to provision cloud-based servers and systems at scale, security smells in IaC scripts could be used to enable malicious users to exploit vulnerabilities in the provisioned systems. Goal: The goal of this article is to help practitioners avoid insecure coding practices while developing infrastructure as code scripts through an empirical study of security smells in Ansible and Chef scripts. Methodology: We conduct a replication study where we apply qualitative analysis with 1,956 IaC scripts to identify security smells for IaC scripts written in two languages: Ansible and Chef. We construct a static analysis tool called Security Linter for Ansible and Chef scripts (SLAC) to automatically identify security smells in 50,323 scripts collected from 813 open source software repositories. We also submit bug reports for 1,000 randomly selected smell occurrences. Results: We identify two security smells not reported in prior work: missing default in case statement and no integrity check. By applying SLAC we identify 46,600 occurrences of security smells that include 7,849 hard-coded passwords. We observe agreement for 65 of the responded 94 bug reports, which suggests the relevance of security smells for Ansible and Chef scripts amongst practitioners. Conclusion: We observe security smells to be prevalent in Ansible and Chef scripts, similarly to that of the Puppet scripts. We recommend practitioners to rigorously inspect the presence of the identified security smells in Ansible and Chef scripts using (i) code review, and (ii) static analysis tools.