OrionProtocol'un yeniden giriş saldırısı olayı analizi
2 Şubat 2023 öğleden sonra, Ethereum ve Binance Akıllı Zincir üzerindeki Orion Protocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve toplamda yaklaşık 2,9 milyon dolarlık kripto varlık kaybı yaşandı. Bu kayıplar arasında Ethereum üzerindeki 2,844,766 USDT ve Binance Akıllı Zincir üzerindeki 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan, önce özel bir Token sözleşmesi dağıttı ve sonraki saldırı için gerekli transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan bir DEX'in swap fonksiyonu aracılığıyla borç aldı ve OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini kullanarak token değişimi gerçekleştirdi. Değişim yolu [USDC, saldırganToken, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganın Token sözleşmesi transfer fonksiyonunu kullanarak ExchangeWithAtomic.depositAsset yöntemini geri arayarak tekrar giriş saldırısı gerçekleştirdi. Bu, depozito miktarının tekrar tekrar hesaplanmasına yol açtı ve saldırgan daha sonra çekim işlemleriyle aşırı kar elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırının kazancı olan 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde kalmış, geri kalan kısmı ise karışık hizmetler aracılığıyla transfer edilmiştir.
Açık Analizi
Kritik açık doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında bulunmaktadır. Ana sorun, sözleşmenin transfer işlemini gerçekleştirdikten sonra curBalance değişkenini güncellemesidir; bu da yeniden giriş saldırılarına zemin hazırlar. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek depositAsset fonksiyonunun tekrar tekrar çağrılmasına neden olur ve bu da curBalance'ın yanlış bir şekilde güncellenmesine yol açar.
Önleme Önerileri
Durum değişkenlerinin güncellenmesinin dış çağrılardan önce geldiğinden emin olmak için "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modelini izleyin.
Yeniden giriş kilidi uygulayın, fonksiyonun yürütülmesi sırasında tekrar çağrılmasını önleyin.
Çeşitli Token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini kapsamlı bir şekilde değerlendirin.
Özellikle fon transferi işlemleriyle ilgili olanlar için dış çağrılara yönelik kısıtlamaları ve izlemeyi güçlendirin.
Düzenli güvenlik denetimleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Bu olay, akıllı sözleşmeler geliştirilirken güvenlik kodlama standartlarına sıkı bir şekilde uyulmasının önemini bir kez daha vurgulamaktadır. Proje sahipleri, sözleşme güvenliğine sürekli olarak dikkat etmeli ve saldırı riskini en aza indirmek için çoklu koruma önlemleri almalıdır.
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.
OrionProtocol yeniden giriş saldırısına uğradı, 2.9 milyon dolar şifreleme varlığı kaybetti.
OrionProtocol'un yeniden giriş saldırısı olayı analizi
2 Şubat 2023 öğleden sonra, Ethereum ve Binance Akıllı Zincir üzerindeki Orion Protocol, sözleşme açığı nedeniyle yeniden giriş saldırısına uğradı ve toplamda yaklaşık 2,9 milyon dolarlık kripto varlık kaybı yaşandı. Bu kayıplar arasında Ethereum üzerindeki 2,844,766 USDT ve Binance Akıllı Zincir üzerindeki 191,606 BUSD bulunmaktadır.
Saldırı Süreci Analizi
Saldırgan, önce özel bir Token sözleşmesi dağıttı ve sonraki saldırı için gerekli transfer ve yetkilendirme işlemlerini gerçekleştirdi. Ardından, saldırgan bir DEX'in swap fonksiyonu aracılığıyla borç aldı ve OrionProtocol'ün ExchangeWithAtomic.swapThroughOrionPool yöntemini kullanarak token değişimi gerçekleştirdi. Değişim yolu [USDC, saldırganToken, USDT] olarak ayarlandı.
Değişim sürecinde, saldırganın Token sözleşmesi transfer fonksiyonunu kullanarak ExchangeWithAtomic.depositAsset yöntemini geri arayarak tekrar giriş saldırısı gerçekleştirdi. Bu, depozito miktarının tekrar tekrar hesaplanmasına yol açtı ve saldırgan daha sonra çekim işlemleriyle aşırı kar elde etti.
Fon Akışı
Saldırganın başlangıç sermayesi bir ticaret platformunun sıcak cüzdanından gelmektedir. Saldırının kazancı olan 1,651 ETH'nin 657.5 ETH'si hala saldırganın cüzdan adresinde kalmış, geri kalan kısmı ise karışık hizmetler aracılığıyla transfer edilmiştir.
Açık Analizi
Kritik açık doSwapThroughOrionPool ve _doSwapTokens fonksiyonlarında bulunmaktadır. Ana sorun, sözleşmenin transfer işlemini gerçekleştirdikten sonra curBalance değişkenini güncellemesidir; bu da yeniden giriş saldırılarına zemin hazırlar. Saldırgan, özelleştirilmiş Token'ın transfer fonksiyonuna geri çağırma mantığı ekleyerek depositAsset fonksiyonunun tekrar tekrar çağrılmasına neden olur ve bu da curBalance'ın yanlış bir şekilde güncellenmesine yol açar.
Önleme Önerileri
Durum değişkenlerinin güncellenmesinin dış çağrılardan önce geldiğinden emin olmak için "Kontroller-Etkiler-Etkileşimler" (Checks-Effects-Interactions) modelini izleyin.
Yeniden giriş kilidi uygulayın, fonksiyonun yürütülmesi sırasında tekrar çağrılmasını önleyin.
Çeşitli Token türlerinin ve değişim yollarının getirebileceği güvenlik risklerini kapsamlı bir şekilde değerlendirin.
Özellikle fon transferi işlemleriyle ilgili olanlar için dış çağrılara yönelik kısıtlamaları ve izlemeyi güçlendirin.
Düzenli güvenlik denetimleri yaparak potansiyel açıkları zamanında tespit edip düzeltin.
Bu olay, akıllı sözleşmeler geliştirilirken güvenlik kodlama standartlarına sıkı bir şekilde uyulmasının önemini bir kez daha vurgulamaktadır. Proje sahipleri, sözleşme güvenliğine sürekli olarak dikkat etmeli ve saldırı riskini en aza indirmek için çoklu koruma önlemleri almalıdır.