[논문 리뷰] Security Smells in Ansible and Chef Scripts: A Replication Study
이 복제 연구는 정성적 분석과 고유한 정적 분석 도구인 SLAC를 사용하여 Ansible 및 Chef 인프라 as 코드 스크립트에서 반복적으로 나타나는 보안 취약 패턴(보안 냄새)을 식별한다. 연구는 새로운 냄새 두 가지(case 문에서 기본값 누락 및 무결성 검사 없음)를 발견했으며, 50,323개의 스크립트에서 총 46,600개의 보안 냄새 인스턴스(하드코드된 암호 7,849개 포함)를 탐지했으며, 94개의 보고서 중 65개가 실무자에 의해 확인되어 실무 적용 가능성을 확인하였다.
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 paper 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, similar 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.
연구 동기 및 목표
- Ansible 및 Chef 인프라 as 코드 스크립트에서 보안 냄새를 식별하고 검증하며, 이전의 Puppet에 대한 연구를 확장한다.
- Puppet를 초월하여 널리 사용되는 IaC 언어에서 보안 냄새의 보편성과 실제 세계 적용 가능성을 평가한다.
- Ansible 및 Chef 스크립트에서 보안 냄새를 자동 탐지하기 위한 정적 분석 도구(SLAC)를 개발하고 평가한다.
- IaC 스크립트의 보안 냄새가 알려진 보안 취약점(CWE)과 관련이 있으며 실무자에 의해 인식되는지 조사한다.
- 코드 리뷰와 정적 분석을 통해 보안 구성의 조기 탐지를 가능하게 하여 DevSecOps 관행을 지원한다.
제안 방법
- 오픈 코드 기반의 정성적 복제 연구를 수행하여 1,956개의 Ansible 및 Chef 스크립트에서 반복적인 비보안 패턴을 식별하였다.
- 식별된 보안 냄새를 바탕으로 수작업 규칙을 활용해 SLAC(Security Linter for Ansible and Chef) 정적 분석 도구를 구축하였다.
- SLAC를 사용해 813개의 오픈소스 레포지터리에서 확보한 50,323개의 스크립트를 분석하여 대규모로 보안 냄새를 탐지하였다.
- 탐지된 냄새 인스턴스 1,000개에 대해 무작위로 보고서를 생성하고 실무자 피드백을 평가하여 관련성의 타당성을 검증하였다.
- 편향을 줄이고 탐지 정확도를 향상시키기 위해 이중 평가자와 자원봉사자 평가자를 활용하여 오라클 데이터셋 구축에 기여하였다.
- 탐지된 냄새를 공통 취약점 목록(CWE)에 매핑하여 보안 관련성을 검증하였으며, 예를 들어 무결성 검사에 대한 CWE-494를 적용하였다.
실험 결과
연구 질문
- RQ1Ansible 및 Chef 인프라 as 코드 스크립트에 반복적으로 나타나는 보안 냄새는 무엇인가?
- RQ2식별된 Ansible 및 Chef 스크립트의 보안 냄새는 이전에 발견된 Puppet 스크립트의 냄새와 어떻게 비교되는가?
- RQ3IaC 스크립트의 보안 냄새가 알려진 보안 취약점(CWE)과 어느 정도 일치하는가?
- RQ4SLAC 정적 분석 도구는 실제 스크립트 코퍼스에서 보안 냄새 탐지에 얼마나 효과적인가?
- RQ5실무자들이 보안 냄새 보고서를 인식하고 동의하는가? 이는 실제 적용 가능성의 지표이다.
주요 결과
- 이전 연구에서 보고되지 않은 새로운 보안 냄새 두 가지를 발견했다: 'case 문에서 기본값 누락'과 '무결성 검사 없음'.
- SLAC는 50,323개의 Ansible 및 Chef 스크립트에서 총 46,600개의 보안 냄새 발생을 탐지했으며, '하드코드된 비밀번호'가 가장 흔한 냄새였다.
- 탐지된 냄새 중 7,849개의 인스턴스는 하드코드된 암호를 포함하여 IaC 관행에서 심각한 보안 위험을 드러냈다.
- 제출된 94개의 보고서 중 65개가 실무자에 의해 확인되어 식별된 냄새의 강력한 실무 적용 가능성과 관련성을 입증하였다.
- 이 연구는 Ansible 및 Chef 스크립트에서 보안 냄새가 Puppet 스크립트와 유사하게 널리 퍼져 있음을 확인하였다.
- 이 findings는 IaC 파이프라인에서 비보안 구성의 조기 탐지 및 완화를 위해 코드 리뷰와 SLAC와 같은 자동 정적 분석 도구의 병행 사용이 효과적임을 뒷받침한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.