オープンソースの未来は脅威にさらされていますか?

公開: 2023-01-24

オープン ソース ソフトウェア (OSS) は、今日のアプリケーション アーキテクチャのバックボーンです。 市場投入までの時間を短縮し、過労になりがちな開発者の負担を軽減することで、オープン ソースは DevOps の世界で革命的な地位を確立しました。 オープン ソースのコピー アンド ペーストは、最新のアプリケーションの開発に大きな変化をもたらしますが、依然として組織や個人にとって大きなセキュリティ リスクとなっています。 これに対抗するには、オープン ソース コードの完全なブラックリストを作成するか、次世代のWAF ソリューションなどの対策を積極的に実装する必要があります。

サードパーティのコードはアプリ開発に不可欠

ライブラリは、Web またはモバイル アプリケーション コンポーネントのソース コードの非常に便利な隠し場所です。 これらのライブラリは、オープンソース (誰でも無料で利用可能) またはプロプライエタリ (支払いの背後にあるコードをロックする) にすることができます。 オープン ソースは多くの栄光を誇っていますが、エンタープライズ アプリケーションが機能し続けるためには、プロプライエタリ コードも役割を果たします。

このサードパーティ製ソフトウェアは、責任を持って使用すると、開発者が常に車輪を再発明する必要がなくなります。 これにより、開発プロセスの効率が大幅に向上し、高品質の最終製品の生産に役立ちます。 最終的に、オープン ソース コードを自由かつ自由に使用することで、正のフィードバック ループが作成され、開発者は実用最小限の製品をより迅速にリリースできるようになり、ユーザーのフィードバックと評価を迅速に収集して実装する道が開かれます。 開発者は、DevOps プロセスにおけるオープン ソースの重要な位置を深く認識していますが、現代のアプリケーションをサポートするコードの 80% が既存のコードに由来することを知って、エグゼクティブはしばしば驚かされます。

推移的な依存関係の危険性

オープン ソース コードにリスクが伴うことは、目新しいことではありません。 Log4j や HeartBleed などの最近広まった脆弱性は、オープン ソースのリスクを地図上に取り返しのつかないものにしました。 オープンソースが使用される頻度と、進行中のプロジェクトに脆弱性が忍び込む可能性があることについては、依然として理解が深まっている分野です。 オープンソース プロジェクトによって提示される継続的なリスクにもかかわらず、オープンソースが提示する特定の種類のリスクについてはほとんど調査が行われていません。 Endor Labs の研究者は、主要な OSS 脅威の起源を明らかにすることで、この状況を変えようと試みました。

ソフトウェア内では、推移的な依存関係は、2 つのコンポーネント間の一意に間接的な関係を表します。 たとえば、開発チームが進行中のプロジェクトにパッケージ B を追加するとします。 次に、パッケージ B はパッケージ C を自動的にダウンロードします。このシナリオでは、開発中のソフトウェアはパッケージ B と直接関係を持っていますが、パッケージ C はバックグラウンドに潜んでいます。 より安全な開発手法を試みようとする試みを挫折させるのは、オープン ソース ソフトウェアの依存関係のうち、DevOps プロセス内で実装するために手動で選択されているのはわずか 5% に過ぎないという事実です。 このように、ほとんどの依存関係はコードベースに自動的に取り込まれます。 これは、推移的な脆弱性の原因を示しています。 Endor Labs による最近のレポートでは、オープン ソースの脆弱性の驚くべき 95% が推移的な依存関係に起因していることがわかりました。

データは、最も人気のある無料のオープンソース ソフトウェアをリストした Core Infrastructure の Census II レポートから編集されました。 このデータは、Endor の研究者が一般的なパッケージ マネージャーや OSS ライブラリをスキャンできるように、他のソースで強化されました。 研究者は、Census II データで言及された 254 個のパッケージのうち、ほとんどが平均 14 個の推移的な依存関係に苦しんでいることを発見しました。 何もない状態では、14 は驚くほど高くは見えないかもしれませんが、ほとんどのアプリケーションは、数百とは言わないまでも数十の直接的な依存関係に依存しています。 それらの推移的な対応物は指数関数的にスケーリングします。

研究者が表明した主な懸念は、この問題に対する業界の広範な過小評価に基づいています。 エグゼクティブは、開発プロセス内で使用されるソース コードの量を減らし続けています。推移的な依存関係はまだ注目されていません。 セキュリティの問題の深さは引き続き水面下に潜んでおり、タイポスクワッティングやリモート コード実行攻撃の爆発範囲が拡大しています。 オープン ソース コードの絶え間ない再利用がその可能性を十分に発揮するためには、DevOps プロセス内でセキュリティをより優先する必要があります。

潜在的な脆弱性から保護する方法

安全な技術スタックを維持するプロセスは、かつてないほど複雑になっています。 パッチ アラートが急速に増えているため、企業のセキュリティは自動化されたパッチレスの保護を優先する必要があります。 静的および動的分析とともに境界セキュリティを優先する従来の対策は、手動更新に依存しているため、ゼロデイに対する保護はありません。 悪名高い SolarWinds 攻撃で攻撃者が使用したバックドア コードは、技術的にエラーがなかったため、静的分析では検出されませんでした。

エクスプロイトの試みを特定してブロックするには、連動するソフトウェアの小さなスイートが必要です。 最初にアプリケーションの境界を定義して保護するために、次世代の Web アプリケーション ファイアウォール (WAF) をデプロイできます。 外部と内部の境界に位置する WAF は、アプリケーションに出入りするすべてのトラフィックを監視します。 次世代の側面により、この WAF は新しいポリシーを自動的に適応させて実装できます。 この絶え間ない進化の自動展開により、従来型の WAF が浪費していたセキュリティ チームの時間とエネルギーが大幅に解放されます。

WAF はコードを実行しようとする外部からの試みを処理しますが、Runtime Application Self Protection (RASP) は内部の脆弱性やコード インジェクションから保護します。 このレベルの保護では、すべてのペイロード (SQL クエリやオペレーティング システム コマンドなど) がリアルタイムで評価されます。 このプロセスは、署名や学習段階を必要とせず、完全にアプリケーション コンテキスト内で行われます。 これはアプリケーション内で動作するため、ほぼすべてのコンテキストをカバーします。 これは、エクスプロイトによって境界の侵害が許可されたとしても、疑わしいアプリケーションの動作が RASP シャットダウンをトリガーするため、攻撃者が横方向に移動することを防止できることを意味します。 これにより、疑わしいアクティビティが終了し、セキュリティ チームに警告されます。 このように、RASP は次世代の WAF を補完します。 WAF は悪意のあるトラフィックを排除するのに役立ちますが、潜んでいる推移的なエクスプロイトによってもたらされるリスクは RASP によって軽減されます。 これらのコンポーネントが技術スタックを保護することで、OSS が現在セキュリティに課している負担が大幅に軽減されます。