オープンソースソフトウェアは、 その 協調的で 公開された 性質から ここ 数年で 広く 利用されるようになり、 開発者だけでなく 悪意ある 攻撃者に とっても 利用しやすい ものとなっています。 攻撃者は、 アプリケーションが 公知の 脆弱性に さらされていると 知れば、 その オープンソースコードを 使って 開発された あらゆる アプリケーションを 攻撃できます。 Log4j や Apache Strutsの 脆弱性の 事例は、 これが 組織に とって 現実的で、 時には 深刻な リスクである ことを 示しています。
この リスクを 軽減するには、 オープンソースの コンポーネントと 依存関係を 管理する ことが 不可欠です。 しかし、 アプリケーションで 使用されている すべての オープンソースコンポーネントを 把握し続けるのは 難しく、 既知の 脆弱性データベースと 照らし合わせて 手作業で 確認するのも 大変です。 さらに、 依存関係が 入れ子に なっていると 問題は 複雑に なります。 開発者が 記述した コードだけでなく、 利用する すべての オープンソースコードと、 その コード内の 依存関係も 保護する 必要が ある ためです。
この 記事では、 オープンソースセキュリティを 定義し、 オープンソースソフトウェアに 伴うリスクを 掘り下げ、 オープンソースソフトウェアを 利用する 際に 組織が 直面する リスクを 軽減する ツールと プロセスを 紹介します。
オープンソースセキュリティとは? オープンソースセキュリティとは、 サードパーティ製ソフトウェアに 伴うリスクや 脆弱性と、 オープンソースソフトウェアを 保護する ために 用いる ツールや プロセスを 指します。 セキュリティツールは、 コード内の オープンソースライブラリや 依存関係の 検出、 アプリケーションでの 各コンポーネントの 利用状況の 分析、 脆弱性が 見つかった 際の アラートや 修復措置の 実行を 自動化できます。 二要素認証などの 対策を 取り入れる ことで、 侵害を 防ぐ ための セキュリティ層を 追加できます。
The Linux Foundationと 共同で、 ソフトウェアサプライチェーンの 複雑さと リスクを 分析します。
オープンソースソフトウェアを利用する4つのメリット ビジネス上の ニーズに より、 ソフトウェアの 開発と リリースの サイクルは 加速しています。 こうした ニーズに 応える ため、 開発者は 社内で 開発した コードを 補完する 手段と して、 オープンソースソフトウェアを ますます 活用しています。
人気の 理由は いくつか あります。
コスト: 開発者は、 パブリックドメインの オープンソースソフトウェアを 自由に 利用、 変更、 共有でき、 世界中の 開発者や ボランティアの コミュニティが その 保守を 担います。 商用の オープンソースソフトウェアパッケージでさえ、 コードを ゼロから 独自開発する コストと 比べて、 比較的 安価です。
使いやすさ: オープンソースソフトウェアは 事前に 構築され、 コードも 公開されている ため、 開発者は 既存の コードを 活用して、 それぞれの ニーズに 対応できます。 その 分、 より 付加価値の 高い 作業に 時間を 割けます。
品質: オープンソースコードは 開発者コミュニティに よって 構築、 利用、 検査される ため、 理論上は バグが 少なく、 脆弱性も すぐに 発見されて 対処されます。
スピード: オープンソースソフトウェアを 活用する ことで、 開発者は 価値ある ビジネスアプリケーションを より 早く 市場に 投入できます。
オープンソースソフトウェアの 導入は、 場合に よっては 2倍以上に 増加しました。 利用可能な ツールが 増え、 市場に 参入する 開発者の スキルも 向上する ことで、 規模の 経済に よる メリットが 開発者にも たらされています。 一方で、 オープン性と 脆弱性、 俊敏性と 品質の 間には トレードオフも あります。
図1:エコシステムごとに年間で新たに作成されたパッケージ
オープンソースソフトウェアを 利用すると いう ことは、 アプリケーションが 依存する コードの 保守を、 直接 知らない 人々に 委ねると いう ことです。 その ため、 潜在的な 悪影響を 最小限に 抑える システムや ツールを 活用する ことが 重要です。
オープンソースソフトウェアのセキュリティリスク3つ ほぼ すべての クラウドネイティブアプリは、 オープンソースコンポーネントに 依存しています。 しかし、 その 保守や セキュリティに 責任を 負う 人が いないため、 オープンソースソフトウェアには 次のような リスクが 伴います。
1. オープンソースの依存関係にある脆弱性 既知の 脆弱性と 未知の 脆弱性の 両方が 含まれます。 既知の 脆弱性には、 共通脆弱性識別子 (CVE)が 割り当てられた もの、 インターネット上で 公開された もの、 公開または 非公開の 脆弱性データベースに 登録された ものが あります。 一般に、 脆弱性の 知名度が 高い ほど、 早急な 対処が 必要です。
脆弱性を 追跡するだけでなく、 アプリケーション内の すべての オープンソース依存関係 を 把握する ことも 重要です。 依存関係が 別の 依存関係に 依存する 「推移的依存関係」は、 セキュリティツールや 監査では 見えに くいため、 特に 注意が 必要です。 ツールや プロセスを 活用し、 アプリケーション内の 依存関係を すべて 特定して 監査しましょう。
2. ライセンスコンプライアンスのリスク 開発者は、 利用する オープンソースパッケージの 各種ソフトウェアライセンス を 理解し、 ライセンスに 準拠して コードを 使う 必要が あります。 その ためには、 ライセンス条項を 把握し、 プロジェクト全体で 遵守する ことが 求められます。 オープンソースライセンス を 遵守するには、 組織が オープンソースコンポーネントの 使用状況を 詳細に 把握する 必要が あります。 また、 ライブラリの 著作権者が ライセンスを 変更する 可能性に 備え、 継続的に ライセンスを 監視する ことも 重要です。
3. 保守されていないオープンソースパッケージ オープンソースパッケージは、 保守されている 場合でも、 通常は 単独の 開発者か 小規模な チームに よって 管理されています。 コミュニティ主導の オープンソースプロジェクトの 開発者には、 ソフトウェアを 保守する 義務が なく、 提供される ソフトウェアは 「現状有姿」です。 その ため、 コードの 安全性を 確保する ために 時間やリソースを 割く 責任は 利用者に あります。 幸い、 Snyk Advisor のように、 この プロセスを 簡略化できる 便利な ツールが あります。 パッケージの 保守状況、 コミュニティ、 セキュリティ態勢、 人気度を 分析し、 利用している オープンソースパッケージの 健全性を 評価するのに 役立ちます。
オープンソースソフトウェアの リスクに ついて、 さらに 詳しく 知りたい方は、 オープンソースソフトウェアに 潜む 5つの リスク を ご覧ください。
オープンソースの現状レポートの主な統計データ データは 知見に つながります。 そこで Snykは、 オープンソースセキュリティに 関する 懸念、 パッケージや コンテナイメージに おける 脆弱性の 傾向、 保守担当者や 組織に よる ソフトウェア保護の 取り組みを 把握する ため、 開発者と セキュリティ担当者を 対象に 調査を 実施しました。 その 結果を 202 0年版オープンソースセキュリティの 現状レポート と して 公開しました。 主な ポイントを ご紹介します。
オープンソースの導入が拡大 市場の ニーズと ビジネスの 実情を 背景に、 オープンソースの エコシステムは 継続的に 拡大しています。 最も 成長したのは npmで、 202 2年3月時点で 前年比33%超の 成長を 遂げ、 パッケージ数は 180万件に 達しました。 オープンソースの 脆弱性の 大半は、 引き続き間接依存関係で 発見されています。
オープンソースセキュリティの文化は開発者中心へ 回答者は、 セキュリティは 部門間で 共有すべき 責任だと 考えている ことを 示しました。
脆弱性の傾向 新たに 発見された 脆弱性は 全体で 20%減少し、 最も 多く 報告されたのは クロスサイトスクリプティング (XSS)でした。
図2:2014年以降に各エコシステムで特定された脆弱性
コンテナとオーケストレーションの課題 latestタグが 付いた 公式ベースイメージには、 既知の 脆弱性が 含まれている ことが よく あります。 特に 公式nodeイメージには、 約700件もの 既知の 脆弱性が 含まれています。 調査参加者の 30%超は、 安全でない 設定が ないか Kubernetesマニフェストを 確認しておらず、 Kubernetesに おける セキュリティ関連の リソース制御要件も 広く 導入されていません。
図3:公式コンテナイメージの脆弱性
2022年のオープンソースセキュリティの傾向 この 1年、 オープンソースセキュリティに 関する 議論では、 サプライチェーンセキュリティ、 責任意識の 変化、 新たに 発見される 脆弱性の 減少、 ボランティアの 保守担当者への 依存、 脆弱性修正への 期待の 変化などが 大きな テーマと なりました。
サプライチェーン攻撃の増加 サードパーティ製ソフトウェアコンポーネントは、 ソフトウェアサプライチェーン を 構成する 一元的な リポジトリに 格納されています。 この サプライチェーンは、 攻撃者に とって 魅力的な 攻撃経路です。 ソフトウェアリポジトリを 変更する ことなく、 開発パイプラインの 脆弱な 箇所を 攻撃できるからです。 たとえば、 依存関係や 名前空間の 混同を 狙った 設計上の 欠陥を 悪用したり、 サードパーティ製コンポーネントを 悪用して ユーザーデータを 侵害し、 内部システムに アクセスしたりできます。
サプライチェーンの どの 部分も 攻撃経路に なり得る ため、 ソースコードから デプロイまでの 全体を 保護する ことが 重要です。 サプライチェーンの 脆弱性は 新しい 問題ではありませんが、 202 1年には 大きな 注目を 集め、 バイデン大統領の サイバーセキュリティに 関する 大統領令 でも 繰り返し取り上げられました。
セキュリティを共有責任とする文化への変化 セキュリティに 責任を 持つのは 誰でしょうか。 開発、 セキュリティ、 運用の 各チームで 責任を 共有する 方向に 変化している ことは、 特に 注目すべき 傾向です。
DevSecOpsへの 移行は 前向きな 変化ですが、 回答者の 47%は 責任共有を 推進する ための 具体的な プログラムを 導入しておらず、 OWASP Software Assurance Maturity Model(SAMM) で 主要な セキュリティプラクティスと される セキュリティチャンピオン プログラムを 導入している 回答者は わずか 15%でした。 責任を 共有する 必要性への 認識と、 実際の 取り組みとの 間には 隔たりが ある ことが わかります。
また、 Puppetの State of DevOpsレポートに よると、 組織の DevOpsプラクティスが 成熟するにつれて、 セキュリティプラクティスも 成熟していく ことが わかっています。
「DevOpsプラクティスが 向上すると、 DevSecOpsも 自然に 実現します。 進化の 進んだ 組織では、 セキュリティを 要件 (51%)、 設計 (61%)、 ビルド (53%)、 テスト (52%)に 組み込む シフトレフトが 進んでいます。 一方、 多くの 中堅組織では、 セキュリティが 関与するのは 本番環境の 定期監査時 (48%) や、 本番環境で 問題が 報告された 時 (45%)です。」
Puppet State of DevOps Report 2021
脆弱性の発見件数が減少 レポートの 意外な 結果の 一つは、 新たに 発見された 脆弱性が 全体で 20%減少した ことです。 オープンソースの エコシステムが 急速に 拡大する 中での 減少であり、 特に 注目に 値します。
一部の エコシステムでは 規模が 2倍以上に なっているにも かかわらず、 オープンソースの 脆弱性の 増加が 鈍化した 明確な 理由は わかっていません。 しかし、 セキュリティに 関する 意識や プラクティス、 ツールの 改善が 成果を 上げている 可能性を 示しています。
今後も この 傾向を 注視していきますが、 セキュリティ対策や プラクティスに 油断するには まだ 早い 段階です。
オープンソースの保守担当者が企業に反発 保守担当者に 資金を 提供せず、 自分たちの ソフトウェアを 使った 製品から 収益を 得る 企業や 組織に 対し、 不満を 募らせる オープンソースの 保守担当者が 増え、 緊張が 高まると 予想されます。
202 1年に オープンソースの 保守担当者400人を 対象に 実施された Tideliftの 調査 では、 46%が 報酬を まったく 受け取っておらず、 保守作業で 年に 1,000ドルを 超える 収入を 得ている 人は わずか 26%でした。 半数以上 (59%)が プロジェクトの 保守を やめた、または やめる ことを 検討したことがあり、 回答者の 約半数が、 保守担当者を 続ける ことへの 最大の 不満と して 金銭的な 報酬が ない ことを 挙げています。
こうした 不満は 現実の 影響を もたらしています。 たとえば 202 2年1月、 広く 使われている npmパッケージcolorsの 保守担当者が、 無限ループを 引き起こし、 パッケージの 利用を すべて 妨げる 問題の ある コードを 導入しました 。
破損した バージョンの colorsは、 9万5,00 0回以上 ダウンロードされました。 colorsは、 コマンドラインの プロンプトを 扱うヘルパー (週約50 万回ダウンロード) や AWS独自の aws-cdk (週約200 万回ダウンロード)など、 ほかの 多くの プロジェクトでも 使われている ため、 大きな 懸念と なっています。
同じ 保守担当者が 管理する 人気npmパッケージfakerでも、 同様の 事態が 発生しました。 保守担当者は、 Fortune 500企業の 多くが 利用する プロジェクトを 今後は 無償で 保守しないと、 課題の 中で 表明しました。
脆弱性の修正にかかる期間は、依然として期待に応えられていません 202 0年オープンソースセキュリティ の 調査では、 回答者の 47%が 脆弱性の 発見から 1週間以内の 修正を 期待し、 18%近くが 1日以内の 修正を 期待していると 回答しました。
図4:オープンソースの脆弱性修正に期待されること
実際には、 スキャン対象プロジェクトで 確認された 脆弱性の うち、 20日未満で 修正されたのは わずか 35%でした。 一方、 36%は 修正に 70日以上 かかり、 平均修正期間は 68日でした。
組織は リスク状況に 関する 期待値を 調整する 必要が あります。 オープンソースの 脆弱性修正に 関する SLAを 把握し、 特に 個人の コントリビューターが コードの 保守を 担当している 場合には 注意を 払う 必要が あります。
オープンソースセキュリティ戦略の主要指標 まずは、 利用している ライブラリの オープンソースセキュリティ指標を 慎重に 追跡する ことから 始めましょう。 次のような 指標を 検討してください。
これらを 把握する ことで、 利用している パッケージの セキュリティ 問題への 対応状況を より 明確に 把握でき、 コンポーネントの 管理 や 脆弱性の 発見・対処に 向けた 戦略を 策定できます。
さらに、 利用している オープンソースパッケージには 先回りして 対応しましょう。 メンテナーに プルリクエストを 送信して、 問題を 認識して もらいます。 オープンソースソフトウェアが ビジネスに 与える 影響を 把握し、 体系的に 管理する ための ビジネスケースを 作成しましょう。
オープンソースセキュリティツールに求めるべき6つの機能 セキュリティツールは、 オープンソースセキュリティ戦略に おいて 重要な 役割を 果たします。 既知の 脆弱性が ないか オープンソースコードを 自動的に 確認し、 脆弱性の 潜在的な 影響や 問題の 修正手順を 把握できる 脆弱性データベースを 参照できます。 また、 コードの 本番環境への デプロイを 継続的に 監視し、 ソフトウェア開発プロセス全体に セキュリティと ライセンス/ガバナンスを 組み込むことができます。
1. パッケージとその脆弱性を包括的に把握 オープンソースコンポーネントと 依存関係の 可視化は、 セキュリティ上の 課題の 一つです。 コンポーネントを 自動で インベントリ化し評価する 手段が あれば、 オープンソース環境を 管理しやすくなります。 CI/CDパイプライン 全体で コンポーネントを 特定し、 脅威レベルを 評価する 自動化機能を 探しましょう。 脆弱な コンポーネントは、 実際に アプリケーションで 使われているでしょうか?
2. ライセンス管理機能 セキュリティツールを 使えば、 開発環境で コードを 記述する 際に、 サードパーティ製コードと 独自コードの 脆弱性およびライセンスリスクを 継続的に 確認でき、 コードリポジトリを スキャンする 必要が なくなります。
3. 自動化 セキュリティツールを 使えば、 脆弱性を 自動で 継続的に 監視・検出できます。 侵害が 発生した 場合は、 被害を トリアージして 適切な 対応を 策定できます。 また、 修正、 リクエスト、 パッチ、 依存関係の アップグレードに 関する ポリシーを 設定し、 こうした プロセスを 自動化できます。
4. 開発者向けツール、ワークフロー、自動化パイプラインとの直接連携 セキュリティを 開発者向けツールや プロセスに 直接 組み込む ことで、 コードを 保護する プロセスを 効率化できます。 プラグインを 使えば、 開発者は CLIや IDEから 直接、 簡単に 修正を 適用できます。 GitHubとの 連携では、 リポジトリ、 プロジェクト、 プルリクエストを テストし、 自動プルリクエストで 修正を 適用できます。
5. 既知のCVEにとどまらない、最新かつ情報が充実したデータベース セキュリティツールは、 既知の 脆弱性を 網羅した 公開データベースにとどまらず、 独自に 精査した データベースを 構築します。 これには、 CVE番号が 付与された 脆弱性、 セキュリティアドバイザリに 掲載された 脆弱性、 課題追跡システムで 特定された 脆弱性、 フォーラムや ソーシャルメディアで 議論された 脆弱性などが 含まれます。
6. プロジェクトの継続的な監視 セキュリティツールは、 本番環境の アプリケーションを 継続的に 監視し、 脆弱性の 悪用を 自動的に 防止できます。 これに より、 アプリケーションが 自らを 効果的に 監視し、 攻撃や ライセンス上の 問題から 自らを 守れるようになります。
オープンソースコンポーネントを 監視する セキュリティツールの 選び方に ついて 詳しくは、 ガイド SCAツールの 選び方 を ご覧ください。
OSSセキュリティにSnyk Open Sourceを活用する6つのメリット Snyk Open Source は、 開発者を 第一に 考えた セキュリティツールです。 アプリケーションセキュリティを ソフトウェア開発パイプライン全体に 組み込む ことで、 オープンソースソフトウェアを 活用した アプリケーションの 開発と デプロイを 可能に しながら、 コードを 脆弱性や ライセンス上の 問題から 保護します。
1. DevSecOpsに対応 Snyk Open Sourceは、 最初の 1行目から SDLC に 組み込めます。 セキュリティと ライセンスの スキャンを できる 限りシームレスに 行えるよう、 連携機能に 多大な 投資を してきました。 これに より、 開発者が アプリケーションの セキュリティに 直接 責任を 持てるようになり、 セキュリティチームや 運用チームとの 生産的な 連携が 可能に なります。
また、 組織が セキュリティを 効果的に 組み込んだ DevOps文化を 醸成できるよう、 テクノロジー、 プロセス、 人材に 焦点を 当てた DevSecOps Hub を 作成しました。 さらに、 サポートポータル、 オンラインおよび対面イベント、 セキュリティチャンピオンと Snykを より 直接的に つなぐ アンバサダー プログラムを 通じて、 開発者と セキュリティリーダーを 結び つける DevSecOps Community も 運営しています。
2. 開発者のワークフローに組み込んで問題を修正 Snyk Open Sourceは、 Atlassian Bitbucket、 Visual Studio Code、 Maven Central、 GitHub、 JetBrainsなどの 開発者向けツールに 組み込めます。 開発者は 使い慣れた ツールから Snykに アクセスし、 脆弱性や ライセンス上の 問題を 見つける ことができます。
3. 誤検知が少ない Snykの セキュリティ専門家チームが データベースを 管理し、 誤検知を 抑えています。 データベース内の 各項目を 分析・テストし、 各脆弱性に CVSSスコアと ベクトルを 割り当て、 新たな 脆弱性を 発見する ための 独自調査にも 投資しています。 また、 該当する 場合は コードスニペットを 含む、 専門家が 作成した 概要も 提供します。
4. 依存関係ツリーの表示 Snykは アプリケーションの パッケージマネージャーを 使用して 依存関係 ツリーを 作成し、 Snykの UIに 表示します。 これに より、 問題の 原因と なっている コンポーネントを 視覚的に 確認し、 推移的依存関係であっても Snykで 対処できます。 また、 開発者の ワークフロー内で ソフトウェア部品表 (SBOM) を 直接 作成する プロセスも 自動化できます。 SBOMを 作成したら、 Snykの SBOM Checker で セキュリティ脆弱性を 確認できます。
5. 修正の自動化 修正方法が 利用可能な 場合、 Snykは CLI、 IDE、 CI/CDパイプライン内で 脆弱性に 対する 修正を 自動的に 提案します。 依存関係に 修正方法が ない 場合も、 修正が 利用可能に なった ときや、 その 脆弱性に 関する 新たな 脆弱性情報が 見つかった ときに 通知できます。
6. ガバナンス/ライセンス Snyk Open Source License Compliance Managementを 利用すると、 自動化された ポリシー適用 と きめ細かな 管理に より、 開発者の ワークフロー内で ライセンスを 管理できます。 コードの 最初の 1行から アプリケーションの デプロイまで、 あらゆる 段階を 監視し、 プロジェクトが ライセンスに 違反しないようにします。
Snykを 使って、 脆弱性を 自動で 検出・優先順位付けし、 無料で 修正しましょう。
Play Video: Snyk Open Source Security Overview
よくある質問 オープンソースセキュリティとは? オープンソースセキュリティとは、 アプリケーションで サードパーティ製の オープンソースコードを 使用する 際に、 開発者や セキュリティチームが 直面する リスクと、 それらを 軽減する ために 導入する プロセス、 手法、 ツールを 指します。 近年、 オープンソースコードの 脆弱性を 悪用する 攻撃に よって 組織は 大きな 損害を 受けており、 オープンソースセキュリティの 重要性と、 関連する セキュリティ戦略を 実施・監視する 必要性が 浮き彫りに なっています。
オープンソースセキュリティが重要なのはなぜですか? 今日目の 当たりに している デジタルトランスフォーメーションを 支えているのが オープンソースであり、 あらゆる 業界の 大小さまざまな 企業で 利用されています。 しかし、 リスクも 伴います。 こうした リスクを 認識する ことは 重要な 第一歩ですが、 継続的な セキュリティテストと 監視を 含む、 明確な オープンソースセキュリティ計画への 投資と 維持も 欠かせません。
オープンソースにはどのようなリスクがありますか? 開発者は、 セキュリティ管理や 可視性が ないまま、 膨大な 量の オープンソース依存関係を 取り込んでいます。 こうした オープンソースコンポーネントは 組織外の ボランティアに よって 保守されていますが、 メンテナーには コンポーネントを 更新・保護する 義務は ありません。 また、 公開されている 性質上、 開発者が 脆弱性を 認識すると、 悪意ある 攻撃者が その 情報を 知り、 悪用する 可能性が あります。 これらは、 オープンソースソフトウェアが もたら すリスクの 一例です。