Bu saldırı, bir tür dönüşüm sürecindeki veri kesilmesiyle kendini gösteren klasik bir tam sayı taşma sorununun ortaya çıktığını göstermektedir.
Teknik detayların analizi:
1) Açık Nokta Tespiti: Sorun, get_amount_by_liquidity fonksiyonunun tür dönüşüm mekanizmasında, u256'dan u64'e zorunlu dönüşümün yüksek basamak verilerinin kaybına neden olmasıdır.
2) Saldırı Süreci:
1. Saldırgan, add_liquidity fonksiyonuna büyük bir likidite miktarı parametresi geçirir; 2、系统调用get_delta_b函数计算所需的B代币数量; 3. Hesaplama sürecinde, iki u128 türündeki veri çarpıldığında, teorik sonuç u256 türünde olmalıdır;
Ana kusur: Fonksiyon dönerken u256 sonucunun u64'e zorla dönüştürülmesi, yüksek 128 bitlik verinin kesilmesine neden oluyor.
3) Kullanım Etkisi: Önceden büyük miktarda token gerektiren likidite miktarını, şimdi yalnızca çok az miktarda token ile tamamlamak mümkün. Saldırganlar, çok düşük maliyetle büyük miktarda likidite payı elde eder ve ardından likiditenin bir kısmını yok ederek fon havuzundan arbitraj yaparlar.
此外,这次安全事件与Sui的共识机制、交易处理、状态管理等核心底层功能完全无关。 Sui Network只是忠实执行了Cetus协议提交的交易指令,漏洞源于应用层协议本身的逻辑缺陷。
Açıkça söylemek gerekirse, ne kadar gelişmiş bir programlama dili olursa olsun, uygulama katmanındaki mantık hatalarını tamamen ortadan kaldıramaz. Move, çoğu alt düzey güvenlik riskini önleyebilse de, geliştiricilerin iş mantığının sınır kontrollerini ve matematik işlemlerinin taşma korumasını yapmasının yerini alamaz.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Bu saldırı, bir tür dönüşüm sürecindeki veri kesilmesiyle kendini gösteren klasik bir tam sayı taşma sorununun ortaya çıktığını göstermektedir.
Teknik detayların analizi:
1) Açık Nokta Tespiti: Sorun, get_amount_by_liquidity fonksiyonunun tür dönüşüm mekanizmasında, u256'dan u64'e zorunlu dönüşümün yüksek basamak verilerinin kaybına neden olmasıdır.
2) Saldırı Süreci:
1. Saldırgan, add_liquidity fonksiyonuna büyük bir likidite miktarı parametresi geçirir;
2、系统调用get_delta_b函数计算所需的B代币数量;
3. Hesaplama sürecinde, iki u128 türündeki veri çarpıldığında, teorik sonuç u256 türünde olmalıdır;
Ana kusur: Fonksiyon dönerken u256 sonucunun u64'e zorla dönüştürülmesi, yüksek 128 bitlik verinin kesilmesine neden oluyor.
3) Kullanım Etkisi: Önceden büyük miktarda token gerektiren likidite miktarını, şimdi yalnızca çok az miktarda token ile tamamlamak mümkün. Saldırganlar, çok düşük maliyetle büyük miktarda likidite payı elde eder ve ardından likiditenin bir kısmını yok ederek fon havuzundan arbitraj yaparlar.
简单类比:就像用只能显示8位数的计算器计算10亿×10亿,20位的计算结果只能显示后8位,前12位直接消失。 攻击者正是利用了这种"计算精度缺少"vulnerability。
Move语言在资源管理和类型安全方面确实具备显有优势,能够有效防范双重支付、资源泄露等底层安全问题。 但此次Cetus协议出现的是应用逻辑层面的数学计算错误,并非Move语言本身的设计缺陷。
具体而言,Move的类型系统虽然严格,但对于显式类型转换(explicit casting)操作,仍需依赖开发者的正确判断。 当程序主动执行u256到u64的类型转换时,编译器无法判断这是有意设计还是逻辑错误。
此外,这次安全事件与Sui的共识机制、交易处理、状态管理等核心底层功能完全无关。 Sui Network只是忠实执行了Cetus协议提交的交易指令,漏洞源于应用层协议本身的逻辑缺陷。
Açıkça söylemek gerekirse, ne kadar gelişmiş bir programlama dili olursa olsun, uygulama katmanındaki mantık hatalarını tamamen ortadan kaldıramaz. Move, çoğu alt düzey güvenlik riskini önleyebilse de, geliştiricilerin iş mantığının sınır kontrollerini ve matematik işlemlerinin taşma korumasını yapmasının yerini alamaz.