2025年8月19日Ravie Lakshmananサプライチェーンセキュリティ
Pythonパッケージインデックス(PyPI)リポジトリの管理者は、パッケージマネージャーがサプライチェーン攻撃を防ぐために期限切れドメインのチェックを行うようになったと発表しました。
「これらの変更により、PyPIのアカウント全体のセキュリティ体制が向上し、攻撃者が期限切れドメイン名を悪用してアカウントへ不正アクセスすることがより困難になります」と、Python Software Foundation(PSF)のPyPI安全・セキュリティエンジニアであるMike Fiedler氏は述べています。
今回の最新アップデートでは、悪意のある第三者が期限切れドメインを購入し、パスワードリセットを通じてPyPIアカウントを乗っ取る「ドメイン復活攻撃」への対策を目的としています。
PyPIは、2025年6月初旬以降、関連ドメインが期限切れフェーズに入った時点で1,800件以上のメールアドレスの認証を解除したと述べています。これは完全な解決策ではありませんが、正規に見えて検知が困難な重大なサプライチェーン攻撃の経路を塞ぐのに役立つとしています。
メールアドレスはドメイン名に紐付いており、そのドメイン名が未払いなどで失効する可能性があります。これは、オープンソースレジストリ経由で配布されるパッケージにとって重大なリスクです。特に、そのパッケージが管理者によって長期間放置されている場合でも、下流の開発者によって広く利用されている場合は脅威が増大します。
PyPIユーザーはアカウント登録時にメールアドレスの認証が求められるため、提供されたアドレスが有効かつ本人がアクセス可能であることが保証されます。しかし、この防御層もドメインが失効すると無効化され、攻撃者が同じドメインを購入してパスワードリセットを申請できるようになり、そのメールが攻撃者の受信箱に届く(本来のパッケージ所有者ではなく)ことになります。
その後、攻撃者はそのドメイン名でアカウントへアクセスするための手順を踏むだけで済みます。期限切れドメインによる脅威は2022年に発生しており、未知の攻撃者がctx PyPIパッケージの管理者が使用していたドメインを取得し、アカウントへアクセスして不正なバージョンをリポジトリに公開しました。
PyPIが追加した最新のセーフガードは、このようなアカウント乗っ取り(ATO)シナリオを防ぎ、「メールドメインが失効して所有者が変わった場合でも、2要素認証(2FA)が有効かどうかに関わらず、潜在的な被害を最小限に抑える」ことを目的としています。なお、この攻撃はカスタムドメイン名で登録されたメールアドレスを持つアカウントにのみ該当します。
PyPIは、FastlyのStatus APIを利用して、30日ごとにドメインの状態を照会し、期限切れの場合は該当するメールアドレスを未認証としてマークしています。
Pythonパッケージマネージャーのユーザーには、2要素認証(2FA)の有効化や、カスタムドメイン名のみで認証済みメールアドレスが1つしかない場合は、GmailやOutlookなど他の著名なドメインから2つ目の認証済みメールアドレスを追加することが推奨されています。
翻訳元: https://thehackernews.com/2025/08/pypi-blocks-1800-expired-domain-emails.html