開発者によるオープンソースの選択を支援


オープンソースを安全に保つための協力

2023年初頭、業界をリードする企業のトップ研究者たちがSCAR(Supply Chain Attack Research)グループを設立しました。攻撃者との絶え間ない競争から一歩先を行くために、グループは専門家同士の協力関係を促進し、効率的な標準を定義し、国際社会に利益をもたらすツールを開発し、共同研究と情報共有を促進する必要があることに合意しました。

Trellix Advanced Research Centerの顧客アドボカシー担当副社長であるKarine Ben-Simhonは、SCARフォーラムの創設者の一人です。シティのサイバーセキュリティイノベーションラボに勤務していた彼女は、業界横断的な活動を推進するために、SCARの設立を提案しました。

 

図 1 - コラボレーションによるサプライ チェーンのセキュリティ図1: コラボレーションによるサプライチェーンのセキュリティ


オープンソースとパッケージ

90%の組織がオープンソースリソースを利用しています。なぜなら、オープンソースリソースは、組織が迅速にソフトウェアを作成し、提供するための優れた方法であるためです。ただし、サードパーティのオープンソースの依存関係には固有のリスクも伴います。オープンソースのソフトウェアライブラリ(パッケージとも呼ばれる)は、NPM、PyPi、GitHubなど、複数のホスティングエコシステムに公開されています。

新興企業であれ、オープンソースコードやオープンソースコードを使用したサードパーティコンポーネントに依存している大企業であれ、多くの組織がコード開発に利用している利用可能なオープンソースツールの量と、これらのパッケージを吟味するための利用可能なツールとの間には不一致があります。これにより、依存関係が生じ、攻撃者が組織のネットワーク内で活動し、組織のネットワークにアクセスするために利用できる、広大で豊かな領域が開かれます。

図 2: ソフトウェア開発者が Web を閲覧してオープンソース NPM パッケージをダウンロードする図2: オープンソースのNPMパッケージをダウンロードするためにウェブを閲覧するソフトウェア開発者


脆弱性と悪意のあるコード

脆弱性は、オープンソースコードを使用する多くのリスクの1つです。脆弱性は通常、作成者によって意図的に挿入されることはありませんが、潜在的な悪用は致命的かもしれません(Log4j RCEの致命的な脆弱性など)。

一方、悪意のあるコードは異なります。攻撃者は、開発者にとって正規のものであるかのように偽装し、開発者のワークステーション、ビルド システム、運用サーバー、さらにはエンドコンシューマにサイレントにデプロイされる有害なコードを含む悪意のあるオープンソースパッケージを公開します。たとえば、この900以上の悪意のあるタイポスクワッティングパッケージのキャンペーンや、これらの検出不可能な高度なマルウェアをドロップする悪意のあるパッケージが挙げられます


もともとセキュリティ用に設計されたものではない

オープンソースのパッケージを利用するのは簡単で、作成者にとっては、オープンソースのエコシステムに新しいコンテンツを公開するのはさらに簡単になります。発行者に必要なのは、メールアドレスと、オープンでユニークなパッケージ名だけです。それを自分自身に割り当て、その名前の下に任意のコードを数秒で含めることができます。

このようなオープンソースのエコシステムに公開されるコンテンツには、ほとんど審査がありません。例えば、攻撃者はスタージャッキング攻撃手法を利用して、自分たちのパッケージに正当性があるように見せかけ、開発者やエンドユーザーを特に巧妙でない罠に誘い込みます。


開発者がオープンソースを選択する方法

私たちがソフトウェア開発者であると想像してみましょう。私たちは、既存のNPMプロジェクトに新しい機能を追加する新しいタスクを割り当てられました。環境をセットアップしようとすると、次のエラーメッセージが表示されます。

図 3: 新しい環境をセットアップするときのエラー メッセージのスクリーンショット
図3:新規環境設定時のエラーメッセージのスクリーンショット


Googleで検索

この問題を解決しようとする開発者の中には、検索エンジンを使って解決策を探す場合があります。エラーメッセージを検索エンジンにコピー&ペーストするだけで、一般的な問題の解決策につながる、興味深い、関連性のある手がかりを得ることができます。

図 4: Google 検索エンジンでエラーを検索したスクリーンショット図4:Google検索エンジンでエラーを検索したスクリーンショット

一番上の結果はStackOverflowのスレッドで、期待できそうです。多くの回答は、説明なしで、express-generatorパッケージのインストールを単に勧めています。しかし、問題ないと言っているからといって、本当にそうなのでしょうか。

図 5: 「express-generator」npm パッケージの使用を推奨する StackOverflow の人気の回答のスクリーンショット
図5:「express-generator」npmパッケージの使用を推奨するStackOverflowの人気回答のスクリーンショット


トラブルシューティングサークル

オープンソースパッケージのインストールを勧める同様の回答に遭遇した開発者の多くは、提案されたインストールコマンドをコピー&ペーストしてローカルの開発環境で実行するだけで、そのパッケージをローカルマシンにインストールしてしまうでしょう。

図 6: トラブルシューティング サークル図6: トラブルシューティングサークル


オープンソースパッケージの評価

開発者はセキュリティに責任を持つべきでしょうか。そうです。大いなる力には大いなる責任が伴うものであり、開発者はオープンソースパッケージを使う前に評価する責任があります。

開発者がオープンソースパッケージをインストールする前にチェックすべきパラメータは複数あります。ある開発者はライセンスに注目するかもしれませんし、ある開発者は廃ソフトウェアを避けて保守されたプロジェクトに注目するかもしれませんし、ある開発者は未解決のセキュリティ問題があるプロジェクトを避けるかもしれません。

開発者がオープンソースを評価するために時間を投資するというこの重要なステップには、通常、関連するソースコードリポジトリと実際のパッケージの内容の比較、パッケージの寄稿者のレビュー、プロジェクトの人気と採用状況の確認、問題の処理速度などのメンテナンスメトリクスの確認などの手作業が含まれます。

これには時間がかかりますが、幸運なことに、SocketSnyk AdvisorScorecardDebrickedといった素晴らしいツールがあり、これらのサービスを提供しています。これらのツールはそれぞれ、ソフトウェア開発者が利用可能なオープンソースパッケージの構造やセキュリティを理解するのを支援するように設計されています。開発者はこれらを使用して、インストールを検討しているパッケージを評価し、責任ある決定を下すことができます。

残念ながら、これらのツールにアクセスできるにもかかわらず、すべての開発者がその存在を認識しているわけでも、日々の社内ワークフローに組み込んでいるわけでもありません。

図 7: Express-generator パッケージのパッケージ レポートを表示するsocket.dev のスクリーンショット Express-generator パッケージ
図7: express-generatorパッケージのパッケージレポートを表示するsocket.devのスクリーンショット Express-generator パッケージ

開発者は通常、パッケージのセキュリティレベルを分析するために研究フローから外れることはなく、新しいパッケージを検討するたびに評価プロセスに投資する可能性は低いです。開発者が関心がないからではなく、脅威を認識しておらず、セキュリティ指向のユーザではないため、攻撃者にとって格好の標的となります。 

開発者の中には、調査フローにデフォルトで組み込まれているはずのこの重要なステップを認識していない人もいれば、そのような無料のツールに気づいていない人もいると思われます。


解決策: オーバーレイブラウザ拡張機能

開発者の経験を可能な限りネイティブで直感的なものに保ちつつ、オープンソースパッケージに関連するツールや無料情報を開発者が認識できるよう支援するため、ソフトウェアサプライチェーンのリーダーである Checkmarx社とSCARフォーラムのメンバーであるIllustria社は、両社の研究力を結集し、オープンソースのブラウザ拡張機能であるOverlayを作成しました。

この拡張機能は、オープンソースパッケージのリファレンスを検出し、業界リーダーが提供する多数の無料ツールへのリンクを追加して、開発者の評価プロセスに重要なパッケージの正当性を評価するのに役立つ追加情報を提供します。

図 8: オーバーレイがブラウザーにインストールされた後の StackOverflow の回答のスクリーンショット
図8:Overlayをブラウザにインストールした後のStackOverflowの回答のスクリーンショット


フローティングショートカット

このブラウザ拡張機能は、侵入を最小限に抑えながら、各レポートのキーポイントを表示する設定可能なツールチップを提供します。

候補パッケージに関連する情報を手作業で入力し、検索し、見つけるのではなく、Overlayを使用することで、開発者は、上記の信頼できるソースへのクイックリンクを備えたツールチップを得ることができます。図 9: オーバーレイ ブラウザー拡張機能のツールチップを含む、StackOverflow の人気の回答のスクリーンショット
図9:Overlayブラウザ拡張機能のツールチップが表示されたStackOverflowの人気回答のスクリーンショット

図 10: オーバーレイの gitHub ページからのスクリーンショット https://github.com/os-scar/overlay
図10:OverlayのgitHubページのスクリーンショット https://github.com/os-scar/overlay


まとめ

これまでのところ、Overlayプロジェクトは、CheckmarxIllustriaVulcanMaakafそしてさらに多くの個人からの貢献を受けています。Overlayプロジェクトの主要な貢献者の一人であるCheckmarx社のシニアソフトウェアエンジニア、Baruch Odem氏は、「精査せずに見知らぬ人からコードを取得しないでください」とアドバイスしています。これは、ベンダーが競合他社であるにもかかわらず協力し、コミュニティに貢献すべきことを示す好例です。

Overlayの主な価値は、開発者に直感的なエクスペリエンスを提供しながら、信頼できるソースからのセキュリティ勧告に接続し、開発者がインストールしようとするコードに責任を持つようにすることです。

新興企業から大企業まで、あらゆる規模の個人や組織が、このツールを評価し、ワークフローへの統合を検討することを奨励します。このプロセスには時間がかかる可能性があり、導入は組織の成熟度やその他の要因に左右されることを、承知しています。開発者には、個人的な使用であってもOverlayの使用を検討することをお勧めします。

脅威の主体は、ソフトウェアのサプライチェーンのオープンソース依存関係を汚染し、開発者を標的にすることにここ数年焦点を当てていることを忘れてはなりません。私たちは、これらの悪意のある活動を追跡し、情報と研究を共有するだけでなく、より安全なオープンソース環境を構築するために協力し合うという共通の目標に向かって、業界として協力する必要があります。

※本ページの内容は2023年9月5日(US時間)更新の以下のTrellix Storiesの内容です。
原文: Supply Chain Security Leaders Collaborate to Help Developers Choose Open-Source
著者: TrellixCheckmarx, Illustria