今回の攻撃が明らかにしたのは、典型的な整数オーバーフローの問題であり、具体的には型変換の過程におけるデータの切り捨てとして現れます。
技术细节拆解:
1)漏洞定位:问题出现在get_amount_by_liquidity函数的类型转换机制中,从u256到u64的强制转换导致高位数据丢失。
2)攻撃プロセス:
1、攻撃者はadd_liquidity関数を通じて非常に大きな流動性の数量パラメータを渡します;
2、システムはget_delta_b関数を呼び出して必要なBトークンの数量を計算します。
3、計算過程において、2つのu128型データを掛け算すると、理論的な結果はu256型であるべきです;
关键缺陷:函数返回时将u256结果强制转换为u64,导致高位128位数据被截断。
3)利用效果:原需要大量代币才能铸造的流动性额度,现在仅需极少量代币即可完成。 攻击者以极低価格获得巨人额流动性份额,随后通过销毁部分流动性实现资金池套利。
シンプルなアナロジー:8桁の数字しか表示できない電卓で10億×10億を計算するようなもので、20桁の計算結果は後ろの8桁しか表示できず、前の12桁は直接消えてしまいます。攻撃者はこの「計算精度の欠如」の脆弱性を利用しています。
Move语言在资源管理和类型安全方面确实具备显有优势,能够有效防范双重支付、资源泄露等底层安全问题。 但此次Cetus协议出现的是应
原文表示