OrionProtocol'un Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023 tarihinde saat 15:40'da, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Toplam kayıp yaklaşık 2,9 milyon dolar; bunlardan 2,844,766 USDT Ethereum zincirinde, 191,606 BUSD ise Binance Akıllı Zinciri'nde kaybedildi.
Saldırı Süreci Analizi
Saldırgan, önce özel bir Token sözleşmesi dağıttı ve sonraki saldırı için hazırlık olarak ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token takası yaptı. Takas yolu [USDC, saldırgan Token, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganın Token sözleşmesinde geri çağırma işlevinin bulunması nedeniyle Token.Transfer sürecinde ExchangeWithAtomic.depositAsset yönteminin yeniden çağrılmasıyla reentrancy saldırısı gerçekleştirildi. Bu, depozit miktarının birikmesine yol açtı ve nihayetinde saldırgan çekim işlemiyle kar elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi, bir büyük ticaret platformunun sıcak cüzdan hesabından gelmektedir. Saldırıdan elde edilen 1,651 ETH'nin 657.5'i hala saldırganın cüzdan adresinde, geri kalanı ise karışık hizmet aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın kaynağı, ExchangeWithAtomic sözleşmesindeki doSwapThroughOrionPool fonksiyonu ve onun çağırdığı _doSwapTokens fonksiyonudur. Bu fonksiyonlar, Token transferini gerçekleştirdikten sonra curBalance değişkenini güncellemekte, bu da saldırganlara reentrancy saldırısı yapma fırsatı vermektedir.
Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, transfer sürecinde depositAsset fonksiyonunun yeniden çağrılmasını sağladı. Bu, curBalance değişkeninin hatalı güncellenmesine neden oldu ve saldırgana, flash kredi geri ödendikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekme imkanı verdi.
Güvenlik Önerileri
Token değişim özelliğine sahip projeler için aşağıdaki noktaların dikkate alınması gerekmektedir:
Çeşitli Token ve takas yollarının getirebileceği güvenlik risklerini dikkate alın.
"Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) kodlama modeline uymak, yani önce durum kontrolü yapmak, ardından sözleşme durumunu güncellemek ve son olarak dış sözleşmelerle etkileşimde bulunmak.
Yeniden giriş saldırılarını önlemek için kritik işlemleri gerçekleştirirken yeniden giriş kilidi veya benzeri mekanizmalar kullanın.
Dış çağrılardan dönen değerlerin sıkı bir şekilde kontrol edilmesi ve işlenmesi.
Düzenli olarak kod denetimleri ve güvenlik testleri yapın, tespit edilen açıkları zamanında düzeltin.
Bu önlemleri alarak, proje benzer saldırılara maruz kalma riskini önemli ölçüde azaltabilir, sözleşmenin güvenliğini ve istikrarını artırabilir.
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.
15 Likes
Reward
15
4
Share
Comment
0/400
CryptoSurvivor
· 07-09 04:25
Tamam, bir başka kanserli tümör daha.
View OriginalReply0
GateUser-5854de8b
· 07-06 19:22
Ah, yine Klip Kuponlar ile kandırıldım.
View OriginalReply0
SurvivorshipBias
· 07-06 19:21
Yine bir sözleşme açığı işte...
View OriginalReply0
CoconutWaterBoy
· 07-06 19:08
Kod denetimi yapılmadığı için kaybetmeyi hak ediyor.
OrionProtocol yeniden giriş saldırısına uğradı, kayıplar yaklaşık 2.9 milyon dolar.
OrionProtocol'un Reentrancy Saldırısı Olayı Analizi
2 Şubat 2023 tarihinde saat 15:40'da, Ethereum ve Binance Akıllı Zinciri üzerindeki OrionProtocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı. Toplam kayıp yaklaşık 2,9 milyon dolar; bunlardan 2,844,766 USDT Ethereum zincirinde, 191,606 BUSD ise Binance Akıllı Zinciri'nde kaybedildi.
Saldırı Süreci Analizi
Saldırgan, önce özel bir Token sözleşmesi dağıttı ve sonraki saldırı için hazırlık olarak ilgili transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan UNI-V2'nin swap yöntemini kullanarak borç aldı ve ExchangeWithAtomic sözleşmesinin swapThroughOrionPool yöntemini çağırarak token takası yaptı. Takas yolu [USDC, saldırgan Token, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganın Token sözleşmesinde geri çağırma işlevinin bulunması nedeniyle Token.Transfer sürecinde ExchangeWithAtomic.depositAsset yönteminin yeniden çağrılmasıyla reentrancy saldırısı gerçekleştirildi. Bu, depozit miktarının birikmesine yol açtı ve nihayetinde saldırgan çekim işlemiyle kar elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi, bir büyük ticaret platformunun sıcak cüzdan hesabından gelmektedir. Saldırıdan elde edilen 1,651 ETH'nin 657.5'i hala saldırganın cüzdan adresinde, geri kalanı ise karışık hizmet aracılığıyla transfer edilmiştir.
Açık Analizi
Açığın kaynağı, ExchangeWithAtomic sözleşmesindeki doSwapThroughOrionPool fonksiyonu ve onun çağırdığı _doSwapTokens fonksiyonudur. Bu fonksiyonlar, Token transferini gerçekleştirdikten sonra curBalance değişkenini güncellemekte, bu da saldırganlara reentrancy saldırısı yapma fırsatı vermektedir.
Saldırgan, özel Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek, transfer sürecinde depositAsset fonksiyonunun yeniden çağrılmasını sağladı. Bu, curBalance değişkeninin hatalı güncellenmesine neden oldu ve saldırgana, flash kredi geri ödendikten sonra withdraw fonksiyonu aracılığıyla fazla fonları çekme imkanı verdi.
Güvenlik Önerileri
Token değişim özelliğine sahip projeler için aşağıdaki noktaların dikkate alınması gerekmektedir:
Bu önlemleri alarak, proje benzer saldırılara maruz kalma riskini önemli ölçüde azaltabilir, sözleşmenin güvenliğini ve istikrarını artırabilir.