ソフトウェア構成分析の実行方法
巨大で分散型のクラウドネイティブなワークロードがある現代において、アプリケーションのセキュリティはとても重要です。攻撃者は小さな脆弱性を見つけ、あなたのシステムに侵入し、データやリソースを盗み取るためにこれを利用することができます。攻撃者がこれを行う最も一般的な方法は、オープンソースのコードやライブラリを使用することです。攻撃者はオープンソースのコードにパスワードステーラーやクリプトマイナーを仕込み、これらの脆弱性を悪用して、長期的な深刻な損害を引き起こします。これらの攻撃を避けるためには、組織はより注意深くなる必要があります。
一般的なセキュリティ対策は、攻撃者がそれほど大きな攻撃対象を持つワークロードに対しては役に立ちません。特にコードのほとんどがオープンソースコンポーネントとコードで構成されている場合はそうです。開発者が使用するオープンソースのライブラリの多くは、実装後には更新されたり見直されたりすることはめったにありません。
古いライブラリは脆弱であり、攻撃者にとっては簡単な標的になり得ます。信頼されているライブラリの特定のバージョンが改ざんされることにより、組織は大変なトラブルに陥ることになります。では、どうやってオープンソースコードが攻撃者の入り口にならないようにするのでしょうか?
ソフトウェア構成分析とは何か?
ソフトウェア構成分析(SCA)は、製品の開発に関わるオープンソースコンポーネントをスキャンして脆弱性や悪用される可能性をチェックするための異なる方法論を総称したものです。現在のほとんどのアプリケーションは、新しいリリースを素早く提供するために、かなりの量のオープンソースコードを使用しています。しかし、オープンソースコンポーネントはセキュリティの面で最も良いとは言えません。
SCAツールは、オープンソースコンポーネントとその依存関係に関する情報を集めるために、あなたのコードベース全体を分析するのに役立ちます。これらのツールは、最も重要な脆弱性に対応し、オープンソースのライブラリを更新するかパッチを当てる必要があるかどうかを通知することで、オープンソースコードの管理を効率的かつ迅速に行うことができます。
DevSecOpsの時代にあって、開発者はセキュリティに焦点を当てながらも猛スピードで新しいリリースを開発する必要があります。そのため、オープンソースコードやそれに関連する無数のライブラリや依存関係を分析するのは多くの作業になります。SCAツールは、より重要なタスクに集中できるように、DevOpsチームからストレスを軽減するのに役立ちます。
SCAツールは、コードベース全体をスキャンして詳細で精巧な物品受領書 BOM(Bill of Materials)を作成することから始まります。この BOMには、ビルドに関わるすべての OS コンポーネントに関する情報が含まれています。この全プロセスは自動化されており、徹底しているため、DevOpsチームは手動で作業をする必要がないため、彼らのタスクに集中することができます。
BOMが作成され、オープンソースコンポーネント、法的コンプライアンス、バージョン情報などの関連情報がすべて含まれたら、SCAツールは膨大な脆弱性データベースを活用してオープンソースバイナリやライブラリの脆弱性を探します。
SCAツールはまた、組織が設定したセキュリティポリシーとオープンソースコンポーネントを比較することによって、法的コンプライアンスを遵守し、悪用されないことを保証することができます。SCAツールには、リアルタイムでセキュリティチームに脆弱性を警告し、侵入を避けるための適切な行動を取ることができるモニタリング機能が備わっています。
成熟したSCAツールは、重要なものを見逃すことがないように、オープンソースコードの脆弱性を優先するのにさらに役立つことができます。一部のソリューションは、開発中や製造中のプロジェクトにおけるオープンソースコンポーネントに対してライブラリを更新したりパッチを適用することによってこれらの脆弱性を修正することさえできます。
なぜSCAツールが必要なのか?
今日では、組織は光の速さで製品や新しいリリースを提供することが期待されています。DevSecOpsにより、チームはもはや孤立して動いているわけではなく、皆が効率的な製品を提供するために協力し合っています。しかし、セキュリティは今まで以上に重要です。そして、自己のベストプラクティスを練り出し、複数の方法でセキュリティを強化するように努めても、依然として攻撃の恐怖は絶えません。もし私たちが最近のEquifaxのデータ侵害から学んだことがあるとすれば、それは攻撃がどこからでも来る可能性があり、あなたのオープンソースコードからも来るかもしれないということです。
DevSecOpsの導入により、開発および運用チームは自分たちのビルドにセキュリティを常に組み込む必要があります。しかし、今日の競争の激しい市場では、チームは連続して新しいリリースを素早く開発し、セキュリティについて心配する時間がありません。
現在のほとんどのアプリケーションコードはオープンソースです。これは、ゼロからすべてを開発することは非常に時間がかかり、他のサービスとうまく連携しないスノーフレークサービスを作り出してしまうためです。開発者はオープンソースのコードを探す理由は、それが広範なコミュニティによって試されており、問題に直面したときにサポートを簡単に見つけることができるためです。オープンソースのコードやライブラリを実装することも非常に簡単です。多くのドキュメンテーションがオンラインのフォーラムにあります。
しかし、オープンソースコードの最大の利点は、それが誰にでも利用可能であることですが、それが最大の欠点でもあります。誰でも利用可能なコードは、攻撃者にも利用可能です。攻撃者は、外部からインフラストラクチャを攻撃する時間を費やす必要がなく、もし彼らが裏口を通じて入ることができれば、あなたが知らないうちにインフラストラクチャに入り込んで、リソースやデータを吸い出すことができます。
これは実現するのはかなり簡単です。なぜなら、アプリケーションに使用されるオープンソースコンポーネントはほとんどの場合、製品がリリースされた後も改訂されたり更新されたりすることはめったにないからです。ほとんどの組織は、オープンソースのライブラリやバイナリを更新しないのが普通です。これは通常、面倒な手作業になるためです。チームは無限にあるコードの行をすべて精査して、悪意のあるコードの断片を特定する時間がありません。これがSCAツールが必要になる理由です。これらのツールは、チームが単にできないところで活躍します。
これらのツールは、アプリケーションに使用されているすべてのオープンソースコンポーネントを特定するためにあなたのコードベースを積極的にチェックします。SCAツールはこれらのコンポーネントについて十分な情報を提供するので、あなたはそれらがどこから来たのか、そしてそれらのライセンスのコンプライアンス状況を知ることができます。また、物品受領書(BOM)のインベントリと脆弱性データベースを照合することによって脆弱性とその重大度を特定することができます。これらの脆弱性はその脅威レベルに基づいて優先順位付けされ、手動の介入を最小限に抑えるかまたは全くなしで適切に修正されます。
SCAツールを評価するための5つの考慮事項
市場にはSCAを実行するための多くのツールがあります。しかし、あなたが何を必要としているのかをはっきりと理解し、どこも妥協せずにちょうどそれを行ってくれるソリューションを探るべきです。以下の基準でSCAツールを評価することができます。
1. 使いやすさ
選んだツールは使いやすいものであるべきです。開発者が理解が複雑なツールを使用しなければならず、彼らに対してではなく彼らのために機能しないようなツールは避けるべきです。あなたの組織に適したツールを選ぶ際の重要な要因です。理想的なSCAソリューションは効率的で柔軟であり、開発者が各ステップで手動で介入することなく、ビルドに集中できるように支援します。
SCAソフトウェアはまた、GitやJiraのような既存のワークフローやツールと簡単に統合できるようになっていて、孤立しないべきです。DevOpsチームは、オープンソースパッケージとそのライセンスに関する実用的な洞察をツールから得られるように頼るべきです。これにより、脆弱性とライセンスの問題が最速で解決されます。
2. 脆弱性分析
選択したソリューションは、効率的な脆弱性分析を行うことができるべきです。ツールは、脆弱性を特定するために参照する脆弱性データベースに基づいてこの分析をどのように達成するかによって異なります。公開データベースのみに頼るのでは十分ではありません。民間の脆弱性データベースは毎年何百もの脆弱性が更新されます。理想的なツールは、さまざまな情報源からデータを集め、このデータを頻繁に更新して、ほとんどの脆弱性が見逃されないようにするべきです。
また、脆弱性分析の重要な部分は、依存関係の分析です。ここでは非常に注意が必要です
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/yayabobi/how-to-perform-software-composition-analysis-6a0