セキュリティ13分で読める

Telnyx PyPIパッケージが乗っ取り——WAVファイルに隠されたクレデンシャル窃取

通信APIプラットフォームTelnyxのPython SDK「telnyx」パッケージが、攻撃グループTeamPCPによってPyPI上で侵害された。悪意あるバージョン4.87.1および4.87.2が公開され、開発者のクレデンシャル(APIキー・トークン・環境変数)を窃取するコードが**.WAVファイル内に巧妙に隠蔽**されていた。同グループはTrivy(Aqua Security)やLiteLLMなど他の人気パッケージにも同様の攻撃を仕掛けており、2026年最大規模のPyPIサプライチェーン攻撃キャンペーンとして注目を集めている。

PyPIサプライチェーン攻撃とは何か

PyPI(Python Package Index)は、Pythonコミュニティが利用する公式パッケージリポジトリだ。開発者は pip install パッケージ名 で簡単にライブラリをインストールでき、世界中で毎月数十億回のダウンロードが行われている。

サプライチェーン攻撃とは、ソフトウェアの開発・配布プロセスのいずれかの段階を侵害し、正規のソフトウェアに悪意あるコードを混入させる攻撃手法だ。PyPIサプライチェーン攻撃では、主に以下のパターンが存在する。

  1. タイポスクワッティング: 正規パッケージ名に似た偽パッケージを公開(例: requetsrequests
  2. アカウント乗っ取り: パッケージメンテナのPyPIアカウントを侵害し、正規パッケージに悪意あるバージョンを公開
  3. 依存関係混乱: プライベートパッケージと同名の公開パッケージを作成

今回のTelnyx侵害はパターン2のアカウント乗っ取り型で、正規のメンテナアカウントが何らかの方法で侵害されたと見られている。正規パッケージの新バージョンとして公開されるため、自動依存関係更新を設定している環境では気づかないうちにインストールされてしまうリスクがある。

攻撃の詳細:WAVファイル偽装という巧妙な手口

以下の図は、今回のサプライチェーン攻撃の全体フローを示している。

Telnyxサプライチェーン攻撃のフロー図:攻撃者がPyPIアカウントを侵害し、悪意あるパッケージを公開、開発者環境からクレデンシャルを窃取する流れ

TeamPCPの攻撃は、従来のサプライチェーン攻撃と比較して格段に巧妙な隠蔽手法を採用していた。

setup.pyへの仕込み

悪意あるバージョン4.87.1/4.87.2の setup.py には、Base64エンコードされたペイロードが埋め込まれていた。パッケージのインストール時(pip install 実行時)にこのコードが自動実行される仕組みだ。

WAVファイル偽装

窃取したクレデンシャルデータは、一般的なオーディオファイル形式である**.WAVファイルのヘッダー構造に偽装**して外部に送信された。この手法には以下のメリットがある。

  • ネットワーク監視の回避: WAVファイルの転送は正常なトラフィックに見えるため、IDS/IPSやDLPツールをすり抜けやすい
  • EDR検知の回避: バイナリデータがオーディオファイルのフォーマットに準拠しているため、マルウェア検知の対象になりにくい
  • フォレンジック分析の困難化: ディスク上に残されたファイルが一見すると正常なWAVファイルに見える

窃取対象データ

攻撃コードは以下のデータを収集・送信していた。

  • 環境変数全体: os.environ に格納されたすべてのキーバリューペア
  • APIキー・トークン: AWS、GCP、Azureなどのクラウドプロバイダー認証情報
  • データベース接続文字列: PostgreSQL、MySQL、Redisなどの接続情報
  • SSH鍵: ~/.ssh/ 配下の鍵ファイル
  • Gitの認証情報: .git-credentials.gitconfig の内容

TeamPCPの大規模攻撃キャンペーン

以下の図は、TeamPCPによる攻撃キャンペーンの時系列を示している。

TeamPCP攻撃キャンペーンのタイムライン:2026年2月のTrivy侵害から3月のTelnyx・LiteLLM侵害、発覚までの流れ

TeamPCPはTelnyxだけでなく、複数の人気パッケージを標的にした組織的な攻撃キャンペーンを展開していた。

攻撃対象パッケージ一覧

パッケージ用途月間DL数侵害バージョン手法
telnyx通信API SDK約50万v4.87.1, v4.87.2WAVファイル偽装
trivy脆弱性スキャナー約200万未公開環境変数窃取
litellmLLMプロキシ約150万未公開APIキー窃取

共通する攻撃特徴

TeamPCPの攻撃には以下の共通パターンが見られた。

  • 正規メンテナアカウントの侵害: タイポスクワッティングではなく、正規アカウントを直接乗っ取る
  • バージョン番号の自然さ: 既存バージョンの次のパッチリリースを装い、開発者の警戒心を下げる
  • インストール時実行: パッケージのimport時ではなく、インストール時(setup.py実行時)にペイロードが起動
  • データの外部送信先: 複数のクラウドサービス上に設置されたC2(コマンド&コントロール)サーバーを利用

PyPIのセキュリティ対策の現状と課題

PyPIは近年、セキュリティ強化に取り組んでいるが、今回の事件は依然として根本的な課題が残っていることを浮き彫りにした。

既存の対策

セキュリティ対策導入時期効果今回の有効性
2FA(二要素認証)必須化2023年アカウント乗っ取りの防止突破された可能性あり
Trusted Publishers2023年GitHub Actions連携での安全な公開未使用パッケージが標的に
マルウェアスキャン2024年既知パターンの自動検知WAV偽装で回避
パッケージ署名2025年(一部)改ざん検知普及率が低い

根本的な課題

  • メンテナ個人への依存: 多くの人気パッケージが1〜2名のメンテナに依存しており、アカウント侵害のリスクが集中する
  • レビュー体制の不在: PyPIはパッケージ公開前の人的レビューを行わない(npmと同様)
  • バージョン固定の未徹底: pip install パッケージ名 でバージョンを指定しない場合、最新版(悪意あるバージョン含む)がインストールされる

開発者が取るべき防御策

今回のようなサプライチェーン攻撃から身を守るために、開発者は以下の対策を講じるべきだ。

依存関係のロック

# requirements.txt でバージョンを厳密に固定
telnyx==4.87.0  # 侵害前の安全なバージョンを指定

# pip-compile でハッシュ検証を追加
telnyx==4.87.0 \
    --hash=sha256:abc123...

自動更新の制御

Dependabotやrenovatebot等の自動更新ツールを利用している場合、以下の設定を推奨する。

  • パッチバージョンの自動マージを無効化: マイナー・パッチアップデートでも人的レビューを必須にする
  • セキュリティアドバイザリの監視: GitHub Advisory DatabaseやOSV(Open Source Vulnerabilities)を定期チェック
  • SBOM(ソフトウェア部品表)の生成: CycloneDXやSPDX形式でSBOMを生成し、影響範囲の即時特定を可能にする

インストール前の検証

# パッケージの最新リリースを確認
pip index versions telnyx

# パッケージの変更履歴を確認
pip download telnyx==4.87.1 --no-deps
# setup.py の内容を手動検証

ランタイム保護

  • Sigstore/cosign: パッケージ署名の検証を導入
  • ネットワーク監視: CI/CDパイプラインからの不審な外部通信を検知
  • 最小権限の原則: CI/CD環境の環境変数に必要最小限の認証情報のみ設定

日本への影響

日本のテック企業にとって、今回のPyPIサプライチェーン攻撃は他人事ではない。

直接的な影響

Telnyxは通信APIプラットフォームとして、日本でもVoIP・SMS送信サービスに利用されている。特に以下のユースケースで注意が必要だ。

  • スタートアップのSMS認証基盤: Twilio代替としてTelnyxを採用するケースが増加中
  • カスタマーサポート系SaaS: 電話・SMSチャネルの統合にTelnyx SDKを利用
  • IoTデバイスの通信: M2M通信にTelnyxのSIM APIを利用

日本特有のリスク

日本の開発現場には、サプライチェーン攻撃のリスクを増大させる要因がいくつか存在する。

  1. OSSセキュリティ人材の不足: OSSの依存関係を専門的に監視できるセキュリティエンジニアが少ない
  2. バージョン固定の文化の遅れ: requirements.txt でバージョンを固定せずに pip install する慣行が根強い
  3. SBOM対応の遅れ: 経済産業省が2025年にSBOMガイドラインを発表したが、実際の導入は大企業に限られる
  4. CI/CDセキュリティの甘さ: GitHub ActionsやGitLab CIの環境変数に本番クレデンシャルを直接格納するケースが多い

規制動向

経済産業省は2025年に「ソフトウェアサプライチェーンセキュリティガイドライン」を策定し、SBOM(ソフトウェア部品表)の作成を推奨している。金融庁もFISC(金融情報システムセンター)の安全対策基準を改訂し、OSSの依存関係管理を明記した。今回のような事件を受けて、これらのガイドラインの強制力が強まる可能性がある。

サプライチェーン攻撃の今後の動向

今回のTeamPCP攻撃キャンペーンは、サプライチェーン攻撃が高度化・組織化していることを示している。今後予想されるトレンドは以下の通りだ。

攻撃手法の進化

  • AIを活用したコード偽装: LLMを使って正規コードに紛れ込む悪意あるコードを自動生成
  • マルチレジストリ攻撃: PyPIだけでなく、npm、RubyGems、Go Modulesなど複数のパッケージレジストリを同時に標的化
  • CI/CDパイプラインの直接侵害: パッケージではなく、ビルドプロセス自体を攻撃する手法(SolarWinds型)の増加

業界の対応

  • Sigstoreの普及: パッケージの署名と検証を標準化するSigstoreプロジェクトの採用が加速
  • SLSA(Supply-chain Levels for Software Artifacts): Googleが提唱するサプライチェーンセキュリティフレームワークの普及
  • パッケージレジストリの統合監視: PyPI、npm、Docker Hubなどの横断的な脅威インテリジェンス共有

まとめ

TeamPCPによるTelnyx PyPIパッケージの侵害は、WAVファイルへの偽装という巧妙な手口と、複数パッケージを標的にした組織的キャンペーンの両面で注目すべき事件だ。開発者は以下のアクションを今すぐ実行すべきだ。

  1. 依存パッケージの緊急確認: pip list で現在インストールされているTelnyxのバージョンを確認し、4.87.1/4.87.2がインストールされている場合は即座にアンインストールして安全なバージョンに戻す。併せてTrivy・LiteLLMも確認する
  2. クレデンシャルのローテーション: 該当バージョンをインストールした可能性がある場合、すべてのAPIキー・トークン・SSH鍵を無効化し再発行する。特にクラウドプロバイダーの認証情報は最優先で対応する
  3. 依存関係管理の見直し: requirements.txt でのバージョン固定、ハッシュ検証の導入、SBOMの生成を開始する。Dependabotの自動マージ設定を無効化し、すべてのアップデートに人的レビューを必須にする

この記事をシェア