【ITニュース解説】Malicious Nx Packages in ‘s1ngularity’ Attack Leaked 2,349 GitHub, Cloud, and AI Credentials

作成日: 更新日:

ITニュース概要

開発ツール「Nx」の悪意あるパッケージが公開され、GitHubやクラウド、AI関連の認証情報が盗まれた。攻撃者は、npmを通じてファイルシステムをスキャンし、認証情報を集めるコードを仕込んだ偽のパッケージを配布した。注意が必要だ。

ITニュース解説

今回のニュースは、ソフトウェア開発の世界で起きた「サプライチェーン攻撃」という種類のセキュリティ事件に関するものだ。多くの開発者が利用する重要なツールが標的となり、企業や個人の大切な情報が盗まれる可能性があるという点で、システムエンジニアを目指す初心者にとっても非常に重要な教訓となる。 まず、今回の攻撃の舞台となった「Nx」と「npm」について説明する。「Nx」は、ソフトウェア開発で使われる「ビルドシステム」と呼ばれるツールの一種だ。現代のソフトウェア開発では、一つの大きなプログラムをいきなり作るのではなく、たくさんの小さな部品(モジュールやライブラリ)を組み合わせて作ることが一般的である。Nxは、これらの部品を効率的に管理し、全体のプログラムとして組み立てたり、テストしたりする作業を自動化してくれる「司令塔」のような役割を果たす。特に、複数のプロジェクトやアプリケーションが密接に関連し合うような大規模な開発環境で、その真価を発揮する。開発者が効率よく、品質の高いソフトウェアを作るために欠かせないツールの一つと言える。 次に「npm」だが、これは主にJavaScriptというプログラミング言語で書かれたプログラムの「パッケージ管理ツール」であり、そのパッケージが公開されている「レジストリ」の名前でもある。開発者は、自分でゼロから全てのコードを書くのではなく、npmに公開されている既存の便利なプログラム部品(パッケージ)をダウンロードして自分のプロジェクトに組み込むことがよくある。これは、料理に例えるなら、自分で全ての食材を育てるのではなく、スーパーマーケットで売っているカット野菜や調味料を利用するようなものだ。npmレジストリは、世界中の開発者が作った何十万ものパッケージが登録されている、いわばソフトウェア部品の巨大なオンラインストアのような存在だ。 今回の事件は「サプライチェーン攻撃」と呼ばれるものだ。サプライチェーンとは、製品が原材料から消費者の手元に届くまでの「供給の連鎖」を意味する。ソフトウェア開発においても、様々なオープンソースの部品やツールを組み合わせて最終的な製品が作られるため、一種のサプライチェーンが存在する。サプライチェーン攻撃とは、この供給の連鎖のどこかに悪意のあるコードや不正な要素を忍び込ませることで、最終的な製品やそれを利用するユーザーに被害を与える攻撃手法だ。今回は、開発者が利用する「npmパッケージ」という部品に、攻撃者が悪意のあるコードを仕込んだ形で実行された。開発者が普段使っている、あるいはシステムが自動的にダウンロードするような、信頼されているはずのパッケージが悪意のあるものにすり替えられると、そのパッケージを使う開発者全員が知らず知らずのうちに攻撃者の罠にかかってしまう可能性がある。これは、安全だと思って買ってきた食材に毒が盛られていたような状況であり、非常に危険な攻撃だ。 今回の「s1ngularity攻撃」では、攻撃者が「nxパッケージ」と、それを補助するいくつかの「プラグインパッケージ」の悪意のあるバージョンをnpmに公開した。これらの悪意のあるパッケージは、見た目には通常のパッケージと区別がつかないように作られていたため、多くの開発者が誤ってこれらをダウンロードし、自分の開発環境に組み込んでしまった。これらの悪意のあるパッケージには、ダウンロードされた開発者のコンピュータ上でひそかに動作する不正なコードが含まれていた。具体的には、そのコードはコンピュータの「ファイルシステムをスキャン」する機能を持っていた。ファイルシステムのスキャンとは、コンピュータ内の様々なディレクトリやファイルの中身を詳細に調べ上げる行為だ。攻撃者はこのスキャンを通じて、特に機密情報が含まれる可能性のある場所を探し出した。そして、最も深刻なのが「認証情報の収集」機能だ。収集された認証情報とは、GitHub、主要なクラウドサービス(AWS、Azure、GCPなど)、そしてAI関連サービス(OpenAIなど)へのログインに必要なIDやパスワード、APIキー、トークンといった重要なデータのことだ。これらの情報は、それぞれのサービスに正当なユーザーとしてアクセスするために不可欠なものだ。攻撃者はこれらの認証情報を盗み出し、外部のサーバーに送信していた。認証情報が漏洩するということは、攻撃者がまるで正規のユーザーであるかのように、これらのサービスに自由にアクセスできてしまうことを意味する。 今回の攻撃により、なんと2,349件ものGitHub、Cloud、AI関連の認証情報が漏洩したと報告されている。この数字は、攻撃の広範さと深刻さを物語っている。GitHubの認証情報が漏洩すれば、攻撃者は開発者のコードリポジトリにアクセスし、機密性の高いソースコードを盗んだり、改ざんしたり、あるいは悪意のあるコードをプロジェクトに忍び込ませたりすることが可能になる。クラウドサービスの認証情報が漏洩すれば、企業や個人の重要なデータが保存されているクラウドストレージにアクセスされたり、仮想サーバーが乗っ取られて不正な目的で利用されたり、あるいは大量の金銭的被害につながる可能性がある。AI関連サービスの認証情報が漏洩すれば、機密性の高いAIモデルやデータが盗まれたり、不正にAIサービスを利用されて多額の利用料が発生したりするなどの被害が考えられる。これらの漏洩した情報は、個人の開発者だけでなく、それらのサービスを利用している企業のセキュリティを脅かす重大なリスクとなる。攻撃者は盗んだ情報を使って、さらに大規模な攻撃の足がかりとすることもあるため、その影響は計り知れない。 システムエンジニアを目指す初心者にとって、今回の事件から学ぶべきことは多い。まず、ソフトウェア開発の部品として利用するオープンソースのパッケージであっても、その信頼性を常に確認する習慣が重要だ。全てのパッケージが安全とは限らないという意識を持つ必要がある。公式のアナウンスやセキュリティ情報を常にチェックし、脆弱性が報告されていないか、不正なパッケージが公開されていないかを確認する習慣をつけることが大切だ。また、開発環境においても、最小権限の原則を守り、不要なアクセス権限を与えないようにする。認証情報の管理を厳格に行い、環境変数や設定ファイルに直接書き込むのではなく、より安全な方法で管理することを検討すべきだ。さらに、多要素認証(MFA)の導入は、パスワードが漏洩した場合でも不正アクセスを防ぐための非常に有効な手段となる。利用可能なサービスでは必ずMFAを設定するように心がけるべきだ。今回の事件は、開発の「サプライチェーン」全体におけるセキュリティの重要性を浮き彫りにした。便利なオープンソースツールを活用しつつも、常にセキュリティリスクを意識し、それを回避するための知識と対策を講じることが、これからのシステムエンジニアには強く求められる。自分自身が開発するソフトウェアだけでなく、利用するツールや部品の安全性にも目を向ける意識が、現代の開発者には不可欠だ。

【ITニュース解説】Malicious Nx Packages in ‘s1ngularity’ Attack Leaked 2,349 GitHub, Cloud, and AI Credentials