Webアプリの“危険なOSSライブラリ”を見抜く「SCA」とは?これで分かる「DevSecOps」の課題と解決【第3回】

安全なWebアプリケーション開発を推進する「DevSecOps」の実践には、「SCA」(ソフトウェア構成分析)が欠かせない。その理由とは。そもそもSCAとは何なのか。

2023年09月27日 05時00分 公開
[田中一成]

 近年、「DevOps」(開発と運用の融合)や「アジャイル」など開発効率を向上させる開発手法が台頭しました。DevOpsにセキュリティを取り入れた「DevSecOps」も登場しています。それに伴って、Webアプリケーション開発におけるオープンソースソフトウェア(OSS)ライブラリの利用が広がっています。ただしOSSライブラリには、さまざまな脆弱(ぜいじゃく)性が存在することも事実です。

 私が国内法人の代表を務めるContrast Securityは2021年に、ユーザー企業がWebアプリケーションに利用中のOSSライブラリに関する調査を実施しました。その結果をまとめたレポートが「2021 State of Open-Source Security」です。それによると、Contrast Securityのセキュリティサービスの保護下にあるWebアプリケーションの、およそ90%がOSSライブラリを利用していました。

 Palo Alto Networksの調査チームUnit 42は、非営利団体MITREが脆弱性に割り当てる共通脆弱性識別子(CVE:Common Vulnerabilities and Exposures)を分析しました。この分析においてUnit 42は、2020年8月時点で採番(公開、割り当て)済みのCVEを、採番年ごとにカウントしました(図1)。CVEの採番数は増加傾向にあり、2017年から2019年には年間1万4000件以上に上っています。アプリケーションセキュリティベンダーWhite Source(Mend.ioの名称で事業展開)の調査によると、脆弱性の増加傾向はOSSにも現れており、2020年には9658件の脆弱性がOSSで見つかっています。

図1 図1 脆弱性悪用プログラム(エクスプロイト)のデータベース「Exploit Database」に登録されたエクスプロイトに対応するCVEの集計。縦軸はCVEの個数、横軸はCVEが公開済みまたは登録済みになった年を表す(Palo Alto Networksのブログエントリを基に編集部制作)《クリックで拡大》

 Webアプリケーションにおいて利用するOSSライブラリの種類が増えると、それだけ脆弱性を抱える可能性が高まりやすくなります。OSSライブラリの積極的な利用が、企業にとって大きな脅威になり得るのです。

 DevOpsやアジャイルといった手法に基づくWebアプリケーション開発を安全に進めるには、ソースコードだけではなくOSSライブラリについても、存在する脆弱性の検出や対処を効率化しなければなりません。そこで視野に入るのが「SCA」(ソフトウェア構成分析)の活用です。

そもそも「SCA」とは何か?

 SCAは、Webアプリケーションが利用しているOSSライブラリをスキャンによってリストアップし、脆弱性を調査するツールです。見つかった脆弱性のCVEを特定し、脆弱性の深刻度に基づいて対策の優先順位を付けます。従来、開発部門はその分析結果を調査し、必要な対策を施すという流れでSCAを活用してきました。

図2 図2 従来のSCAを使った脆弱性対策の概要。右側は、脆弱性が存在するOSSのファイル名とバージョン名をリストアップした画面の例(Contrast Security資料を基に編集部)《クリックで拡大》

 Webアプリケーションが脆弱なOSSライブラリを「組み込んでいるかどうか」を判断するのに、SCAは役立ちます。ただし「実際に利用しているかどうか」を調べるのは、極めて困難です。OSSライブラリが提供する関数やクラス(データと処理をまとめたもの)の呼び出しを含め、Webアプリケーションのソースコードにおける処理の流れを目視で追わなければいけないからです。結果として開発部門は、スケジュールに間に合わせるために、脆弱性を十分に検証できないままWebアプリケーションをリリースせざるを得なくなる可能性があります。

依存関係が生む脆弱性検出の落とし穴

 SCAはOSSライブラリから複数のクラスを検出します。ただしWebアプリケーションがそれらのクラス全てを利用していることは、ほとんどありません。

図3 図3 ライブラリの使用状況の例。Webアプリケーションが使用しているライブラリは黄色、使用していないライブラリはグレーの長方形となっている。赤枠は脆弱性が見つかったライブラリを指す。矢印は根本から先端に向けて、ソースコードおよびライブラリが別のライブラリを呼び出すことを表す。「ソースコード」から伸びる矢印を見ると、Webアプリケーションが全てのライブラリの全てのクラスを使用しているとは限らないことが分かる(Contrast Security資料を元に編集部作成)《クリックで拡大》

 例えば図3の状況を考えてみましょう。ソースコードによると、WebアプリケーションはライブラリAとライブラリBを呼び出しています。ライブラリAはライブラリCを呼び出し、さらにライブラリCはライブラリFを呼び出す仕組みです。このように、あるライブラリが別のライブラリを必要とする関係を「依存関係」と呼びます。

 ライブラリBにも他のライブラリとの依存関係があり、一部の機能にライブラリDやライブラリEを必要とします。ただし、このWebアプリケーションはライブラリBの全ての機能を使っているのではなく、ライブラリDやライブラリEを呼び出す必要のない機能だけを使っています。つまりライブラリDやライブラリEの脆弱性は、このWebアプリケーションに影響を及ぼさないことになります。

脆弱性修正を効率化する鍵は「優先順位付け」

 2021 State of Open-Source Securityは、依存関係を含めて1つのWebアプリケーションにひも付くOSSライブラリのうち、Webアプリケーションが実際に呼び出すOSSライブラリの割合を調査した結果をまとめています。その結果によると、調査対象となったWebアプリケーションにひも付くOSSライブラリ(平均118件)のうち、Webアプリケーションが実際に呼び出すOSSライブラリは半数程度でした。つまり実際には半数程度のOSSライブラリを呼び出していないことになります。呼び出さないOSSライブラリの脆弱性対処に時間を掛けても無駄足になることは、想像に難くありません。

 Webアプリケーションが実際に呼び出しているOSSライブラリのみをリストアップし、そのOSSライブラリを優先的にバージョンアップして脆弱性を排除できれば、脆弱性対処を効率化できます。最新のSCAは、エージェントソフトウェアを利用し、Webアプリケーションのソースコードを解析してOSSライブラリを確認する機能を備え始めています。この機能により、SCAは実際に呼び出しているOSSライブラリのみをリストアップし、そのライブラリを優先的にアップデートすることが可能になります。2021年に脆弱性が見つかったことで、広範囲に影響を及ぼしたライブラリ(プログラム部品群)「Apache Log4j」も検出可能です。脆弱性検出ツール「IAST」(インタラクティブアプリケーションセキュリティテスト)も、同様の機能を備えています(IASTの詳細は連載第2回「脆弱性検出ツール『IAST』が『DevSecOps』に欠かせないのはなぜか?」を参照)。


 第4回は、開発部門による本番環境の管理を実現する「RASP」(ランタイムアプリケーションセルフプロテクション)を紹介します。

著者紹介

田中一成(たなか・かずなり) Contrast Security Japan

田中氏

国内システムインテグレーターや外資系企業で営業を経験した後、ArcSight(現Micro Focus)、41st Parameter(現Experian)、SundaySkyなど、主に米国スタートアップのカントリーマネジャーとして6社の日本オフィスを立ち上げ、成長させた。IT業界で約30年の経験があり、ハードウェア、ソフトウェア、クラウド、セキュリティ、データベース、デジタルマーケティングなどさまざまな分野に精通している。Contrast Security日本オフィスの立ち上げに尽力。


ITmedia マーケティング新着記事

news060.jpg

Z世代が考える「日本が最も力を入れて取り組むべき課題」1位は「ジェンダー平等」――SHIBUYA109 lab.調査
SDGsで挙げられている17の目標のうち、Z世代が考える「日本が最も力を入れて取り組むべき...

news061.png

高齢男性はレジ待ちが苦手、女性は待たないためにアプリを活用――アイリッジ調査
実店舗を持つ企業が「アプリでどのようなユーザー体験を提供すべきか」を考えるヒントが...

news193.jpg

IASがブランドセーフティーの計測を拡張 誤報に関するレポートを追加
IASは、ブランドセーフティーと適合性の計測ソリューションを拡張し、誤報とともに広告が...