Researchers Find Over 22,000 Removed PyPI Packages at Risk of Revival Hijack
2024/09/04 TheHackerNews — Python Package Index (PyPI) レジストリを標的とする、新たなサプライチェーン攻撃手法が、下流組織への侵入手段として悪用されていると、ソフトウェア・サプライチェーン・セキュリティ企業 JFrog が指摘している。この Revival Hijack と命名された攻撃手法により、既存の PyPI パッケージ 2万2000個に乗っ取りの可能性が生じ、さらに、数十万の悪意のパッケージのダウンロードへといたる恐れがあるとしている。なお、それらの脆弱なパッケージとは、ダウンロード数が10万回を超えているものであり、また、6か月以上にわたってアクティブになっているものである。

JFrog のセキュリティ研究者である Andrey Polkovnychenko と Brian Moussalli は、「この攻撃手法は、元の所有者により PyPI のインデックスから削除された後に、再登録するオプションを操作することで、PyPI ソフトウェア・パッケージを乗っ取る」と、The Hacker News と共有したレポートの中で説明している。PyPI リポジトリで公開されている、Python パッケージが削除された後に、他のユーザーが登録できるという仕組みに、この攻撃の核心がある。

JFrog の統計によると、1ヶ月あたり平均で約 309件のパッケージが削除されているという。その理由は様々であり、メンテナンスの欠如 (つまり廃品)/別の名前によるパッケージの再公開/公式ライブラリや組み込み API への同じ機能の導入などがあるという。
この種の悪用はタイポスクワッティングよりも効果的であり、攻撃者が自分のアカウントを使って、悪意のパッケージを同じ名前で公開し、より新しいバージョン名で、開発者の環境を感染させていくものとなる。
研究者は、「この Revival Hijack 攻撃は、攻撃者にとって有益である。このテクニックは、被害者がパッケージをインストールする際に犯すミスには依存しない。それどころか、かつて安全だったパッケージを、最新バージョンに更新することは、多くのユーザーにとって安全な操作とみなされる」と詳述する。
PyPI は、開発者のなりすましや、タイポスクワッティングの試みに対して、安全策を講じている。しかし、JFrog の分析によると、pip list –outdated コマンドを実行すると、元のパッケージの新しいバージョンとして偽パッケージがリストアップされるが、前者と後者は、まったく別のパッケージに対応することが判明している。
さらに問題なのは、pip install -upgrade コマンドを実行すると、パッケージの開発者が変更の警告を受け取ることなく、パッケージが偽物に置き換えられてしまうという点である。
JFrog は、security_holding という新しい PyPI ユーザーアカウントを作成し、そのアカウントを使って影響を受けやすいパッケージを乗っ取り、空のプレースホルダーに置き換えることで、削除されたパッケージの攻撃者による悪用を防いだと述べている。
さらに、これらのパッケージには、それぞれ 0.0.0.1 というバージョン番号が割り当てられている。それは、依存関係の混乱という攻撃シナリオとは正反対のものであり、pip アップグレード・コマンドを実行する開発者が、プルしてしまうのを避けるためのものである。
Revival Hijack について憂慮すべきことは、この攻撃手法が実際に悪用されている点にある。2024年3月30日に Jinnis と呼ばれる未知の脅威アクターが、元の所有者 (cheneyyan) が PyPI からパッケージを削除したのと同じ日に、pingdomv3 という名前のパッケージをリリースしている。
2024年4月12日に Jinnis は、”JENKINS_URL” 環境変数の存在をチェックし、存在する場合にリモート・サーバから取得した未知のネクスト・ステージ・モジュールを実行する、Base64 エンコードされたペイロードを取り込んだ、アップデート版をリリースしたと言われている。
JFrog は、「この脅威アクターは、攻撃の配信を遅らせることで、特定の IP 範囲に限定する、標的型の攻撃を設計したことが示唆される」と述べている。
Revival Hijack 攻撃は、脅威アクターがキャンペーンの範囲を拡大するために、削除された PyPI パッケージを標的にすることで、より広範な規模のサプライチェーン攻撃を狙うものである。組織や開発者に対して推奨されるのは、DevOps パイプラインを点検し、すでにリポジトリから削除されたパッケージを、インストールしていないことを確認することである。
JFrog Security Research Team のリーダーである Moussalli は、「攻撃者は、削除されたパッケージの処理に関連する脆弱な動作を悪用することで、既存のパッケージをハイジャックし、ユーザーのワークフローを変更することなく、そのパッケージをターゲットのシステムにインストールすることを可能にしている。それにより、PyPI パッケージの攻撃対象領域は拡大し続けている。こうした積極的な悪意の介入に対して、ユーザーは常に警戒を怠らず、自分自身と PyPI コミュニティを、このハイジャック手法から守るために、必要な予防措置を講じる必要がある」と述べている。
PyPI に存在する、パッケージ再登録に関連する問題が、JFrog により明らかにされました。人々の倫理観を前提にして始まった、オープンソース・リポジトリには、さまざまなセキュリティ・ホールあるのだと、あらためて認識させられます。こうした問題を、ひとつひとつ、丁寧に取り除いていく必要がありますね。JFrog に感謝です。よろしければ、PyPI で検索も、ご利用ください。
You must be logged in to post a comment.