非常に人気の高いnpmレジストリを利用してJavaScriptコードをダウンロードする開発者は、パッケージのメタデータをチェックしないという欠陥のため、知らないうちにさまざまなサイバー脅威にさらされる可能性があることが明らかになった。
GitHubが所有するこのソフトウェアレジストリは世界最大とされ、世界で1700万人の開発者に利用されている。
しかし、元GitHubおよびnpmのマネージャーであるダーシー・クラーク氏は今週のブログ投稿で、昨年11月から問題を把握していたにもかかわらず、レジストリが対応を取ってこなかったと説明した。
「私は、この問題の潜在的な影響/リスクは当初理解されていたよりも実際にははるかに大きいと考え、3月9日に調査結果を添えてHackerOneに報告しました。GitHubはそのチケットをクローズし、3月21日に『内部で』対応していると述べました」とクラーク氏は説明した。
「私の知る限り、彼らは大きな進展を見せておらず、この問題を公表もしていません。それどころか、過去6か月でnpmを製品としての立場から実質的に手放し、フォローアップや是正作業に関する見解の提供を拒んでいます。」
問題そのものは、npmがマニフェスト情報(メタデータ)を、関連するパッケージ(「tarball」)の実際の内容と照合して検証しないという事実に起因する。
つまり理論上は、パッケージの公開者が、どの依存関係を持つのか、どのスクリプトを実行するのかといった重要情報を隠すことができる。
クラーク氏は、これによりnpmユーザーには次のようないくつかのリスクが生じると述べた。
- キャッシュ汚染:保存されたパッケージが、レジストリ上の名前やバージョンと一致しない
- 不明または未掲載の依存関係のインストール:セキュリティ/監査ツールを欺く
- 不明かつ未掲載のスクリプトの実行:同様にセキュリティ/監査ツールを欺く
- 潜在的なダウングレード攻撃:プロジェクトに保存されるバージョン指定が、特定されていない脆弱なバージョンのパッケージを指す
Sonatypeのスタッフ・セキュリティ研究者であるAx Sharma氏は、マニフェスト混乱の発見は、メタデータだけに依存しないことの重要性を示していると主張した。メタデータには不正確な情報が多く含まれ得るためだ。
「これは必ずしも悪意ある行為に起因するものではなく、正当なプロジェクトがクローンまたはフォークされた場合や、新しい開発者が新しいパッケージのマニフェストファイルやnpmレジストリのページに古いメタデータを残したままにした場合にも起こり得ます」と同氏は付け加えた。
「重要なのは、マニフェストを盲目的に信頼せず、より深い分析を行うセキュリティツールを用いることです。たとえば、悪意のある、または脆弱なファイルに対するハッシュベースの分析――高度なバイナリ・フィンガープリンティングとして知られる手法――です。」
開発者がそのような分析ツールを使用しない場合、脅威アクターが悪意ある依存関係を注入したり、悪意あるインストールスクリプトを仕込んだりする攻撃にさらされる可能性があり、マニフェストデータのみに依存するソリューションではそれらを見逃してしまう恐れがある、とSharma氏は結論づけた。
翻訳元: https://www.infosecurity-magazine.com/news/manifest-confusion-threat-trust/