[論文レビュー] Security Smells in Ansible and Chef Scripts: A Replication Study
この再現研究では、Qualitative analysisと独自の静的解析ツールSLACを用いて、AnsibleおよびChefのインfraストラクチャ・イン・コード(IaC)スクリプトにおけるセキュリティスモール(繰り返し発生する脆弱なコーディングパターン)を同定した。本研究では、2つの新しいスモール(case文におけるデフォルトの欠落、整合性チェックの欠如)を発見し、50,323件のスクリプトにわたり46,600件のセキュリティスモールのインスタンス(うち7,849件はハードコードされたパスワードを含む)を検出。65/94の確認済みバグレポートにより、実務者による関連性が裏付けられた。
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のインfraストラクチャ・イン・コード(IaC)スクリプトにおけるセキュリティスモールを同定・検証し、Puppetに関する先行研究を拡張すること。
- Puppetにとどまらず、広く使われているIaC言語におけるセキュリティスモールの広がりと実世界での関連性を評価すること。
- AnsibleおよびChefスクリプトにおけるセキュリティスモールの自動検出を可能にする静的解析ツール(SLAC)の開発および評価すること。
- IaCスクリプトにおけるセキュリティスモールが、既知のセキュリティ脆弱性(CWE)と相関しているか、実務者によって認識されているかを調査すること。
- コードレビューと静的解析を組み合わせることで、DevSecOpsの実践を支援し、IaCパイプラインにおける不正な設定の早期検出を可能にすること。
提案手法
- オープンコーディングを用いて、1,956件のAnsibleおよびChefスクリプトを対象に定性的な再現研究を実施し、繰り返し発生する脆弱なパターンを同定。
- 同定されたセキュリティスモールに基づく手作業のルールを用いて、SLAC(Security Linter for Ansible and Chef)と呼ばれる静的解析ツールを構築。
- SLACを用いて、813のオープンソースリポジトリから収集した50,323件のスクリプトを対象に、大規模なセキュリティスモール検出を実施。
- 検出されたスモールインスタンスに対して1,000件のランダムなバグレポートを生成し、実務者のフィードバックを評価することで関連性を検証。
- バイアスの低減と検出精度の向上を目的に、二重のレーティング者とボランティアレーティング者を用いてオラクルデータセットの構築を実施。
- 検出されたスモールを共通脆弱性分類(CWE)にマッピングし、セキュリティ的関連性を検証(例:整合性チェックについてはCWE-494)。
実験結果
リサーチクエスチョン
- RQ1AnsibleおよびChefのインfraストラクチャ・イン・コード(IaC)スクリプトに、どのような繰り返し発生するセキュリティスモールが存在するか?
- RQ2本研究で同定されたAnsibleおよびChefのセキュリティスモールは、以前にPuppetスクリプトで発見されたものとどのように比較できるか?
- RQ3IaCスクリプトにおけるセキュリティスモールが、既知のセキュリティ脆弱性(CWE)とどの程度一致するか?
- RQ4SLAC静的解析ツールは、実世界のスクリプトの大規模なコーパスにおいて、セキュリティスモールの検出にどの程度効果的か?
- RQ5実務者は、セキュリティスモールレポートを認識し、同意するか。これは、実世界での関連性を示唆する。
主な発見
- 2つの新しいセキュリティスモールが発見された:『case文におけるデフォルトの欠落』と『整合性チェックの欠如』。これらは、先行研究で報告されていなかった。
- SLACは、50,323件のAnsibleおよびChefスクリプトにわたり、合計46,600件のセキュリティスモールの発生を検出。その中で最も一般的なスモールは『ハードコードされたシークレット』であった。
- 検出されたスモールのうち7,849件は、ハードコードされたパスワードを含んでおり、IaCの実践における深刻なセキュリティリスクを示している。
- 提出された94件のバグレポートのうち65件が実務者によって確認された。これは、同定されたスモールが強い関連性と実世界での適用可能性を持つことを示している。
- 本研究では、AnsibleおよびChefのスクリプトにおいてもセキュリティスモールが広く存在することを確認した。これは、Puppetスクリプトにおけるそれらの広がりと同様である。
- 本研究の結果は、コードレビューとSLACのような自動静的解析ツールの併用が、IaCパイプラインにおける不正な設定の事前の検出と是正を可能にすることを支援する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。