The Hacker Newsは3月21日(現地時間)、「Over 800 npm Packages Found with Discrepancies, 18 Exploitable to 'Manifest Confusion'」において、JavaScriptパッケージマネージャーの「npm(Node Package Manager)」からレジストリーエントリーと矛盾するパッケージを800件以上発見したと報じた。これらパッケージのうち、18件はマニフェストコンフュージョン(Manifest Confusion)と呼ばれる攻撃手法を用いていることが判明したとしている。
マニフェストコンフュージョンとは
マニフェストコンフュージョンと呼ばれる攻撃手法は2023年6月に初めて文書化された(参考:「The massive bug at the heart of the npm ecosystem」)。これはパッケージの登録時に提出するマニフェストと、実際に配布されるアーカイブファイル(tarball)内のマニフェストが独立して存在し、それらの一致が検証されていないことを悪用する攻撃手法とされる。
攻撃者はパッケージの登録時に正常なマニフェストを登録し、アーカイブファイル内のマニフェストに悪意のあるパッケージへの依存関係を記述する。このパッケージをインストールすると、アーカイブファイル内のマニフェストに従って依存関係が解決されるため、気付かぬうちに悪意のあるパッケージをインストールすることになる。
悪意のある18件のパッケージと対策
The Hacker Newsによると、問題の800件を超えるパッケージはサイバーセキュリティ企業「JFrog」によって発見された。これらパッケージのうち大部分からは攻撃につながるような問題は見つかっておらず、マニフェストに若干の不一致がみられるだけという。悪意があると思われる18件はマニフェストコンフュージョンを悪用するように設計されており、IPアドレスなどの情報を窃取する可能性があるという。
しかしながら、The Hacker Newsは「この攻撃手法は脅威アクターによって利用されたことがないようだ」とも述べており、これまでのところマルウェアの配布など積極的なサイバー攻撃につながるパッケージは確認されていないものとみられる。
npmを利用する開発者にはこのような攻撃を回避するため、npmのWebサイト上のパッケージ情報を信用せず、アーカイブファイルに含まれるマニフェスト(package.json)ファイルの依存関係を検証して安全を確認してからインストールすることが推奨されている。