Geçtiğimiz hafta (2026/10/05 - 2026/10/11), tahmini toplam kaybı yaklaşık 542 bin ABD doları olan 1 güvenlik olayı gözlemledik.
| Tarih | Olay | Tür | Tahmini Kayıp |
|---|---|---|---|
| 2026/10/06 | MakerDaoBot | Erişim Kontrolü Eksikliği | ~542 bin ABD doları |
Ücretsiz Güvenlik Taraması
Kendi geliştirdiğimiz otomatik analiz motoruyla hızlı bir güvenlik kontrolü.
Ücretsiz tarayınHaftanın Öne Çıkan Olayı: MakerDaoBot
6 Ekim 2026'da bir saldırgan, Ethereum üzerindeki eski bir MakerDAO likidasyon botu olan MakerDaoBot'taki erişim kontrolü eksikliğinden yararlanarak yaklaşık 542 bin ABD doları değerinde 200 ETH çekti. Güvenlik açığı bulunan işlev, herhangi bir çağırıcının harici bir sözleşme belirtmesine, bu sözleşmeye botun bakiyeleri üzerinde kontrol vermesine ve kodunu çalıştırmasına olanak tanıyordu. Saldırgan bu yolu kullanarak dört eski teminat açık artırmasını sonuçlandırdı ve serbest bırakılan ETH miktarını tek bir işlemde transfer etti.
Arka Plan
MakerDaoBot, eski likidasyon sisteminin kullandığı teminat açık artırması sözleşmesi Flipper aracılığıyla MakerDAO'nun eski ETH-A teminat açık artırmalarına katılıyordu. Bot, Vat izinlerini yönetiyor, ETH ve DAI yatırıp çekiyor ve likidasyon görevlerini işliyordu.
Vat, MakerDAO'nun dahili defteridir. Her adresin teminat türüne göre serbest teminatını gem[ilk][address] içinde, dahili DAI bakiyesini ise dai[address] içinde kaydeder; ayrı bir cüzdan veya hesap sözleşmesi yoktur. Dolayısıyla MakerDaoBot'un Vat bakiyeleri, bot sözleşmesinin kendi adresi altında kayıtlı defter girdileridir.
hope(usr) çağrısı bu bakiyeleri transfer etmez. can[msg.sender][usr] değerini 1 olarak ayarlayarak usr adresinin Vat'ın wish() izin denetiminden geçmesini ve msg.sender altında kayıtlı bakiyeler üzerinde işlem yapmasını sağlar. flux() ve move() gibi işlevler, dahili teminat veya DAI transfer ederken bu denetimi kullanır.
mapping(address => mapping (address => uint)) public can;
function hope(address usr) external note { can[msg.sender][usr] = 1; }
function nope(address usr) external note { can[msg.sender][usr] = 0; }
function wish(address bit, address usr) internal view returns (bool) {
return either(bit == usr, can[bit][usr] == 1);
}
mapping (bytes32 => mapping (address => uint)) public gem; // [wad]
mapping (address => uint256) public dai; // [rad]
function flux(bytes32 ilk, address src, address dst, uint256 wad) external note {
require(wish(src, msg.sender), "Vat/not-allowed");
gem[ilk][src] = sub(gem[ilk][src], wad);
gem[ilk][dst] = add(gem[ilk][dst], wad);
}
function move(address src, address dst, uint256 rad) external note {
require(wish(src, msg.sender), "Vat/not-allowed");
dai[src] = sub(dai[src], rad);
dai[dst] = add(dai[dst], rad);
}
Güvenlik Açığı Analizi
Temel neden, 0x6839...5546 adresindeki MakerDaoBot sözleşmesinin 0x8804d1de() işlevinde erişim kontrolünün bulunmamasıydı. İşlev, varg0 değerini harici bir sözleşme adresi olarak ele alıyor (aşağıda adaptör olarak anılıyor) ve bu adreste drip(), vat() ve daha sonra join() çağrılarını yapıyordu. Bot, Vat adresini vat() aracılığıyla aldıktan sonra adaptörün kendi Vat bakiyeleri üzerinde işlem yapıp yapamayacağını kontrol ediyordu. Yapamıyorsa izin vermek için hope(varg0) çağrısını yapıyor, ardından aynı adaptörün join() işlevini çağırıyordu.

Aynı sözleşmedeki diğer ayrıcalıklı giriş noktaları, işlemlerini gerçekleştirmeden önce bir ds-auth denetimi kullanıyordu. Aşağıdaki karşılaştırma, korumalı iki giriş noktasının bir bytes4 seçicisini ve msg.sender değerini yetkilendirme yardımcı işlevine ilettiğini, ardından denetim başarısız olduğunda ds-auth-unauthorized hatasıyla işlemi geri aldığını gösteriyor. 0x8804d1de() işlevinde eşdeğer bir çağırıcı denetimi yoktu.

Bu nedenle 0x8804d1de() işlevi, herhangi bir çağırıcının Vat izni verilecek adresi seçmesine olanak tanıyordu. Bot, hope() aracılığıyla bu adrese izin veriyor ve hemen ardından adresin join() işlevini çağırıyordu. Yetki devri bu harici çağrı sırasında etkin kaldığından, seçilen adresteki kod botun dahili teminat ve DAI bakiyeleri üzerinde işlem yapabiliyordu.
Saldırı Analizi
Aşağıdaki analiz, 0xbb6940...f3a88c işlemine dayanmaktadır.
- Adım 1: Saldırganın harici hesabı (EOA), saldırganın dağıttığı bir saldırı sözleşmesini çağırdı. Bu sözleşme kötü amaçlı bir adaptör dağıttı, ardından adaptörün adresiyle MakerDaoBot'un
0x8804d1de()işlevini çağırdı. Bot, Vat'ıncaneşlemesinde mevcut bir yetki devri bulamayıncahope()çağrısını yaparak adaptörün botun adresi altında kayıtlı bakiyeler üzerinde işlem yapmasına izin verdi.

- Adım 2: MakerDaoBot, adaptörün
join()işlevini çağırdı. Yetki devri etkinken kötü amaçlı kod, kullanımdan kaldırılmışETH-AFlipper üzerindedeal(uint256 id)çağrısı yaparak 1457, 1458, 1459 ve 1460 numaralı açık artırmaları sonuçlandırdı. Adaptör daha sonra Vat iznini kullanarak 200 birimETH-Ateminatını MakerDaoBot'tan kendisine aktardı, ETH Join üzerinden çekerek 200WETHaldı ve tokenları saldırı sözleşmesine transfer etti.

- Adım 3: Saldırı sözleşmesi 200
WETHtokenınıETH'ye dönüştürdü ve o sırada yaklaşık 542 bin ABD doları değerinde olan 200ETH'yi saldırganın harici hesabına gönderdi.

Phalcon Explorer'ı Kullanmaya Başlayın
Bilinçli Kararlar Vermek İçin İşlemleri Derinlemesine İnceleyin
Şimdi ücretsiz deneyinSonuç
Temel neden, MakerDAO'nun Vat izin sistemindeki bir kusur değil, MakerDaoBot'taki erişim kontrolü eksikliğiydi. Herkese açık bir işlev, herhangi bir çağırıcının harici bir sözleşme seçmesine, bu sözleşmeye botun dahili bakiyeleri üzerinde kontrol vermesine ve kodunu çalıştırmasına olanak tanıyordu. Saldırgan bu yolu kullanarak dört eski açık artırmayı sonuçlandırdı ve 200 ETH çekti.
Varlıklar üzerinde kontrol yetkisi devreden her işlev, hem işlemi kimin başlatabileceğini hem de hangi harici sözleşmelerin bu yetkiyi alabileceğini kısıtlamalıdır. Hassas entegrasyon yolları, diğer ayrıcalıklı işlevlerle aynı yetkilendirme kontrollerini uygulamalı ve yalnızca açıkça onaylanmış sözleşmeleri kabul etmelidir.
Web3 için En İyi Güvenlik Denetçisi
Yayına almadan önce tasarımı, kodu ve iş mantığını doğrulayın
BlockSec Hakkında
BlockSec, uçtan uca blokzincir güvenliği ve kripto uyum hizmetleri sağlayıcısıdır. Protokol ve platformların tüm yaşam döngüsü boyunca müşterilerin kod denetimi (akıllı sözleşmeler, blokzincirler ve cüzdanlar dâhil) yapmasına, saldırıları gerçek zamanlı olarak durdurmasına, olayları analiz etmesine, yasa dışı fonları izlemesine ve AML/CFT yükümlülüklerini yerine getirmesine yardımcı olan ürünler ve hizmetler geliştiriyoruz.
BlockSec, saygın konferanslarda blokzincir güvenliği üzerine birçok makale yayımladı, DeFi uygulamalarına yönelik birkaç sıfır gün saldırısını bildirdi, 20 milyon dolardan fazla varlığı kurtarmak için birçok saldırıyı engelledi ve milyarlarca dolar değerindeki kripto varlığın güvenliğini sağladı.
-
Resmî web sitesi: https://blocksec.com/
-
Resmî Twitter hesabı: https://twitter.com/BlockSecTeam



