コンテンツにスキップ

Static Application Security Testing

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Static Application Security Testing(略称:SAST、別名:静的アプリケーションセキュリティテスト)は、ソースコードをレビューしてセキュリティ上の脆弱性を特定することにより、ソフトウェアを保護するために使用される。静的プログラム解析はコンピュータが存在する限り存在してきたが、この技術がセキュリティ分野に広がったのは90年代後半であり、SQLインジェクションに関する最初の公的な議論は、WebアプリケーションJavaScriptFlashのような新技術を統合し始めた1998年に行われた。

アプリケーションの機能をブラックボックステストするためのDynamic Application Security Testing(DAST)ツールとは異なり、SASTツールはアプリケーションのコード内容、つまりホワイトボックステストに焦点を当てている。SASTツールは、アプリケーションとそのコンポーネントのソースコードをスキャンし、ソフトウェアやアーキテクチャにおける潜在的なセキュリティの脆弱性を特定する。静的解析ツールは、テスト対象のアプリケーションに存在するセキュリティ脆弱性の推定50%を検出できる[1]ソフトウェア開発ライフサイクル(SDLC)において、SASTは開発プロセスの初期段階やコードレベルで実行されるだけでなく、すべてのコード断片やコンポーネントが一貫したテスト環境に統合された際にも実行される。SASTはソフトウェアの品質保証にも使用されるが[2]、結果として生じる多くの偽陽性が開発者による採用を妨げている場合もある[3]

SASTツールは、主に要求された仕様に従ってソフトウェアを開発し提供することに注力している開発チームを支援するために、開発プロセスに統合されている[4] 。他のセキュリティツールと同様に、SASTツールはアプリケーションのダウンタイムのリスクを低減することや、アプリケーションに保存された個人情報が侵害されないようにすることに焦点を当てている。

概要

[編集]

リリース前に実施されるアプリケーションセキュリティテストには、SASTとDAST、およびこれら2つを組み合わせたInteractive Application Security Testing(IAST)が含まれる[5]

静的解析ツールは、プログラムのテキストを構文的に検査する。これらはソースコード内の固定されたパターンやルールを探す。理論的には、コンパイルされた形式のソフトウェアを検査することも可能である。この技術は、コンパイルされたコンポーネントとソースコードコンポーネント間のマッピングを行い、問題を特定するためにコードの計装(インストルメンテーション)に依存している。静的解析は、コードレビューや、セキュリティを含むさまざまな目的のためのコードの監査として手動で行うこともできるが、それには時間がかかる[6]

SASTツールの精度は、解析の範囲と脆弱性を特定するために使用される特定の技術によって決定される。解析のレベルには以下が含まれる。

解析の範囲によって、文脈情報を使用して脆弱性を検出する正確さと能力が決まる[7] 。SASTツールは、DASTツールとは異なり、開発者にリアルタイムのフィードバックを提供し、コードを次の段階に進める前に欠陥を修正するのを助ける。

関数レベルでは、一般的な技術として、関数内のデータの流れを制御するための抽象構文木の構築がある[8]

90年代後半以降、ビジネス上の課題に適応する必要性から、開発チームのプロセスと組織によって強化されたコンポーネント化[9]により、ソフトウェア開発は変化してきた[10]。アプリケーションまたはアプリケーション群のすべてのコンポーネント間のデータの流れを追跡することで、サニタイズのための専用プロシージャへの必須呼び出しの検証や、特定のコード部分でデータをテイント(汚染)させるための適切なアクションが取られているかの検証が可能になる[11][12]

Webアプリケーションの台頭に伴い、それらのテストが必要となった。Verizon Data Breachは2016年に、全データ侵害の40%がWebアプリケーションの脆弱性を利用していると報告した[13]。外部的なセキュリティ検証と内部脅威への注目の両方が高まっている。Clearswift Insider Threat Index(CITI)は、2015年の調査で回答者の92%が過去12ヶ月間にITまたはセキュリティインシデントを経験し、これらの侵害の74%が内部関係者によるものであったと報告している[14][15]。Lee Hadlingtonは内部脅威を、悪意あるもの、偶発的なもの、意図しないものの3つのカテゴリに分類した。モバイルアプリケーションの爆発的な成長は、悪意のあるコード開発を減らすために、開発プロセスの早い段階でアプリケーションを保護することを意味する[16]

SASTの強み

[編集]

ソフトウェア開発ライフサイクルにおいて脆弱性が早期に修正されるほど、修正コストは安くなる。開発段階での修正コストはテスト段階よりも10倍低く、本番環境よりも100倍低い[17]。SASTツールは、コードレベルまたはアプリケーションレベルで自動的に実行され、対話を必要としない。CI/CDのコンテキストに統合された場合、SASTツールは重大な脆弱性が特定された場合に統合プロセスを自動的に停止するために使用できる[18]

他の種類のテストに対するもう一つの利点は、DASTツールが実行をカバーするためアプリケーションの一部[5]や設定ファイル内の安全でない設定を見逃す可能性があるのに対し、SASTツールはソースコード全体をスキャンすることである。

SASTツールは、品質テストやアーキテクチャテストなどの拡張機能を提供できる。ソフトウェアの品質とセキュリティには直接的な相関関係がある。品質の悪いソフトウェアは、セキュリティも不十分なソフトウェアである[19]

SASTの弱点

[編集]

開発者はSASTツールの使用に肯定的であるにもかかわらず、その採用にはさまざまな課題がある[4]。例として、これらのツールによって生成される長い出力にもかかわらず、ユーザビリティが欠けている可能性があることを示す研究がある[20]

ソフトウェア開発におけるアジャイルプロセスでは、このフレームワークを使用する開発者が機能とデリバリーに重点を置くため、SASTの早期統合により多くのバグが発生する[21]

SASTツールで多数の行のコードをスキャンすると、単一のアプリケーションに対して数百または数千の脆弱性警告が発生する場合がある。これは多くの偽陽性を生成し、調査時間を増加させ、そのようなツールへの信頼を低下させる可能性がある。これは特に、脆弱性のコンテキストをツールが把握できない場合に当てはまる[3]

関連項目

[編集]

脚注

[編集]
  1. ^ Okun, V.; Guthrie, W. F.; Gaucher, H.; Black, P. E. (October 2007). “Effect of static analysis tools on software security: Preliminary investigation”. Proceedings of the 2007 ACM workshop on Quality of protection. ACM. pp. 1–5. doi:10.1145/1314257.1314260. ISBN 978-1-59593-885-5. https://samate.nist.gov/docs/SA_tool_effect_QoP.pdf 
  2. ^ Ayewah, N.; Hovemeyer, D.; Morgenthaler, J.D.; Penix, J.; Pugh, W. (September 2008). “Using static analysis to find bugs”. IEEE Software (IEEE) 25 (5): 22–29. doi:10.1109/MS.2008.130. 
  3. ^ a b Johnson, Brittany; Song, Yooki; Murphy-Hill, Emerson; Bowdidge, Robert (May 2013). “Why don't software developers use static analysis tools to find bugs?”. 2013 35th International Conference on Software Engineering (ICSE). pp. 672–681. doi:10.1109/ICSE.2013.6606613. ISBN 978-1-4673-3076-3 
  4. ^ a b Oyetoyan, Tosin Daniel; Milosheska, Bisera; Grini, Mari (May 2018). “Myths and Facts About Static Application Security Testing Tools: An Action Research at Telenor Digital”. International Conference on Agile Software Development. (Springer): 86–103. 
  5. ^ a b Parizi, R. M.; Qian, K.; Shahriar, H.; Wu, F.; Tao, L. (July 2018). “Benchmark Requirements for Assessing Software Security Vulnerability Testing Tools”. 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC). IEEE. pp. 825–826. doi:10.1109/COMPSAC.2018.00139. ISBN 978-1-5386-2666-5 
  6. ^ Chess, B.; McGraw, G. (December 2004). “Static analysis for security”. IEEE Security & Privacy (IEEE) 2 (6): 76–79. doi:10.1109/MSP.2004.111. 
  7. ^ Chess, B.; McGraw, G. (October 2004). “Risk Analysis in Software Design”. IEEE Security & Privacy (IEEE) 2 (4): 76–84. doi:10.1109/MSP.2004.55. 
  8. ^ Yamaguchi, Fabian; Lottmann, Markus; Rieck, Konrad (December 2012). “Generalized vulnerability extrapolation using abstract syntax trees”. Proceedings of the 28th Annual Computer Security Applications Conference. 2. IEEE. pp. 359–368. doi:10.1145/2420950.2421003. ISBN 9781450313124 
  9. ^ Booch, Grady; Kozaczynski, Wojtek (September 1998). “Component-Based Software Engineering”. IEEE Software 15 (5): 34–36. doi:10.1109/MS.1998.714621. 
  10. ^ Mezo, Peter; Jain, Radhika (December 2006). “Agile Software Development: Adaptive Systems Principles and Best Practices”. Information Systems Management 23 (3): 19–30. doi:10.1201/1078.10580530/46108.23.3.20060601/93704.3. 
  11. ^ Livshits, V.B.; Lam, M.S. (May 2006). “Finding Security Vulnerabilities in Java Applications with Static Analysis”. USENIX Security Symposium 14: 18. 
  12. ^ Jovanovic, N.; Kruegel, C.; Kirda, E. (May 2006). “Pixy: A static analysis tool for detecting Web application vulnerabilities”. 2006 IEEE Symposium on Security and Privacy (S&P'06). IEEE. pp. 359–368. doi:10.1109/SP.2006.29. ISBN 0-7695-2574-1 
  13. ^ 2016 Data Breach Investigations Report”. Verizon (2016年). 2026年1月20日閲覧。
  14. ^ Clearswift report: 40 percent of firms expect a data breach in the Next Year”. Endeavor Business Media (2015年11月20日). 2026年1月20日閲覧。
  15. ^ The Ticking Time Bomb: 40% of Firms Expect an Insider Data Breach in the Next 12 Months”. Fortra (2015年11月18日). 2026年1月20日閲覧。
  16. ^ Xianyong, Meng; Qian, Kai; Lo, Dan; Bhattacharya, Prabir; Wu, Fan (June 2018). “Secure Mobile Software Development with Vulnerability Detectors in Static Code Analysis”. 2018 International Symposium on Networks, Computers and Communications (ISNCC). pp. 1–4. doi:10.1109/ISNCC.2018.8531071. ISBN 978-1-5386-3779-1 
  17. ^ Hossain, Shahadat (October 2018). “Rework and Reuse Effects in Software Economy”. Global Journal of Computer Science and Technology 18 (C4): 35–50. https://computerresearch.org/index.php/computer/article/view/1780. 
  18. ^ Okun, V.; Guthrie, W. F.; Gaucher, H.; Black, P. E. (October 2007). “Effect of static analysis tools on software security: Preliminary investigation”. Proceedings of the 2007 ACM workshop on Quality of protection. ACM. pp. 1–5. doi:10.1145/1314257.1314260. ISBN 978-1-59593-885-5. https://samate.nist.gov/docs/SA_tool_effect_QoP.pdf 
  19. ^ Siavvas, M.; Tsoukalas, D.; Janković, M.; Kehagias, D.; Chatzigeorgiou, A.; Tzovaras, D.; Aničić, N.; Gelenbe, E. (August 2019). “An Empirical Evaluation of the Relationship between Technical Debt and Software Security”. In Konjović, Z.; Zdravković, M.; Trajanović, M. (eds.). International Conference on Information Society and Technology 2019 Proceedings (Data set). Vol. 1. pp. 199–203. doi:10.5281/zenodo.3374712.
  20. ^ Tahaei, Mohammad; Vaniea, Kami; Beznosov, Konstantin (Kosta); Wolters, Maria K (6 May 2021). “Security Notifications in Static Analysis Tools: Developers' Attitudes, Comprehension, and Ability to Act on Them”. Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems. pp. 1–17. doi:10.1145/3411764.3445616. ISBN 9781450380966. https://www.research.ed.ac.uk/en/publications/e1bc04ef-ae83-4e82-8ade-ca572bc503d2 
  21. ^ Arreaza, Gustavo Jose Nieves (June 2019). “Methodology for Developing Secure Apps in the Clouds. (MDSAC) for IEEECS Confererences”. 2019 6th IEEE International Conference on Cyber Security and Cloud Computing (CSCloud)/ 2019 5th IEEE International Conference on Edge Computing and Scalable Cloud (EdgeCom). IEEE. pp. 102–106. doi:10.1109/CSCloud/EdgeCom.2019.00-11. ISBN 978-1-7281-1661-7