| 插件名稱 | @libp2p/kad-dht |
|---|---|
| 漏洞類型 | 安全公告 |
| CVE 編號 | CVE-2026-45783 |
| 緊急程度 | 高 |
| CVE 發布日期 | 2026-05-20 |
| 來源 URL | CVE-2026-45783 |
@libp2p/kad-dht 中的未經驗證的 PUT_VALUE (CVE-2026-45783):WordPress 網站擁有者需要知道的事項及如何保護您的網站
日期: 2026-05-20
作者: 香港安全專家
摘要: 對於 npm 套件發布了一個高優先級的漏洞 (CVE-2026-45783 / GHSA-32mq-hpph-xfvr) @libp2p/kad-dht (在 16.2.6 中修補)。該問題允許未經驗證的 PUT_VALUE 記錄在 DHT 伺服器節點上無限制地存儲,可能會耗盡磁碟空間並導致拒絕服務或促進對受影響的 Node.js 主機的持續濫用。雖然這主要是一個 Node 生態系統漏洞,但 WordPress 網站擁有者應該引起注意——現代 WordPress 堆疊通常與 Node.js 工具、無頭前端、構建管道和可能使用 libp2p 的微服務重疊。本文解釋了該漏洞、對 WordPress 環境的實際影響、檢測步驟、緩解措施、事件響應以及來自香港安全角度的加固指導。.
TL;DR — 快速行動項目
- 漏洞:未經驗證
PUT_VALUE記錄可能導致 DHT 伺服器節點上的無界磁碟耗盡@libp2p/kad-dht版本 < 16.2.6。CVE-2026-45783,CVSS 7.5。. - 立即緩解:更新
@libp2p/kad-dht至 16.2.6 或更高版本,無論何時使用。重建並重新部署基於 Node 的服務和 CI 藝術品。. - 如果您無法立即更新:限制對暴露 DHT 端點的 Node 進程的網絡訪問;在可行的情況下應用應用層保護;強制執行進程磁碟配額和速率限制。.
- WordPress 特定:審核插件/主題和托管以檢查捆綁的 Node 服務、無頭前端、CI 執行器和具有 DHT 啟用服務的開發者機器;在您的代碼庫和藝術品中掃描該套件。.
- 使用分層防禦:主機級磁碟配額、容器化、網絡分段、安全的 CI/CD 實踐和依賴監控。.
漏洞的通俗解釋
libp2p 是一個用於點對點應用的模塊化網絡堆棧。該 kad-dht 模塊實現了一個 Kademlia 風格的分佈式哈希表 (DHT),支持 PUT_VALUE 操作——將鍵值記錄寫入 DHT。.
CVE-2026-45783 描述了未能驗證的情況 PUT_VALUE 在 DHT 伺服器節點上正確記錄。攻擊者可以發送大量或非常大的 PUT_VALUE 請求,伺服器將接受並持久化,沒有適當的大小、計數或來源驗證。因為這些記錄的存儲在易受攻擊的版本中是無界限的,攻擊者可以導致磁碟耗盡:該過程繼續寫入記錄,直到磁碟滿,導致服務拒絕或主機上的數據損壞。.
主要要點:
- 需要訪問 DHT 節點的網絡(不需要先前的身份驗證)。.
- 在大規模利用中低複雜度 — 自動化腳本可以淹沒節點。.
- 影響運行易受攻擊版本的 Node.js 進程
@libp2p/kad-dht(< 16.2.6). - 修補版本:16.2.6。.
為什麼 WordPress 網站擁有者應該關心
雖然這看起來像是僅限於 Node 的問題,但 WordPress 生態系統與 Node 共享許多接觸點:
- 構建工具和資產管道: 主題和插件通常在開發中包含 JS 構建步驟(webpack、vite)。運行 Node 的 CI 系統或開發者機器可能包含易受攻擊的依賴項。.
- 無頭和混合架構: 許多 WordPress 網站使用無頭前端(React/Vue),這些前端運行 Node 伺服器或可能包含 libp2p 的微服務以實現 P2P 功能。.
- 打包的微服務: 插件或主機有時會發送或運行基於 Node 的微服務以實現實時功能或集成;這些可能使用易受攻擊的 npm 模塊。.
- 開發者工作站和 CI 運行器: 如果開發者在連接到生產網絡的本地/CI 環境中使用易受攻擊的庫,則利用或資源耗盡可能影響共享基礎設施(例如,共享 CI 運行器)。.
- 管理的託管組件: 主機可能運行基於 Node 的服務以進行緩存、代理或分析;那裡的耗盡可能會干擾同一平台上的 WordPress 網站。.
即使您的 WordPress 代碼純粹是 PHP,您的正常運行時間和數據完整性可能取決於堆棧中其他地方的 Node 進程。.
與 WordPress 環境相關的利用場景
- 共享主機: 一個主機運行著一個基於 Node 的服務,供多個客戶使用。攻擊者向該服務發送大量請求,
PUT_VALUE導致磁碟耗盡和多個租戶的停機,包括 WordPress 網站。. - 插件或主題捆綁的 Node 微服務: 一個插件捆綁了一個輔助的 Node 服務(圖像優化、實時聊天)。如果它使用
@libp2p/kad-dht<16.2.6,攻擊者可以導致容器或虛擬機耗盡磁碟或崩潰。. - CI/CD 或開發工具: 一個暴露於互聯網的 CI 執行器或開發機器運行著一個 DHT 節點。磁碟填滿,構建產物丟失;部署停滯。.
- 無頭前端: 一個無頭的 WordPress 前端依賴於 Node 伺服器進行 SSR 或同步。如果 Node 伺服器被禁用,前端可能會變得不可用,即使 PHP 後端仍然存在。.
- 橫向移動和持久性: 磁碟耗盡可能被用作轉移注意力或損壞日誌/監控,進一步協助對 WordPress 組件的攻擊。.
如何找出您是否受到影響
步驟 1 — 搜尋您的代碼庫和產物
- 在庫文件和鎖定文件中搜索該包:
grep -R "@libp2p/kad-dht" .npm ls @libp2p/kad-dht || trueyarn why @libp2p/kad-dht || true
- 檢查
16. yarn.lock/17. pnpm-lock.yaml對於版本 < 16.2.6.
步驟 2 — 檢查部署和容器
- 檢查伺服器上運行的進程,尋找可能是 DHT 節點的 Node 進程:
ps aux | grep nodelsof -nP -iTCP -sTCP:LISTEN | grep nodess -plnt
- 對於容器,列出映像並檢查:
docker ps --format '{{.ID}} {{.Image}}' && docker inspect | grep -i libp2p -R
第 3 步 — CI/CD 和開發者機器
- 問開發者測試/構建伺服器是否使用 libp2p 或
kad-dht. - 掃描 CI 執行者的映像、預構建的工件或緩存以查找該包。.
第 4 步 — 託管供應商 / 管理服務
- 聯繫您的主機以驗證是否有任何管理的 Node 服務或平台組件使用易受攻擊的庫。.
第 5 步 — 日誌和遙測
- 查找磁碟寫入的峰值、DHT 存儲位置中不尋常的文件增長、顯示“設備上沒有剩餘空間”的錯誤或應用程序的突然崩潰。.
- 需要注意的警報:文件系統使用量 >85%、Node 應用日誌中重複的 PUT_VALUE 或 DHT 寫入條目、對 Node 進程的網絡流量突然增加。.
立即緩解 — 更新和重建(建議)
- 更新
- 無論何處
@libp2p/kad-dht如果使用,請更新到版本 16.2.6 或更高版本。. - 運行:
npm install @libp2p/kad-dht@^16.2.6npm update
- 對於傳遞依賴,更新父包或運行
npm dedupe並重建鎖定文件。.
- 無論何處
- 重建工件
- 重建並重新部署前端包、Docker 映像和包含 Node 模組的伺服器工件。.
- 替換註冊表中的映像並重新部署容器或 Pod。.
- 重新啟動服務
- 更新後重新啟動 Node 服務以確保載入修補版本。.
- 確認
npm ls @libp2p/kad-dht應顯示 16.2.6 或更高版本。.- 驗證運行中的進程是否使用更新的工件。.
如果您無法立即更新 — 臨時緩解措施
如果在您的時間窗口內無法進行修補(例如,第三方組件尚未發布更新),請實施這些緩解措施以降低風險:
網絡訪問控制
- 隔離 DHT 節點:使用主機防火牆(iptables/nft)或雲安全組限制已知對等方的入站流量。.
- 拒絕外部訪問:阻止公共互聯網對您的 Node DHT 節點使用的端口/協議的訪問。.
- 使用網絡 ACL 防止不受信任的對等方連接。.
應用層保護
- 實施規則以檢測和阻止可疑的 DHT PUT 類請求。如果您的環境代理或暴露 Node 的 HTTP 端點,則阻止與 DHT 協議指標或異常大小/模式匹配的請求。.
- 對來自外部對等方的連接進行速率限制,以保護 Node 進程。.
進程級和操作系統緩解措施
- 強制每個進程的磁碟配額(cgroups、systemd 或容器存儲配額),以防止單個進程消耗所有磁碟空間。.
- 在具有有限可寫存儲的容器中運行 Node 服務。使用只讀映像層和具有大小限制的獨立臨時可寫卷。.
- 對 DHT 使用的任何臨時存儲使用 tmpfs 或小型專用卷以限制損害。.
監控與早期警示
- 配置異常磁碟使用和寫入 I/O 突然增加的警報。.
- 如果您的 Node 應用程式暴露指標(Prometheus 等),請監控 PUT 操作的數量。.
範例:基本的 iptables 阻擋(根據需要替換)
iptables -A INPUT -p tcp --dport 4001 -j DROP
iptables -A INPUT -p udp --dport 4001 -j DROP
範例:systemd cgroup 限制(服務單元片段)
[Service].
MemoryMax=1G
TasksMax=200
- # 限制磁碟 IO(需要 systemd IOAccounting).
- IOReadBandwidthMax=/var/lib/my-node-service 10M.
- IOWriteBandwidthMax=/var/lib/my-node-service 10M,
這些是權宜之計——真正的修復是打補丁。, 建議的 WAF 簽名和行為檢測. - 因為 libp2p DHT 流量在許多情況下是非 HTTP 的,直接的 WAF 簽名檢測有限,除非 Node 服務暴露 HTTP 端點。仍然,在托管環境和代理層中,您可以:.
阻擋任何與 Node 服務相關的端點的異常大請求有效載荷。
檢測並阻擋來自同一遠端 IP 或 ASN 的高頻連接,目標是 DHT 端口。"
如果通過 HTTP 代理或日誌包含此類模式(例如,.
開發者指導 — 如何使用 libp2p/kad-dht 修復代碼
如果您維護調用 PUT_VALUE 或存儲 DHT 記錄的代碼,請應用這些最佳實踐:
- 驗證記錄大小:拒絕或截斷超過安全最大值的值(例如,64 KB 或由您的存儲容量決定的大小)。.
- 限制每個鍵和每個對等體的記錄數量。.
- 強制過期(TTL)和舊記錄的垃圾回收。.
- 如果可能,對寫入進行身份驗證和授權 — 要求對等體在接受持久寫入之前證明其合法性。.
- 對每個對等體 IP 或每個對等體 ID 的寫入操作進行速率限制。.
- 使用內容可尋址存儲(例如,CID),僅在有效格式匹配時持久化有效負載。.
- 在磁碟寫入之前實施大小和配額檢查,並優雅地處理“磁碟已滿”(失敗關閉)。.
範例 Node 假代碼模式:
async function safePutValue(store, key, value, peerId) {
偵測和響應 — 事件處理手冊
如果您檢測到可疑活動或磁碟耗盡的跡象:
- 隔離
- 立即將 Node 進程從外部網絡暴露中移除(iptables 規則,停止服務,移除公共路由)。.
- 隔離受影響的容器/虛擬機以防止橫向移動。.
- 保留證據
- 保存日誌(Node 應用日誌,系統日誌,網絡捕獲)。.
- 快照磁碟(如果可能)以進行離線分析。.
- 停止寫入
- 停止或暫停有問題的 Node 進程。.
- 禁用任何面向 DHT 的端口並恢復防火牆規則。.
- 分析
- 搜尋日誌以查找大量的
PUT_VALUE-類似寫入或來自相同對等體的重複寫入。. - 確定用於存儲 DHT 記錄的目錄並列舉可疑文件。.
- 搜尋日誌以查找大量的
- 清理
- 刪除惡意或過大的記錄。.
- 小心地回收磁碟空間;確保不刪除合法數據。.
- 在修補後重建並重新部署節點進程。.
- 修補和加固
- 更新
@libp2p/kad-dht至 16.2.6+。. - 從受信任的 CI 重建並重新部署帶有新鎖定文件的工件。.
- 應用配額和網絡限制。.
- 更新
- 事件後行動
- 如果有任何超出資源耗盡的妥協跡象,則輪換密鑰/憑證。.
- 更新事件日誌和根本原因分析。.
- 與利益相關者溝通,並在適用的情況下,與您的託管提供商聯繫。.
法醫指標需注意
- 節點服務存儲目錄中文件異常快速增長。.
- 節點應用日誌中高次數的 PUT 或寫入操作。.
- 多個來自許多臨時 IP 的連接針對節點進程。.
- 系統日誌條目:“設備上沒有剩餘空間”,節點進程的崩潰/重啟循環。.
- 節點進程的高磁碟 I/O 和 CPU 使用率。.
- DHT 存儲中存在許多隨機化的密鑰/記錄(大量具有大有效載荷的唯一密鑰)。.
收集這些文物以供您的事件報告和取證使用。.
如何測試您的環境
- 使用
npm 審計和依賴掃描器以識別@libp2p/kad-dht使用情況和版本。. - 在受控實驗室中本地模擬攻擊以驗證緩解措施 — 啟動測試 Node DHT 伺服器並嘗試發送超大
PUT_VALUE負載。監控配額和保護規則。. - 在大規模啟用之前測試保護規則和速率限制以避免誤報。.
- 運行集成測試以確保構建管道中的依賴更新不會破壞生產文物。.
命令檢查清單:
npm ls @libp2p/kad-dhtgrep -R "@libp2p/kad-dht" .find / -type d -name "node_modules" -exec grep -H "@libp2p/kad-dht" {} \;- 檢查容器映像:
docker run --rm sh -c 'npm ls @libp2p/kad-dht || true'
長期風險降低和安全架構建議
- 最小權限和網絡分段:保持 Node 微服務與公共網絡和 WordPress PHP 進程隔離,除非明確需要。.
- 不可變基礎設施:重建和重新部署帶有修補依賴的映像,而不是就地修補。.
- CI 管道加固:掃描並拒絕包含已知漏洞依賴的構建;簽署並驗證文物。.
- 依賴衛生:優先使用固定版本和受控更新;使用能夠對新發布的建議發出警報的工具。.
- 資源配額:對每個服務應用 cgroup/容器寫入和存儲限制。.
- 可觀察性:為 Node 服務儀表化 DHT 操作(寫入/讀取)、按服務的磁碟使用情況以及異常活動的警報。.
- 供應商和第三方管理:要求第三方插件/主題作者在發送 Node 服務時聲明並更新 Node 依賴。.
常見問題
Q: 我的 WordPress 網站是純 PHP,運行在 Apache/Nginx 上,沒有 Node 進程。我安全嗎?
A: 如果沒有您控制的 Node 進程,您不會直接受到影響。然而,請檢查您的主機、CDN 或插件提供商是否代表您運行 Node 服務。還要確認構建產物(打包的 Node 模塊)不會在您的生產伺服器上執行。.
Q: 我使用的插件說它“打包了一個 Node 助手”。我該怎麼辦?
A: 問插件供應商他們是否使用 @libp2p/kad-dht 以及使用的版本。如果存在漏洞,請要求或應用包含修補版本的更新。在此期間,如果安全,請隔離或禁用助手服務。.
Q: 此漏洞是否允許從 WordPress 網站竊取數據?
A: 主要風險是資源耗盡(磁碟填滿)。雖然直接數據竊取不是此 CVE 的直接關注點,但磁碟耗盡可能會中斷服務、刪除或損壞日誌,並創造有利於攻擊者的條件。請嚴肅對待。.
實用的修復檢查清單(逐步)。
- 清單: 識別所有 Node 實例、容器和 CI 執行者。搜索代碼庫和產物以查找
@libp2p/kad-dht. - 修補: 立即更新至
@libp2p/kad-dht>= 16.2.6。重建映像、產物並重新部署。. - 隔離: 阻止外部網絡訪問 DHT 節點,待驗證。強制每個進程的磁碟配額和容器存儲限制。.
- 加固: 為 Node 服務添加速率限制和應用層保護。限制允許寫入 DHT 存儲的對等方。.
- 監控: 對磁碟使用量激增和異常寫入模式發出警報。注意 DHT 相關端口的流量增加。.
- 測試: 驗證依賴項和服務是否與修補庫正常運行。在受控環境中進行恢復測試。.
- 報告: 如果他們的組件受到影響,請通知主機/第三方供應商。記錄事件和所學到的教訓。.
最後的話 — 為什麼及時行動很重要
CVE-2026-45783 優先級高是有原因的:資源耗盡攻擊是更大故障的放大器,並且可以用相對較低的努力觸發。對於 WordPress 網站擁有者來說,風險通常是間接的 — 但操作依賴性意味著間接風險會產生直接故障。最安全的路徑是:清點、修補、重建和加固。使用分層防禦 — 網絡控制、每個進程的配額、容器限制、應用層保護和監控 — 來保護您的平台,同時更新在您的供應鏈中傳播。.
如果您需要協助審核您的環境以查找 Node 依賴項、設置保護規則或在修補期間實施臨時緩解措施,請尋求合格的安全顧問或您的內部安全團隊的幫助。.
— 香港安全專家