| 插件名称 | @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 环境相关的利用场景
- 共享主机: 一个主机运行着一个基于 Node 的服务,供多个客户使用。攻击者向该服务发送大量记录,
PUT_VALUE导致磁盘耗尽和多个租户(包括 WordPress 网站)停机。. - 插件或主题捆绑的 Node 微服务: 一个插件捆绑了一个辅助 Node 服务(图像优化、实时聊天)。如果它使用
@libp2p/kad-dht<16.2.6,攻击者可以导致容器或虚拟机磁盘耗尽或崩溃。. - CI/CD 或开发工具: 一个暴露在互联网上的 CI 运行器或开发机器运行一个 DHT 节点。磁盘填满,构建工件丢失;部署停滞。.
- 无头前端: 一个无头 WordPress 前端依赖于 Node 服务器进行 SSR 或同步。如果 Node 服务器被禁用,前端可能会变得不可用,即使 PHP 后端仍然存在。.
- 横向移动和持久性: 磁盘耗尽可能被用作分散注意力或破坏日志/监控,帮助进一步攻击 WordPress 组件。.
如何查找您是否受到影响
第一步 — 搜索您的代码库和工件
- 在仓库文件和锁定文件中搜索该包:
grep -R "@libp2p/kad-dht" .npm ls @libp2p/kad-dht || trueyarn why @libp2p/kad-dht || true
- 检查
package-lock.json/yarn.lock查找版本 < 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 去重并重建锁定文件。.
- 无论何处
- 重建工件
- 重建并重新部署包含 Node 模块的前端包、Docker 镜像和服务器工件。.
- 替换注册表中的图像并重新部署容器或 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 阻止(根据需要替换)
# 阻止对 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) {
检测与响应 — 事件处理手册
如果您检测到可疑活动或磁盘耗尽的迹象:
- 隔离
- 立即将 Node 进程从外部网络暴露中移除(iptables 规则,停止服务,移除公共路由)。.
- 隔离受影响的容器/虚拟机以防止横向移动。.
- 保留证据
- 保存日志(Node 应用日志,系统日志,网络捕获)。.
- 快照磁盘(如果可能)用于离线分析。.
- 停止写入
- 停止或暂停有问题的节点进程。.
- 禁用任何面向DHT的端口并恢复防火墙规则。.
- 分析
- 在日志中搜索大量的
PUT_VALUE-类写入或来自同一对等体的重复写入。. - 确定用于存储DHT记录的目录并列举可疑文件。.
- 在日志中搜索大量的
- 清理
- 删除恶意或过大的记录。.
- 小心地回收磁盘空间;确保不删除合法数据。.
- 在打补丁后重建和重新部署节点进程。.
- 修补和加固
- 更新
@libp2p/kad-dht到16.2.6+。. - 从可信的CI重建和重新部署工件,并使用新的锁定文件。.
- 应用配额和网络限制。.
- 更新
- 事件后行动
- 如果有任何超出资源耗尽的妥协迹象,请轮换密钥/凭证。.
- 更新事件日志和根本原因分析。.
- 与利益相关者沟通,并在适用时与您的托管服务提供商联系。.
需要寻找的取证指标
- 节点服务存储目录中文件异常快速增长。.
- 节点应用日志中PUT或写入操作的高计数。.
- 来自多个临时IP的多个连接针对节点进程。.
- 系统日志条目:“设备上没有剩余空间”,Node 进程的崩溃/重启循环。.
- Node 进程的高磁盘 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/container 限制以限制写入和存储。.
- 可观察性:为 DHT 操作(写入/读取)、按服务的磁盘使用情况以及异常活动的警报对 Node 服务进行指标化。.
- 供应商和第三方管理:要求第三方插件/主题作者声明并更新 Node 依赖项,如果他们提供 Node 服务。.
常见问题
问:我的 WordPress 网站是纯 PHP,并在没有 Node 进程的 Apache/Nginx 上运行。我安全吗?
答:如果没有您控制的 Node 进程,您不会直接受到影响。但是,请检查您的主机、CDN 或插件提供商是否代表您运行 Node 服务。还要确认构建工件(捆绑的 Node 模块)未在您的生产服务器上执行。.
问:我使用的插件说它“捆绑了一个 Node 辅助工具”。我该怎么办?
答:询问插件供应商他们是否使用 @libp2p/kad-dht 以及哪个版本。如果存在漏洞,请请求或应用包含修补版本的更新。在此期间,如果安全,请隔离或禁用辅助服务。.
问:该漏洞是否允许从 WordPress 网站窃取数据?
答:记录的主要风险是资源耗尽(磁盘填满)。虽然直接数据窃取不是此 CVE 的直接关注点,但磁盘耗尽可能会中断服务、删除或损坏日志,并创造有利于攻击者的条件。对此要认真对待。.
实用的修复检查清单(逐步)
- 清单: 识别所有 Node 实例、容器和 CI 运行器。搜索仓库和工件以查找
@libp2p/kad-dht. - 修补: 立即更新到
@libp2p/kad-dht>= 16.2.6。重建镜像、工件并重新部署。. - 隔离: 在验证之前,阻止对 DHT 节点的外部网络访问。强制执行每个进程的磁盘配额和容器存储限制。.
- 加固: 为 Node 服务添加速率限制和应用层保护。在可行的情况下,限制允许写入 DHT 存储的对等方。.
- 监控: 对磁盘使用峰值和异常写入模式发出警报。关注 DHT 相关端口的流量增加。.
- 测试: 验证依赖项和服务是否与修补库正常工作。在受控环境中进行恢复测试。.
- 报告: 如果他们的组件受到影响,请通知主机/第三方供应商。记录事件和经验教训。.
最后的话——及时行动的重要性
CVE-2026-45783 之所以优先级高是有原因的:资源耗尽攻击是更大故障的放大器,并且可以通过相对较低的努力触发。对于 WordPress 网站所有者而言,风险通常是间接的——但操作依赖关系意味着间接风险会导致直接故障。最安全的路径是:清点、修补、重建和加固。使用分层防御——网络控制、每个进程的配额、容器限制、应用层保护和监控——在更新通过您的供应链传播时保护您的平台。.
如果您需要帮助审核您的环境以查找 Node 依赖项、设置保护规则或在修补期间实施临时缓解措施,请联系合格的安全顾问或您的内部安全团队。.
— 香港安全专家