ニュース

Javaサービスの90%が重大な脆弱性を抱えている――Datadog調査

 Datadog Japan合同会社は4日、DevSecOpsの現状に関する説明会を開催した。これは、今年の2月から4月の2ヶ月間、Datadogがアプリケーションやコンテナイメージ、クラウド環境を分析し、DevSecOpsの中核となるベストプラクティスを調査した内容に基づいている。

 説明にあたったDatadog Japan シニアデベロッパーアドボケイトの萩野たいじ氏は、「安全なコードを迅速かつ大規模に配布することは、ソフトウェア業界全体の課題だ。その課題について、独自の調査と仮説から、原因と解決策を推察した」としている。

Datadog Japan シニアデベロッパーアドボケイト 萩野たいじ氏

脆弱性の影響を最も受けている言語はJava

 萩野氏が最初に説明したのは、プログラミング言語別で見た脆弱性が含まれるサービスだ。クリティカルな脆弱性や高リスクの脆弱性が含まれるサービスの割合を言語別で分析した結果、サードパーティの脆弱性の影響を最も受けているのはJavaのサービスであることがわかった。

 「Javaサービスの90%が、サードパーティライブラリによってもたらされる、1つ以上の重大または高重大度の脆弱性の影響を受けている。他言語での平均値は47%だった」と、圧倒的にJavaに含まれる脆弱性の割合が高いと萩野氏は指摘した。

 また、Javaサービスは、攻撃者が実際に悪用している脆弱性の影響も受けやすいという。攻撃者が悪用している脆弱性のリストに記載されている脆弱性を持つJavaサービスは55%と、他言語サービスの7%と比べて大幅に高いことがわかる。

 Javaサービスにおける脆弱性の原因は、間接的な依存関係から発生しているケースが63%だという。間接的な依存関係は可視化しにくく、脆弱性の発見も困難なことから、「アプリケーションの脆弱性をスキャンする際には、直接的な依存関係だけでなく、依存関係ツリー全体を考慮することが重要だ。また、アプリケーションに追加された新しい依存関係を適切に管理し、関係が頻繁にアップグレードされているかを確認すること。OpenSSF Scorecardなどのフレームワークを活用すれば、オープンソースライブラリの健全性を迅速に評価する際に役立つ」と萩野氏は述べた。

Javaが最も脆弱性の影響を受けている

無害な攻撃や優先度の低い脆弱性も

 今回の調査でさまざまな言語のアプリケーションに対する攻撃を分析した結果、攻撃全体のうち、自動化されたセキュリティスキャナーからの攻撃が大多数を占めていることが判明した。自動化されたセキュリティスキャナーとは、オープンソースツールを用いてインターネット全体をスキャンし、脆弱なシステムを発見するものだ。

 しかし、萩野氏によると、セキュリティスキャナーによる攻撃の大半は無害で、「実際に脆弱性を悪用できたものはわずか0.0065%だった」という。

 また、過去の学術研究では、攻撃者によって実際に悪用される脆弱性は全体の約5%にすぎないこともわかっており、「特定された脆弱性のうち、優先する価値があるのはごく一部だ」と萩野氏は述べている。

セキュリティスキャナーによる攻撃の大半は無害

小規模なコンテナイメージには脆弱性が少ない

 Datadogは、数千におよぶコンテナイメージも分析した。その結果、コンテナイメージの規模が小さいほどサードパーティのライブラリも少なく、脆弱性も比例して少ないことがわかったという。

 「100MB未満のコンテナイメージに含まれていた高度な脆弱性またはクリティカルな脆弱性は平均4.4個、250~500MBのコンテナイメージには平均42.2個、500MB以上のコンテナイメージには約80個の脆弱性が含まれていた」と萩野氏は説明した。

小規模なコンテナイメージには脆弱性が少ない

クラウドプロバイダーによって異なるIaCの採用率

 コードとしてのインフラストラクチャ(IaC)は、クラウドの本番環境を保護する上で重要な手法とされている。それは、本番環境における人間の操作権限が制限されることや、すべての変更がピアレビューされること、また本番環境に到達する前に問題が特定できるためだ。

 そのIaCの採用率について萩野氏は、「クラウドプロバイダーによって異なる」とした。AWSでは71%以上の企業が、Terraform、CloudFormation、Pulumiなど、少なくとも1つの一般的なIaCテクノロジを利用しており、中でもTerraformの利用率が最も高いという。一方、Google CloudにおけるIaCの利用率は55%だった。

AWSで採用されているIaC

永続的な認証情報の危険性

 クラウド環境におけるデータ漏えいの一般的な原因として、萩野氏は有効期間が長い認証情報の漏えいを挙げる。「CI/CDパイプラインは高い権限を持つため、認証情報漏えいのリスクが増加する。有効期間が短い認証情報の使用が推奨されるが、多くの組織は依然として有効期間が長い認証情報を使用している」と萩野氏。

 特に、GitHub Actionsを使用する組織のうち、有効期間が短い認証情報とOpenID Connect(OIDC)に基づくキーレス認証を運用している組織は37%のみで、42%がGitHub Actionsパイプラインの認証に有効期間の長いIAMユーザーのみを使用しているという。

高い永続的な認証情報の利用率

 最後に萩野氏は、「アプリケーションは実装方法だけでなく、運用環境でのデプロイと実行方法でも安全であるべき。最新のDevOpsのベストプラクティスを採用し、セキュリティを強化してもらいたい。また、セキュリティのノイズに惑わされないよう、正しいコンテキストと優先順位も不可欠だ」と述べ、「セキュリティを向上するための自動化にはまだ改善の余地がある。DevSecOpsの適用拡大が世界的に必要だ」とした。