In this article
オープンソースの脆弱性スキャナーを活用すべき7つの理由

サイバー犯罪は、大企業から技術的な専門知識が限られている中小企業まで、あらゆる企業にとって重要な課題です。従来、脅威への対応は専任のセキュリティチームの役割でした。しかし、DevSecOpsなどの現代的なアプローチでは、開発、セキュリティ、運用の各チームがセキュリティに共同で責任を負うと考えられています。
そのリスクは現実のものです。サイバー犯罪による損失は、2024年だけで世界全体で推定9.5兆米ドルに達しました。開発者にとって特に懸念される分野の1つがオープンソースソフトウェアです。ソフトウェア開発におけるオープンソースコンポーネントの利用は広がっており、2016年から2020年にかけて259%増加しています(Synopsys)。
オープンソースソフトウェアは、その定義上、公開されていて誰もが閲覧できます。世界中の開発者コミュニティが、オープンソースパッケージで発見した脆弱性を監視し、情報を共有できますが、悪意のある攻撃者も同じ情報を入手できます。そのため、オープンソースパッケージの既知の脆弱性には、アプリケーション開発の初期段階から対処する必要があります。
企業がオープンソースに投資してきた理由
開発者は、アプリケーション開発を簡素化し、スピードアップするためにオープンソースコードを利用します。このコラボレーションによって、基本的な機能をゼロから作り直す「車輪の再発明」をするよりも、開発とデプロイのプロセスを迅速かつ低コストで進められるようになりました。
開発者は、ビジネス要件を満たすために、アプリケーションでオープンソースのライブラリやフレームワークを活用します。これにより、標準的な機能の開発に多くの時間やリソースをかけずに、ビジネスニーズに応える便利なプログラムを作成できます。しかし、オープンソースコンポーネントを取り入れると、脆弱性を含む依存関係が加わり、アプリケーションやネットワークが攻撃にさらされる可能性があります。
オープンソースソフトウェアを利用するリスク
オープンソースのフレームワークやライブラリは、堅牢なアプリケーションを迅速に作成するための有効なツールですが、考慮すべきリスクもあります。
オープンソースコードの開発者やメンテナーが不明な場合がある
オープンソースソフトウェアには、迅速な開発と無料のパッケージというメリットがありますが、コードの作者が不明なことも少なくありません。セキュアコーディングの知識や実践状況は、優れている場合もあれば、まったく不十分な場合もあります。一見しただけでは分からないため、オープンソースライブラリの利用には一定のオープンソースセキュリティリスクが伴います。また、開発者にはコードの完全性を維持する責任がありません。そのため、導入時に安全であっても、後に脆弱性が生じる可能性があります。
セキュリティのベストプラクティスが不十分
オープンソース技術を採用すると、セキュリティのベストプラクティスに従っていないコードを利用してしまうことがあります。その結果、アプリケーションやビジネスが次のような潜在的な脆弱性にさらされます。
マルウェアの注入
分散型サービス拒否(DDoS)攻撃
機密データの漏えい
コーディング上の脆弱性
経験豊富な開発者なら知っている一般的な脆弱性でも、対処されずに残されているオープンソースプロジェクトが数多くあります。たとえば、次のようなものです。
SQLインジェクション — SQLスクリプトの改変を許すコードにより、攻撃者がパラメーターを変更し、データベース内の情報を操作または侵害できる脆弱性です。
クロスサイトスクリプティング(XSS) — 侵害されたWebページに攻撃者がクライアント側スクリプトを注入し、そのページを閲覧した他のユーザーのブラウザーで実行させます。Cookieの窃取や機密データの漏えい、既存Webサイトの改ざんなどにつながる可能性があります。
安全でない直接オブジェクト参照(IDOR) — ユーザーが入力した値を使って、コードがオブジェクトを直接参照するアクセス制御の脆弱性です。URLパラメーターとして指定された名前やIDが使われる場合があり、意図せずデータが公開されたり、サイトへの別の攻撃に利用できる情報をハッカーに与えたりする可能性があります。
クロスサイトリクエストフォージェリ(CSRF) — エンドユーザーが、認証済みのWebリクエストを意図せず実行させられたり、だまされて実行させられたりする脆弱性です。攻撃者は、ユーザーに自分が選んだ操作を実行させます。これにより、サイバー犯罪者がプロフィールやユーザーアカウントを変更または作成し、さらなる攻撃に利用できるようになります。
セキュリティの設定ミス — 多くの場合、デフォルト設定の利用が原因で発生する脆弱性です。開発者がデフォルト設定の存在を知らないこともありますが、攻撃者がシステムにアクセスし、重要なユーザー情報やアプリケーション固有のデータを取得できる可能性があります。これにより、特定のテクノロジーを侵害する将来の攻撃につながるおそれがあります。
ユーザーやソフトウェアプロバイダーは、継続的にセキュリティ上の欠陥を発見しています。人気のソーシャルメディアサイトでCSRFの脆弱性が検出された事例もあります。この脆弱性を悪用した攻撃が成功していれば、数百万人のユーザーに影響が及んだ可能性があります。幸い、プロバイダーは問題の報告を受けて迅速に解決しました。
これらは、オープンソースコードに潜み、非倫理的なハッカーに発見されて悪用されるのを待つ脆弱性のほんの一例にすぎません。
多くの開発者はセキュアコーディングの実践をよく理解していますが、すべての実践が守られているとは限らず、脆弱性が特定された際に修正される保証もありません。公開されているコードに、何年も脆弱性が残っている場合もあります。
オープンソースの脆弱性スキャナーはどのように機能するのか?
オープンソースの脆弱性スキャナーは、アプリケーション内のオープンソースコンポーネントや依存関係を特定し、脆弱性データベースと照合します。初期の脆弱性スキャナーは本番環境のソフトウェアをテストしていましたが、クラウドネイティブアプリケーションの登場によって、この方法は時代遅れになりました。クラウドネイティブアプリケーションの分散性と規模、そして現代のDevOpsの迅速な開発ペースに対応するには、SDLC全体で脆弱性を検出し、修正する新たなセキュリティアプローチが必要です。
ソフトウェア構成分析(SCA)
ソフトウェアにオープンソースパッケージを取り入れる方法は、可視性に大きな課題をもたらします。開発者が導入するオープンソースパッケージには、ほかのパッケージが含まれていることもよくあります。こうしたネストされた依存関係(推移的依存関係)は、何層にも及ぶ場合があります。SCAの手法とツールを使えば、こうした依存関係を追跡し、アプリケーションでオープンソースコンポーネントがどのように利用されているかを詳しく把握できます。SCAツールは、アプリケーションで使用される依存関係をすべて可視化し、存在する脆弱性を検出して、優先順位付けと修正の手順を適用できます。
パッケージのスキャン
パッケージをスキャンすることで、オープンソースの脆弱性スキャナーは、パッケージが持つ依存関係の数や経過年数、メンテナンス状況など、信頼性を評価するための情報を提供できます。
オープンソースライセンスへの準拠を確認
オープンソースパッケージではコードの利用、共有、変更が認められていますが、オープンソースライセンスの種類によって法的条件や制限も適用されます。たとえば、パッケージ内のコードを変更できるか、変更内容を公開する必要があるかなどが、ライセンスで定められている場合があります。オープンソースの脆弱性スキャナーを使えば、プロジェクトで使用しているオープンソースライセンスを特定し、その条件への準拠を維持できるため、ソフトウェアの法的な確認を簡素化できます。
新たな脆弱性を監視
脆弱性は継続的に発見され、公開脆弱性データベースに登録されています。オープンソースコンポーネントを監視し、脆弱性がないか確認することが重要です。脆弱性が公開されると、非倫理的なハッカーがそれを利用してネットワークやデータを侵害する可能性があるからです。
オープンソースの脆弱性スキャナーは、オープンソースコンポーネントを自動的に監視し、新たな脆弱性がアプリケーションに影響を及ぼした際に開発者へ通知できます。たとえば、Snykのmonitorコマンドを使うと、プロジェクトの脆弱性やライセンスの問題を継続的に追跡できます。
オープンソースパッケージの健全性を測定
オープンソースパッケージごとにリスクの特性は異なります。オープンソースの脆弱性スキャナーはさまざまなパッケージの健全性を分析し、それぞれに関連するリスクを開発者が把握できるようにします。たとえばSnyk Advisorは、週間ダウンロード数、コミット頻度で測定したメンテナンス活動の水準、脆弱性の数、パッケージのコントリビューター数に基づいて、パッケージの健全性を示す指標を算出します。
オープンソースの脆弱性スキャナーを誰もが使うべき7つの理由
オープンソースの脆弱性スキャナーは、既知の脆弱性の発見や修正、ドキュメント、ライセンス、セキュリティなどに関して、アプリケーション開発者やセキュリティチームに多くのメリットをもたらします。
1. 既知の脆弱性を発見
コードライブラリの脆弱性が発見された際にスキャンを行えば、該当するライブラリが自社の技術スタックに含まれているかを簡単に確認できます。これにより、露出への対処を迅速化できます。
2. 脆弱性を修正
脆弱性を特定したら、スキャンによって問題が存在する箇所をすべて迅速に見つけられます。これにより、速やかな対応とセキュリティ問題の確実な修正が可能になり、攻撃者を締め出せます。
3. オープンソースパッケージを記録
オープンソースコードをスキャンすると、アプリケーションに含まれるオープンソースのフレームワークやライブラリをすばやく把握できます。コードの使用箇所やバージョンなども追跡できます。また、オープンソースコンポーネント間の依存関係も明らかになります。
4. ライセンスへの準拠を徹底
オープンソースコードは無料で利用できる場合でも、ライセンスが必要なことがあります。脆弱性スキャンツールを使えば、オープンソースモジュールを明らかにし、法的な影響を及ぼす可能性があるライセンス要件への準拠を確認できます。
5. 開発の初期段階からセキュリティを実装
オープンソースパッケージの標準的な利用方法としてスキャナーを導入すれば、管理者と開発者の双方にセキュリティをもたらします。開発プロセスの早い段階で脆弱性を検出することで、アプリケーションが侵害されてからではなく、最初から安全なオープンソースパッケージを使用できます。
6. オープンソースコミュニティ
脆弱性スキャナーは、新たな脆弱性を発見するために、公開脆弱性データベース、脅威インテリジェンスシステム、コミュニティの情報源など、さまざまな情報源を利用します。Snyk Open Source Vulnerability Databaseは、GitHubやソーシャルメディアなどの情報源を活用して脆弱性を発見し、その影響を監視します。
7. オープンソースパッケージのメンテナンス
オープンソースパッケージを利用すると、そのメンテナンスをボランティアチーム、場合によっては個人1人に事実上委ねることになります。そのため、新たな脆弱性がないかアプリケーションを継続的に監視することが重要です。
脆弱性が特定されたら、次のステップは、影響を最小限に抑えながらアップグレードまたはパッチを適用して修正することです。Snykは、脆弱性の修正に必要な最小限のアップグレードを自動的に特定するか、パッケージのメンテナーと協力して独自のパッチを開発します。
オープンソースの脆弱性スキャナーを活用するメリット
多くの企業が、社内で開発したアプリケーションを強化するために、オープンソースコンポーネント、オペレーティングシステム、コンテナを利用しています。
アプリケーションの開発やデプロイでオープンソースパッケージをどのように利用しているかにかかわらず、オープンソースの機能を利用するすべての企業が、オープンソースの脆弱性スキャナーを導入すべきです。
オープンソースソフトウェアのスキャンツールを使うと、ハッカーやサイバー犯罪者に悪用される前に、開発チームとセキュリティチームがセキュリティ上の問題を発見できます。
セキュリティのベストプラクティスでは、企業がオープンソースコンポーネントの完全性に責任を持つことが求められます。未知の脆弱性があると、アプリケーションの改ざんやサービス拒否攻撃、データ窃取に不必要にさらされることになります。
組織は、アプリケーションの開発と配布において、オープンソースの脆弱性スキャンを標準的な手順として導入すべきです。これにより、サイバー攻撃から継続的に保護し、重要な情報を守ることができます。
オープンソーススキャンツールの5つの種類
オープンソースコンポーネントは、開発者や組織が直面するアプリケーションセキュリティ上の最大のリスクの一つです。実際、OWASPは、脆弱で古くなったコンポーネントをOWASP Top 10の脆弱性の第6位に挙げています。
こうしたリスクに対処するため、オープンソース向けにさまざまな種類のツールが開発されています。
1. 静的イメージ脆弱性スキャナー
オープンソースのパッケージやライブラリに潜む脆弱性を検出します。多くの場合、社内の専門家がリスクを個別に分析し、開発者が使用するコンポーネントを選択する際に役立つ情報を提供します。
2. コンテナセキュリティツール
コンテナイメージに潜む脆弱性を検出できます。イメージを静的にスキャンするほか、CI/CDツールと連携することもできます。
3. ペネトレーションテストツール
脆弱性を自動的に検出し、潜在的な影響を評価するためにその悪用を試みることができます。
4. 依存関係管理ツール
アプリケーションとその依存ライブラリをスキャンし、脆弱性を検出できます。OWASPのDependency-CheckとDependency-Trackがその例です。
5. 本番環境テストツール
アプリケーションを本番環境で継続的にスキャンし、XSSやSQLインジェクションなどの脆弱性がないかを確認します。
IDEからオープンソースコンポーネントをスキャン
オープンソーススキャンツールにはそれぞれ用途がありますが、DevSecOpsなどの最新のセキュリティアプローチでは、開発者が自ら作成したコードに責任を持つことがますます重視されています。アプリケーションの外部や本番環境でセキュリティテストを実施するのではなく、新たなセキュリティパラダイムでは、SDLC全体を通じてセキュリティテストを組み込みます。
現在では、IDE内でオープンソースコンポーネントをスキャンできるDevSecOpsツールがあり、コードの作成中からアプリケーションにセキュリティを組み込めます。手動チェックは迅速で効率的なデリバリーの妨げになるため、セキュリティチェックの自動化がこれらのツールの重要な役割です。
これには、アクセス制御、暗号化、ゲートウェイセキュリティに関するポリシーの自動監査と適用が含まれます。静的解析ツールはビルド時に自動実行し、パイプラインに取り込むオープンソースコンポーネントは、SCAを使って脆弱性やライセンス上の問題がないかスキャンする必要があります。
これらのツールは開発者にリアルタイムの分析情報を提供します。コーディング中に脆弱性を検出し、開発の妨げを取り除くことで、後から脆弱性の修正に追われる無駄な時間を減らせます。

Snykによるオープンソースの脆弱性スキャン
オープンソースの脆弱性スキャンは、Snykが提供するクラウドネイティブ開発者向けセキュリティツール群の重要な要素です。
Snyk Open Sourceは、開発者向けツールやワークフロー、CI/CDパイプラインに統合できるSCAツールです。依存関係の脆弱性を自動検出し、IDEまたはCLIで通知します。また、マージ前にリポジトリから直接コードをスキャンし、本番環境のアプリケーションを監視して、新たな脆弱性や既知の脆弱性にさらされていないかを確認します。依存関係ツリーの表示により、脆弱性が持ち込まれる依存関係の経路を確認できます。リスクと悪用可能性のデータに基づいて脆弱性を分析し、Snykの専任リサーチチームがアラートを調査して誤検知を最小限に抑えます。これにより、実行時にリスクにさらされる可能性が最も高い脆弱性の修正に集中できます。
Snyk Website Scannerは、オープンソースの脆弱性に関する専門家が精選したインテリジェンスを含む、Snyk独自の脆弱性データベースを活用しています。ほかの開発ツールと連携して脆弱性を特定し、修正方法や対処に役立つ情報を提供します。
Snyk Containerはコンテナイメージをスキャンし、開発者がコンテナの問題をすばやく検出して修正できるよう支援します。コンテナ内で実行されるソースコードにアクセスできない場合でも、脆弱性への対処は重要です。Snykはコンテナのスキャン中に、オープンソースの依存関係に潜む脆弱性を検出し、監視できます。
Snyk Open Source Advisorは、セキュリティ、ライセンス、その他の指標に基づいてオープンソースパッケージを比較するのに役立ちます。
アプリケーションを安全に保護
クラウドネイティブアプリケーションの構築に使用するオープンソースの依存関係に潜む脆弱性を、自動で検出、優先順位付けし、修正します。
よくある質問
オープンソースの脆弱性スキャナーでソースコードをスキャンするには?
オープンソースの脆弱性スキャナーを使って、本番コードに含まれる公開GitHubリポジトリ、npmパッケージ、Dockerイメージ由来の既知の脆弱性をチェックできます。また、CI(ビルド)システムの一環として脆弱性を修正することもできます。
オープンソースの脆弱性スキャンとは?
オープンソーススキャンは、依存関係に潜む脆弱性の特定と修正に役立ち、プロジェクトで使用するオープンソースソフトウェアのライセンスへの準拠を支援します。サイバー攻撃から継続的に保護するとともに、アプリケーションがオープンソースコンポーネントや依存関係をどのように使用しているかについて、重要な情報を提供します。
脆弱性評価ツールはどのように機能しますか?
オープンソースの脆弱性評価ツールは、ウイルス対策ソフトウェアがデバイスをスキャンして脅威を見つけるのと同様に、アプリケーションのソースコードに潜む脆弱性を検出します。異なるのは、ウイルス対策ソフトウェアがアプリケーションの境界で機能するのに対し、オープンソースの脆弱性評価ツールは開発ツールやワークフローと連携し、開発中に脆弱性を検出する点です。
最も優れた無料の脆弱性スキャナーは?
Snykは、主要なオープンソース脆弱性スキャナーの一つとして知られています。スケーラブルで直感的なアプローチにより、開発者がアプリケーションセキュリティに責任を持ち、脆弱性の発見と修正に取り組めるよう支援します。Snykは既存のワークフローにシームレスに統合され、専門家が精選した業界最高水準の脆弱性データベースを通じて、修正を自動化します。
オープンソース脆弱性スキャナーでオープンソースパッケージをスキャンすべき理由は?
オープンソースパッケージは、開発者、セキュリティチーム、運用チームが対処すべきアプリケーションセキュリティ上の大きなリスクの一つです。OWASPも、脆弱で古くなったコンポーネントをOWASP Top 10の脆弱性に挙げています。本番環境で悪用される前にオープンソースパッケージの脆弱性を特定、監視、修正できるよう、オープンソース脆弱性スキャナーでスキャンすることが重要です。