Over 800 npm Packages Found with Discrepancies, 18 Exploitable to ‘Manifest Confusion’
2024/03/21 TheHackerNews — npm レジストリに存在する、800 以上のパッケージのレジストリ・エントリに不一致であることが、サイバーセキュリティ企業 JFrog の新たな調査により判明した。不一致があったエントリのうちの 18 件は、 “Manifest Confusion” と呼ばれる手法を悪用していたという。JFrog によると、開発者を騙して悪意のコードを実行させるために、この問題が脅威アクターに悪用される可能性があるという。

セキュリティ研究者の Andrey Polkovnichenko は、「開発者は騙されて、一見何の問題もないように見えるパッケージをダウンロードするかもしれない。しかし、そこに隠された依存関係は、実際には悪意のものであるため、それは現実の脅威だと言える」と The Hacker News に語っている。
Manifest Confusion が初めて文書化されたのは、2023年7月にセキュリティ研究者の Darcy Clarke が、マニフェストとパッケージのメタデータの間の不一致が、ソフトウェア・サプライチェーン攻撃の武器になることを発見したときである。
この問題は、tarball (package.json) に含まれるマニフェスト・ファイルに関連するものである。具体的に言うと、パッケージ URI エンドポイントへの HTTP PUT リクエストを介して公開されるプロセスにおいて、npm サーバに提供されるマニフェスト・データとの一致/不一致を、npm レジストリが検証しないという事実に起因する。
この相互検証の欠如の悪用に成功した脅威アクターは、パッケージのインストール中に処理される隠れた依存関係を含む別のマニフェストを提供し、開発者のシステムに悪意の依存関係を密かにインストールできる。
JFrog は、「目に見える、つまり “偽の” マニフェストは開発者を騙し、また、npm レジストリ・データベースで利用可能なデータに依存する、監査ツールをも惑わす可能性がある。実際には、インストーラーは tarball から package.json ファイルを取得する。しかし、それは、HTTP PUT リクエストで提供される、目に見えるものと異なる可能性がある」と詳述している。

同社は、npm レジストリのマニフェストと tarball 内の package.json ファイルの間に不一致がある、800 以上のパッケージを確認したと述べている。
これらの不一致の多くは、プロトコルの仕様の違いや、パッケージ・ファイルの scripts セクションのばらつきによるものだが、そのうちの 18 件は、Manifest Confusion を悪用するように設計されているという。
特筆すべきは、yatai-web-ui である。このパッケージは、インストールされたマシンの IP アドレスに関する情報を含む、HTTP リクエストをサーバに送信するように設計されている。
同社の調査結果によると、この攻撃ベクターが脅威アクターに悪用されたという事実はないようだ。とはいえ、パッケージに不審な挙動がないことを、開発者が確認するための対策を講じることは極めて重要である。
Polkovnichenko は、「今のところ、この問題に npm は対処していない。そのため、npm のサイト上の見た目だけで、パッケージを信用するのは危険かもしれない。ユーザーは、導入するパッケージや、開発チームが使用するパッケージが、すべて安全で信頼できるものであることを検証すべきだ。特に、Manifest Confusion の場合には、すべてのパッケージを分析して、隠れた依存関係の有無を確認することが求められる」と述べている。
npm の Manifest Confusion という、とても困った問題があります。以前にも、2023/06/28 の「NPM の根幹を揺るがす Manifest Confusion:パッケージ情報が信頼できない理由」と、2023/07/04 の「NPM パッケージの Manifest Confusion :チェックのための Python ツールがリリース」という記事をポストしています。よろしければ、npm で検索と併せて、ご参照ください。
You must be logged in to post a comment.