npm エコシステムおよびその他の環境における悪意のあるパッケージの脅威から組織を守る方法を学びましょう。
ソフトウェアパッケージとは、オープンソース・ソフトウェアやサードパーティ・ソフトウェアを配布するための一般的な手段のひとつです。これらはパッケージ・マネージャーやインストーラ・プログラムを通じて外部のソースから取得されることが多く、通常、ソフトウェアの構築と実行に必要なソースコード、ライブラリ、ドキュメント、その他のファイルが含まれます。
悪意のあるパッケージには、正規のパッケージを装ったマルウェアが含まれており、ソフトウェアシステムに感染することが目的です。悪意のあるパッケージに含まれるマルウェアがシステムに感染してしまうと、機密データの窃取、セキュリティソフトウェアの無効化、ファイルの改竄や削除、さらには不正な目的のためにシステム全体やネットワークを乗っ取られる可能性があります。
コードの弱点や脆弱性(悪用されずに数か月から数年にわたってソフトウェア内に存在する可能性がある)とは異なり、悪意のあるパッケージは、特にソフトウェア・サプライチェーンに関しては、ほとんどの場合、速やかに対処する必要のある直接的で即時の脅威です。Gartner によれば、世界中の組織の 45% がソフトウェア・サプライチェーンに対する攻撃を経験しており、これは 2021 年から 3 倍に増加しています。攻撃者は、サプライチェーンがほぼ無制限の攻撃面を提供しており、ソフトウェアの自動更新、Software-as-a-service(SaaS)ツール、クラウド、さらには AI が生成した偽の情報(一般に「幻覚」として知られています)を悪用することで、開発者をだまして悪意のあるパッケージをダウンロードさせる可能性があることに気づいたのです。
悪意のあるパッケージの最も一般的なベクトルには、ブランドジャッキング、タイポスクワッティング、依存関係ハイジャック、依存関係混乱などがあります。 ブランドジャッキングとは、攻撃者がパッケージの正当な所有者のオンライン ID を詐称することを意味します。タイポスクワッティングでは、ダウンロードした利用者が意図せずに悪意のあるバージョンを取得することを期待しており、攻撃者は、悪意のあるパッケージを人気のあるパッケージに似た名前で公開します。
依存関係ハイジャックや依存関係混乱攻撃も、正規のパッケージを悪意のあるパッケージに置き換えることによって実行されます。たとえば、2018 年には、世界最大のソフトウェアレジストリである npm で広く使用されている「event-stream」パッケージに依存関係として悪意のあるパッケージが追加された結果、わずか 3 か月弱で 800 万回以上ダウンロードされました。
主なオープンソースエコシステムには、Java、Python、.NET、そして最大かつ最も人気のある JavaScript の 4 つがあります。それぞれ、独自のパッケージ配布と管理システムがありますが、JavaScript のランタイム node.js のデフォルトのパッケージ マネージャーは npm で、JavaScript と npm は、他の 3 つのエコシステムと比べて安全性が劣るわけではありませんが、いたるところで用いられているため、悪意を持った攻撃者の格好の標的となっています。どのようなオープンソースエコシステムを好む場合であれ、悪意のあるパッケージはアプリケーションの整合性とセキュリティに重大なリスクをもたらす可能性があるのです。
npm における悪意のあるパッケージの脅威には、リスクを軽減するための事前の対策が必要です。 悪意のあるパッケージを誤ってインストールしないように開発者が採用すべき 3 つの戦略を次に示します。
現在利用可能な多数のソフトウェア・コンポジション解析(SCA)ツールのいずれかを積極的に導入することを検討してください。 オープンソースとサードパーティのコードからなるソフトウェア部品表(SBOM)の作成とメンテナンスのプロセスを自動化するものを探してください。 多くの SCA ツールは、新たなセキュリティ脅威を継続的に監視して、出現した場合に通知し、実用的な緩和アドバイスとともにセキュリティ上の脅威に関するタイムリーなアドバイザリーを提供します。
npm エコシステムにおける悪意のあるパッケージの脅威について、実際の例と緩和策を詳しく調べるには、以下のリンクにある無料の eBook を参照ください。