ソフトウェア構成分析(SCA)のベストプラクティス6選
2022年4月27日
0 分で読めますオープンソースソフトウェアは現代のアプリケーション開発の基盤であり、チームはより速く開発やイノベーションを進められます。しかし、大きな柔軟性には重大なセキュリティ上の課題も伴います。オープンソースの依存関係には、ソフトウェアサプライチェーン全体に影響を及ぼす可能性のある脆弱性やライセンス上のリスクが潜んでいます。成功している組織は、開発者のワークフローの効率を保ちながらセキュリティを強化する、ソフトウェア構成分析(SCA)のベストプラクティスを採用しています。このガイドでは、リスクを最小限に抑えつつSCAのメリットを最大限に活用するための、6つの重要なベストプラクティスを紹介します。
1. 開発者に使いやすいツールを選ぶ(そして、その有用性を開発者に伝える)
開発者はコードを書くのに忙しく、全体を見渡して考え、効率的に設計し、素早く反復する必要があります。開発者に使いにくいSCAツールはワークフローを遅らせるため、積極的に使ってもらえないでしょう。開発者に使いやすいSCAツールは、セットアップも操作も簡単でなければなりません。また、既存のSDLC開発ワークフローやツール(バージョン管理ツールやIDEなど)に、できるだけ早い段階で簡単に統合できることも重要です。
ツールを選んだら、SCAが重要な理由と、開発者にどのように役立つのかを伝えましょう。セキュリティは自分の責任ではないと考える開発者は、その責任を担うことに抵抗を感じるかもしれません。最初からセキュリティを考慮し、ワークフローにセキュリティチェックを組み込むことで、後からセキュリティ修正を反映するためにコードを書き直す必要がなくなり、時間を節約できることを理解してもらいましょう。最初から安全に書かれたコードなら、書き直す必要はありません。
2. 依存関係を把握する
オープンソースパッケージには、直接依存関係と推移的依存関係の2種類があります。直接依存関係は、自分のプロジェクトに追加するパッケージです。推移的(間接)依存関係は、直接依存するパッケージが使用するパッケージを指します。入れ子になったツリーのように考えるとよいでしょう。自分のパッケージに依存関係が含まれ、そのパッケージにも依存関係が含まれ、さらにその先へと続きます。
分析によると、オープンソースパッケージの脆弱性の80%は推移的依存関係に存在します。つまり、コード内の脆弱性の大半は、使用していることに気づいていない可能性のある(入れ子状の)依存関係に潜んでいます。優れたSCAツールは、コード内のすべての依存関係を正確に調査し、推移的依存関係も特定して検査できる必要があります。コードで使われているオープンソースパッケージの深さや複雑さを把握すれば、あらゆる階層で脆弱性を確実に検出できます。
3. スキャンを自動化し、実行可能な修正策を特定する
優れたSCAツールを使えば、定期的な自動スキャンを実行できます。ぜひ活用しましょう。コードを継続的かつ予防的に監視できるよう設定してください。自動スキャンでは、脆弱性の場所や修正方法を示す、実行可能なアラートが提供されます。脆弱性の修正に関するSCAツールの提案を慎重に検討し、開発者が安心してその方法で修正を適用できるようにしましょう。
4. SCAをCI/CDパイプラインに統合する
SCAツールは、開発からテスト、本番環境へと進む過程の妨げになってはいけません。SCAスキャンをCI/CDパイプラインに統合し、脆弱性の特定と修正をソフトウェアの開発・ビルドプロセスに組み込めるようにしましょう。SCAツールをパイプラインのほかの要素と統合すれば、コードセキュリティが日々のワークフローの一部となる文化にも、開発者が適応しやすくなります。
5. レポートとSBoM機能の力を活用する
米国連邦政府をはじめ、多くの組織では、ソフトウェアを購入する際にソフトウェア部品表(SBoM)レポートの提出が求められます。製品とともに詳細なSBoMを提供することで、アプリケーションのすべての構成要素を追跡することの重要性を理解していると示せます。
セキュリティスキャンと修正に関する明確なレポートも、大きな力になります。セキュリティ対策や修正済みの脆弱性数を詳しく報告すれば、セキュリティへの取り組みを示し、市場での競争力を高められます。
6. セキュリティポリシーを強化し、ライセンスコンプライアンスを向上させる
開発者が使用するオープンソースパッケージを明確に把握すれば、組織のセキュリティガイドラインを定め、徹底するためのポリシーを作成できます。脆弱性スキャンで得た知見を活用し、セキュリティを意識したオープンソースパッケージの利用を促すガードレールを設けましょう。
アプリケーションセキュリティにとって、オープンソースコードの把握は重要ですが、コンプライアンスのためにはオープンソースライセンスの把握も欠かせません。ライセンスは、オープンソースパッケージを使用する際の法的条件を定めています。SCAツールを使って、オープンソースコンポーネントのライセンス条件を確認しましょう。セキュリティポリシーを策定する際には、ソフトウェア開発ライフサイクルの早い段階からライセンスコンプライアンスに取り組むよう、開発者に促す項目を盛り込めます。
オープンソースプロジェクトは、その性質上、誰もが閲覧できる公開情報です。悪意ある攻撃者も例外ではありません。発見され修正された脆弱性は、攻撃者にも知られることになります。人気の高いオープンソースプロジェクトほど、攻撃が及ぼす影響範囲が広くなるため、攻撃者に狙われやすくなります。前述のEquifaxの情報漏えいを例に挙げると、攻撃に使われたオープンソースパッケージであるJavaのApache Strutsライブラリは、多くのアプリケーションで利用されていたため、広範囲に影響を及ぼす攻撃として知られることになりました。
もちろん、オープンソースを利用する組織は「自己責任」で利用しています。欠陥について通知するベンダーは存在せず、責任を免除する契約書もありません。これらのコンポーネントを安全に保つ責任は、すべて利用者にあります。
Snykのソフトウェア構成分析ソリューション
Snykは、組織がこれらのベストプラクティスを効果的に実践できるよう支援する、包括的なSCAソリューションを提供しています。Snyk Open Sourceは、開発者がワークフロー内でオープンソースの依存関係にある脆弱性を直接検出・修正できるよう支援します。IDE、バージョン管理システム、CI/CDパイプラインとのシームレスな統合により、継続的な監視と自動修正を実現します。堅牢な脆弱性データベースと優先順位付け機能により、開発者は最も重大な問題から対処できます。さらに、詳細なレポートとSBoMの生成機能を提供し、組織がコンプライアンス要件を満たし、セキュリティへの取り組みを示せるよう支援します。SnykのSCAを活用すれば、セキュリティ体制を強化し、ライセンスコンプライアンスを向上させ、開発ライフサイクル全体にセキュリティ文化を根付かせることができます。
オープンソースセキュリティの現状を探る
オープンソースソフトウェアとサプライチェーンセキュリティの最新動向やアプローチを理解しましょう。
