慢雾拆 Liquid:近四千 L-BTC 是空铸的,不是 peg-in 进来的
慢雾把 9 月 6 日这笔拆开了:攻击者没做 peg-in,空铸了约 3998.5 L-BTC,几分钟就 peg-out 成主网 BTC。后来还了约 3400,手里还捏着约 598.5——金额上周就写过,新料是「怎么铸出来的」。
根因在 Elements 的 Rangeproof 验证缓存:多个可变长字段拼缓存键时没加长度前缀,不同参数组合能撞到同一个「已通过」结果,节点直接跳过 secp256k1_rangeproof_verify 和最小金额检查。先塞合法证明把缓存喂热,再交一份撞键的假输出,无抵押铸造成了。
桥停着、还回来一大半,不等于机密交易的验证缓存已经无坑。缓存键本身就是共识原语,边界没钉死就等于留门。
慢雾把 9 月 6 日这笔拆开了:攻击者没做 peg-in,空铸了约 3998.5 L-BTC,几分钟就 peg-out 成主网 BTC。后来还了约 3400,手里还捏着约 598.5——金额上周就写过,新料是「怎么铸出来的」。
根因在 Elements 的 Rangeproof 验证缓存:多个可变长字段拼缓存键时没加长度前缀,不同参数组合能撞到同一个「已通过」结果,节点直接跳过 secp256k1_rangeproof_verify 和最小金额检查。先塞合法证明把缓存喂热,再交一份撞键的假输出,无抵押铸造成了。
桥停着、还回来一大半,不等于机密交易的验证缓存已经无坑。缓存键本身就是共识原语,边界没钉死就等于留门。
