香港安全咨询 libp2p kad dht(CVE202645783)

Npm @libp2p/kad-dht 中的其他漏洞类型
插件名称 @libp2p/kad-dht
漏洞类型 安全公告
CVE 编号 CVE-2026-45783
紧急程度
CVE 发布日期 2026-05-20
来源网址 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 环境相关的利用场景

  1. 共享主机: 一个主机运行着一个基于 Node 的服务,供多个客户使用。攻击者向该服务发送大量记录, PUT_VALUE 导致磁盘耗尽和多个租户(包括 WordPress 网站)停机。.
  2. 插件或主题捆绑的 Node 微服务: 一个插件捆绑了一个辅助 Node 服务(图像优化、实时聊天)。如果它使用 @libp2p/kad-dht <16.2.6,攻击者可以导致容器或虚拟机磁盘耗尽或崩溃。.
  3. CI/CD 或开发工具: 一个暴露在互联网上的 CI 运行器或开发机器运行一个 DHT 节点。磁盘填满,构建工件丢失;部署停滞。.
  4. 无头前端: 一个无头 WordPress 前端依赖于 Node 服务器进行 SSR 或同步。如果 Node 服务器被禁用,前端可能会变得不可用,即使 PHP 后端仍然存在。.
  5. 横向移动和持久性: 磁盘耗尽可能被用作分散注意力或破坏日志/监控,帮助进一步攻击 WordPress 组件。.

如何查找您是否受到影响

第一步 — 搜索您的代码库和工件

  • 在仓库文件和锁定文件中搜索该包:
    • grep -R "@libp2p/kad-dht" .
    • npm ls @libp2p/kad-dht || true
    • yarn why @libp2p/kad-dht || true
  • 检查 package-lock.json / yarn.lock 查找版本 < 16.2.6.

第2步 — 检查部署和容器

  • 检查服务器上运行的进程,寻找可能是DHT节点的Node进程:
    • ps aux | grep node
    • lsof -nP -iTCP -sTCP:LISTEN | grep node
    • ss -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进程。.
  1. 更新
    • 无论何处 @libp2p/kad-dht 使用时,请更新到版本16.2.6或更高版本。.
    • 运行:
      • npm install @libp2p/kad-dht@^16.2.6
      • npm update
    • 对于传递依赖,更新父包或运行 npm 去重 并重建锁定文件。.
  2. 重建工件
    • 重建并重新部署包含 Node 模块的前端包、Docker 镜像和服务器工件。.
    • 替换注册表中的图像并重新部署容器或 Pod。.
  3. 重启服务
    • 更新后重启 Node 服务以确保加载修补版本。.
  4. 确认
    • 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 阻止(根据需要替换) 适当替换

# 阻止对 Node DHT 端口的外部访问

示例:systemd cgroup 限制(服务单元片段)

[Service]

这些是权宜之计——真正的修复是打补丁。.

建议的 WAF 签名和行为检测

因为 libp2p DHT 流量在许多情况下是非 HTTP 的,直接的 WAF 签名检测有限,除非 Node 服务公开 HTTP 端点。尽管如此,在托管环境和代理层中,您可以:

  • 阻止任何与 Node 服务相关的端点的异常大请求负载。.
  • 检测并阻止来自同一远程 IP 或 ASN 的高频连接,目标是 DHT 端口。.
  • 如果通过 HTTP 代理或日志包含此类模式,请匹配已知的 libp2p 握手模式(例如,, multiaddr, , “kad-dht” 字符串)。.
  • 监控 Node 服务使用的特定存储目录的突然增长,并在超过阈值时触发保护措施。.

示例 ModSecurity 风格的伪规则以阻止过大的写入(如果 Node 服务位于 HTTP 代理后面):

SecRequestBodyLimit 131072"

注意:根据正常流量模式调整限制,以避免误报。.

开发者指南 — 如何使用 libp2p/kad-dht 修复代码

如果您维护调用 PUT_VALUE 或存储 DHT 记录的代码,请应用以下最佳实践:

  • 验证记录大小:拒绝或截断超出安全最大值的值(例如,64 KB 或由您的存储容量确定的大小)。.
  • 限制每个键和每个对等体的记录数量。.
  • 强制过期(TTL)和旧记录的垃圾回收。.
  • 如果可能,进行写入的身份验证和授权 — 要求对等体在接受持久写入之前证明其合法性。.
  • 对每个对等体 IP 或每个对等体 ID 限制写入操作的速率。.
  • 使用内容可寻址存储(例如,CID),仅在有效格式匹配时持久化有效负载。.
  • 在磁盘写入之前实施大小和配额检查,并优雅地处理“磁盘已满”(关闭失败)。.

示例 Node 伪代码模式:

async function safePutValue(store, key, value, peerId) {

检测与响应 — 事件处理手册

如果您检测到可疑活动或磁盘耗尽的迹象:

  1. 隔离
    • 立即将 Node 进程从外部网络暴露中移除(iptables 规则,停止服务,移除公共路由)。.
    • 隔离受影响的容器/虚拟机以防止横向移动。.
  2. 保留证据
    • 保存日志(Node 应用日志,系统日志,网络捕获)。.
    • 快照磁盘(如果可能)用于离线分析。.
  3. 停止写入
    • 停止或暂停有问题的节点进程。.
    • 禁用任何面向DHT的端口并恢复防火墙规则。.
  4. 分析
    • 在日志中搜索大量的 PUT_VALUE-类写入或来自同一对等体的重复写入。.
    • 确定用于存储DHT记录的目录并列举可疑文件。.
  5. 清理
    • 删除恶意或过大的记录。.
    • 小心地回收磁盘空间;确保不删除合法数据。.
    • 在打补丁后重建和重新部署节点进程。.
  6. 修补和加固
    • 更新 @libp2p/kad-dht 到16.2.6+。.
    • 从可信的CI重建和重新部署工件,并使用新的锁定文件。.
    • 应用配额和网络限制。.
  7. 事件后行动
    • 如果有任何超出资源耗尽的妥协迹象,请轮换密钥/凭证。.
    • 更新事件日志和根本原因分析。.
    • 与利益相关者沟通,并在适用时与您的托管服务提供商联系。.

需要寻找的取证指标

  • 节点服务存储目录中文件异常快速增长。.
  • 节点应用日志中PUT或写入操作的高计数。.
  • 来自多个临时IP的多个连接针对节点进程。.
  • 系统日志条目:“设备上没有剩余空间”,Node 进程的崩溃/重启循环。.
  • Node 进程的高磁盘 I/O 和 CPU 使用率。.
  • DHT 存储中存在许多随机化的键/记录(大量具有大负载的唯一键)。.

收集这些文物以供您的事件报告和取证使用。.

如何测试您的环境

  • 使用 npm 审计 和依赖扫描器以识别 @libp2p/kad-dht 使用情况和版本。.
  • 在受控实验室中本地模拟攻击以验证缓解措施——生成一个测试 Node DHT 服务器并尝试发送超大 PUT_VALUE 负载。监控配额和保护规则。.
  • 在大规模启用之前测试保护规则和速率限制以防止误报。.
  • 运行集成测试以确保构建管道中的依赖更新不会破坏生产文物。.

命令检查清单:

  • npm ls @libp2p/kad-dht
  • grep -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/container 限制以限制写入和存储。.
  • 可观察性:为 DHT 操作(写入/读取)、按服务的磁盘使用情况以及异常活动的警报对 Node 服务进行指标化。.
  • 供应商和第三方管理:要求第三方插件/主题作者声明并更新 Node 依赖项,如果他们提供 Node 服务。.

常见问题

问:我的 WordPress 网站是纯 PHP,并在没有 Node 进程的 Apache/Nginx 上运行。我安全吗?
答:如果没有您控制的 Node 进程,您不会直接受到影响。但是,请检查您的主机、CDN 或插件提供商是否代表您运行 Node 服务。还要确认构建工件(捆绑的 Node 模块)未在您的生产服务器上执行。.

问:我使用的插件说它“捆绑了一个 Node 辅助工具”。我该怎么办?
答:询问插件供应商他们是否使用 @libp2p/kad-dht 以及哪个版本。如果存在漏洞,请请求或应用包含修补版本的更新。在此期间,如果安全,请隔离或禁用辅助服务。.

问:该漏洞是否允许从 WordPress 网站窃取数据?
答:记录的主要风险是资源耗尽(磁盘填满)。虽然直接数据窃取不是此 CVE 的直接关注点,但磁盘耗尽可能会中断服务、删除或损坏日志,并创造有利于攻击者的条件。对此要认真对待。.

实用的修复检查清单(逐步)

  1. 清单: 识别所有 Node 实例、容器和 CI 运行器。搜索仓库和工件以查找 @libp2p/kad-dht.
  2. 修补: 立即更新到 @libp2p/kad-dht >= 16.2.6。重建镜像、工件并重新部署。.
  3. 隔离: 在验证之前,阻止对 DHT 节点的外部网络访问。强制执行每个进程的磁盘配额和容器存储限制。.
  4. 加固: 为 Node 服务添加速率限制和应用层保护。在可行的情况下,限制允许写入 DHT 存储的对等方。.
  5. 监控: 对磁盘使用峰值和异常写入模式发出警报。关注 DHT 相关端口的流量增加。.
  6. 测试: 验证依赖项和服务是否与修补库正常工作。在受控环境中进行恢复测试。.
  7. 报告: 如果他们的组件受到影响,请通知主机/第三方供应商。记录事件和经验教训。.

最后的话——及时行动的重要性

CVE-2026-45783 之所以优先级高是有原因的:资源耗尽攻击是更大故障的放大器,并且可以通过相对较低的努力触发。对于 WordPress 网站所有者而言,风险通常是间接的——但操作依赖关系意味着间接风险会导致直接故障。最安全的路径是:清点、修补、重建和加固。使用分层防御——网络控制、每个进程的配额、容器限制、应用层保护和监控——在更新通过您的供应链传播时保护您的平台。.

如果您需要帮助审核您的环境以查找 Node 依赖项、设置保护规则或在修补期间实施临时缓解措施,请联系合格的安全顾问或您的内部安全团队。.

— 香港安全专家

0 分享:
你可能也喜欢