English version →
カテゴリ
CVE-2026-86039 high CVSS 8.2

@libp2p/peer-store の脆弱性 (CVE-2026-86039)

概要

@libp2p/peer-store に 脆弱性 (CVE-2026-86039) が存在。データの不正な改ざんを許す可能性があります。PeerRecord 経由で攻撃可能。対策: 12.0.24 以上に更新。

原文の説明

取得元が公開している説明をそのまま載せています (多くは英語)。

Summary

@libp2p/peer-store accepts a signed PeerRecord whose envelope is signed by one peer but whose payload claims a different peer ID. The vulnerable consumePeerRecord path verifies the envelope signature, but does not verify that the envelope signer is the same peer as the wrapped PeerRecord.peerId. As a result, an attacker can sign a record with their own key while placing a victim peer ID in the payload, causing attacker-controlled multiaddrs to be stored as certified addresses for the victim.

Details

The vulnerable code is in packages/peer-store/src/index.ts:

  • RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN, options) verifies the envelope signature.
  • const peerId = peerIdFromCID(envelope.publicKey.toCID()) derives the envelope signer peer ID.
  • The optional expectedPeer check only compares expectedPeer to the envelope signer.
  • const peerRecord = PeerRecord.createFromProtobuf(envelope.payload) decodes peerRecord.peerId from attacker-controlled signed payload bytes.
  • this.patch(peerRecord.peerId, { peerRecordEnvelope: buf, addresses: ... isCertified: true }) stores the addresses under the payload peer ID, not the verified signer peer ID.

The missing invariant is:

peerRecord.peerId.equals(peerIdFromCID(envelope.publicKey.toCID()))

packages/protocol-identify/src/utils.ts already performs this check and can be used as the reference behavior:

if (!peerRecord.peerId.equals(envelopePeer)) {
  throw new InvalidMes…

出典: NIST National Vulnerability Database NVD GitHub Advisory

自動生成の要約

取得元のデータ (CVSS・CWE・影響バージョンなど) から SecPulse が定型文で組み立てた要約です。AI は使っていません。正確な内容は下の原文と参照URLで確認してください。

@libp2p/peer-store という製品で、CVE-2026-86039 という番号がついた弱点 (脆弱性) が見つかりました。
悪い人がインターネット越しに PeerRecord のような特定の入り口を狙うことで、製品の中を不正に操作できてしまいます。
データの不正な改ざんを許す可能性があります。重要度は CVSS スコア 8.2/10 です。
対策: @libp2p/peer-store を 12.0.24 以上に更新してください。
心配なら、システム担当者や製品の公式サイトで「@libp2p/peer-store CVE-2026-86039」を検索してください。

CVE-2026-86039 (@libp2p/peer-store) — CWE-290 / CVSS v3 8.2
攻撃ベクター: ネットワーク経由 (リモート攻撃可) / 認証不要 / 被害者操作不要
脆弱箇所: PeerRecord / consumePeerRecord / PeerRecord.peerId / expectedPeer
修正バージョン: 12.0.24 (即時適用推奨)
対応方針: 1) SBOMで影響バージョン横断確認, 2) ステージング検証→本番更新, 3) WAF/プロキシで該当エンドポイントを監視, 4) ログでIOC調査。
参考: 当ページの『参照URL』の GHSA / vendor advisory / patched release を参照。

❓ 何が問題か

@libp2p/peer-store に 脆弱性 (CWE-290) があります。攻撃者は PeerRecord を経由して脆弱な処理に到達し、認証なしで悪用できます。

📍 影響範囲

@libp2p/peer-store の影響バージョンはベンダーのアドバイザリで確認してください。攻撃箇所: PeerRecord / consumePeerRecord / PeerRecord.peerId / expectedPeer。

🔥 重要度

重要度: 重要 (CVSS 8.2/10)。データの不正な改ざんを許す可能性があります。

🔧 修正方法

12.0.24 に更新してください。

🛡️ 暫定回避

修正版が未提供時は、影響機能の無効化・WAFルール・ネットワークACLでの遮断を検討。

🔍 検知方法

Webサーバ・プロキシ・WAFログで該当CVEのIOCに合致する不審リクエストを検索。SBOM/依存ファイルで影響バージョンを横断確認。

対応アクション

SOC/SREチームが順番に実行すべき具体的なステップとコマンド例

  1. 1
    影響範囲の特定 identify
    grep -r '@libp2p/peer-store' . | grep -v node_modules

    リポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で @libp2p/peer-store を grep し、稼働しているサービス・バージョンを把握する。

  2. 2
    パッチ適用 patch
    Upgrade @libp2p/peer-store to 12.0.24

    ステージング環境で 12.0.24 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。

  3. 3
    事後検証 verify
    Confirm patched version is live in production

    パッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。

影響パッケージ

npm @libp2p/peer-store
[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"12.0.24"}]}]

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく