Kasım 2020'de, Loopring'in LRC Protokol Ücreti Kasasındaki kritik bir güvenlik açığı, saldırganların erişim kontrolü zayıflıklarını istismar etmesine ve flaş kredi saldırıları yoluyla token fiyatlarını manipüle etmesine olanak tanıdı. Bu olay, maliyetli istismarları önlemek için güçlü erişim kontrolünün ve sürekli DeFi güvenlik izlemenin önemini vurgulamaktadır.
Loopring (LRC) Protokol Olayına Giriş
2020'nin sonlarında, Pickle Finance ve 88mph dahil olmak üzere birçok Ethereum tabanlı DeFi platformu güvenlik olayları yaşadı. Bu tür güvenlik açıklarını tespit etmek için BlockSec, olağandışı büyük işlem oranı farklılıklarını ve aynı harici sahipli hesap (EOA) tarafından tutarlı Ether kazanımlarını içeren şüpheli işlemleri tespit eden ThunderForecast sistemini geliştirdi.
EthScope sistemimizi kullanarak bu işlemleri analiz ettik ve Loopring'in kasa protokolündeki, özellikle LRC Protokol Ücreti Kasasındaki (LRCPFV) bir güvenlik açığını hedef alan bir istismar keşfettik. Bu blog yazısı, saldırıyı, etkisini ve DeFi güvenlik topluluğu için çıkarılan dersleri ayrıntılı olarak ele almaktadır.
LRC Protokol Ücreti Kasasına Genel Bakış
Loopring, Ethereum üzerinde açık kaynaklı bir merkezi olmayan borsa (DEX) protokolüdür. Yerel token'ı LRC (ERC-20), ekosistem içinde kullanılmaktadır. LRC Protokol Ücreti Kasası (LRCPFV) olarak bilinen Loopring'in kasa protokolü, protokol ücretlerini depolar ve ücretlerin LRC token'larına dönüştürülmesine olanak tanır.
LRCPFV'deki güvenlik açığı bulunan fonksiyon, herkesin çağırabilmesine izin vererek token'ları uygun erişim kontrolü olmaksızın LRC ile takas etmeyi mümkün kılan sellTokenForLRC fonksiyonudur.
function sellTokenForLRC(
address token,
uint amount
)
external
nonReentrant
{
require(amount > 0, "ZERO_AMOUNT");
require(token != lrcAddress, "PROHIBITED");
address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;
if (token == address(0)) {
recipient.sendETHAndVerify(amount, gasleft());
} else {
token.safeTransferAndVerify(recipient, amount);
}
require(
tokenSellerAddress == address(0) ||
ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
"SELL_FAILURE"
);
emit TokenSold(token, amount);
}
Bu fonksiyon erişim kontrolünden yoksun olduğundan, saldırganlar token fiyatlarını manipüle etmek ve arbitraj fırsatlarından kâr elde etmek için onu tekrar tekrar çağırabildi.
Saldırının Ayrıntıları
Temsili bir saldırı işlemini analiz ettik: 0x00b2c.... Saldırı altı temel adımı kapsıyordu:

- Flaş Kredi: Bir flaş kredi sağlayıcısından (
0xEB7e...) 3.773,88 ETH ödünç alındı. - İlk Takas: Uniswap V1-LRC'de 1 ETH = 1,32878 LRC kuru üzerinden 3.773,88 ETH, 5.014,68 LRC'ye dönüştürüldü.
- Ücret Kasası Takası: LRCPFV'de depolanan 0,231 ETH ücreti, güvenlik açığı bulunan
sellTokenForLRCfonksiyonu çağrılarak 0,000219 LRC ile takas edildi. Bu yetkisiz çağrı, Uniswap'taki LRC fiyatını manipüle ederek ETH karşısındaki değerini çarpıcı biçimde artırdı (1 ETH = 0,00094 LRC). - Kârlı Takas: 5.014,68 LRC, Uniswap V1-LRC'de 3.774,09 ETH'ye geri dönüştürüldü; manipüle edilmiş fiyat sayesinde ekstra 0,215 ETH kazanıldı.
- Kredi Geri Ödemesi: 3.773,88 ETH'lik flaş kredi iade edildi.
- Kâr Transferi: 0,215 ETH kâr, saldırganın EOA'sına gönderildi.
Bu istismar, kasanın erişim kontrolü eksikliğiyle birleştirilen bir flaş kredi saldırısını ve fiyat manipülasyonunu kullandı.
Saldırının Etkisi ve Boyutu
Analiz edilen işlem 13 Ekim 2020'de gerçekleşti. CoinGecko verilerine göre, o tarihte LRC fiyatı yaklaşık 0,0005175 ETH idi.
Soruşturmamız şunları ortaya koydu:
- Kötü Amaçlı Sözleşmeler: Saldırgan tarafından dağıtılan 3 sözleşme (
0xa896...,0x414a...,0xd91d...). - Saldırı Hacmi: LRCPFV'nin dağıtıldığı 9.644.449. bloktan bu yana saldırganın EOA'sı (
0x81e8...) tarafından başlatılan 90 işlem. - Maksimum Kâr: Bir işlem (
0x33eab...) 9,89 ETH kâr sağladı. - Toplam Kâr: Yaklaşık 80,97 ETH (~48.849 USD, 1 Ekim 2020 itibarıyla).
Temel neden, sellTokenForLRC fonksiyonundaki eksik erişim kontrolüydü ve bu durum tekrarlanan istismara zemin hazırladı.
Çıkarılan Dersler ve Sonuç
Ethereum DeFi ekosistemi büyüdükçe, erişim kontrolü güvenlik açıkları gibi güvenlik sorunları giderek daha kritik hale gelmektedir. Yüksek profilli saldırılar çoğunlukla ilgi çekse de, bu olayın da gösterdiği gibi daha az göze çarpan güvenlik açıkları önemli mali kayıplara yol açabilir.
Loopring, bu istismar nedeniyle yaklaşık 80,97 ETH kaybetti; bu durum, titiz akıllı sözleşme denetimlerinin ve sürekli güvenlik izlemenin gerekliliğini bir kez daha ortaya koymaktadır.
DeFi protokolleri için katı erişim kontrolü uygulamak, BlockSec'in Akıllı Sözleşme Denetimi ve Phalcon Security gibi araçlardan yararlanmak ve proaktif risk yönetimi, dijital varlıkları korumak için vazgeçilmezdir.
Olayın Zaman Çizelgesi
- 2020/11/30: ThunderForecast tarafından şüpheli işlemler tespit edildi.
- 2020/12/01: EthScope kullanılarak ayrıntılı analiz tamamlandı.
- 2020/12/02: Güvenlik açığı Loopring ekibine bildirildi.
- 2020/12/03: Güvenlik açığı doğrulandı; düzeltme uygulandı.
- 2020/12/03: Olay ayrıntıları kamuoyuyla paylaşıldı.
- 2021/01/03: Güvenlik açığına CVE-2020-35962 atandı.



