Sahte GIWA mainnet'i ile gerçekleştirilen ve 27.09.2026 tarihinde kullanıcıların 766 ETH kaybetmesine, merkeziyetsiz borsanın (DEX) ise sahte RPC entegrasyonu yüzünden vurgun yemesine yol açan sofistike dolandırıcılık vakasının derinlemesine analizi.
Seviye Atlamış Aldatmaca: Blokzincir Nasıl Taklit Edilir?
Güvenlik izleme akışını (feed) kaydırıyordum ki... az kalsın kahvemi döküyordum. Yedi yüz altmış altı Ether. Düpedüz buhar olup uçmuş. Klasik bir kütüphane oltalama (phishing) saldırısı veya flash loan kontrat istismarı olsa, derim ki "tamam, olağan şeyler, çok gördük." Ama bu senaryo çok daha şık ve kurnazca kurgulanmış. Dolandırıcılar sahte bir GIWA mainnet'i ayağa kaldırmış, bunu başka birinin DEX'ine entegre etmiş ve kullanıcıların milyonlarca dolarını cukkalamışlar.
Gelin bu olayı en ince detayına kadar masaya yatıralım, çünkü mimari açıdan mühendis gözüyle incelenmeyi fazlasıyla hak ediyor. Bir InfoSec uzmanı ve aktif bir CTO olarak, uygulamanın bu kadar cüretkar olmasından neredeyse keyif aldım diyebilirim; tabii DYORSWAP ekibinin düştüğü duruma üzülmediğimiz anlamına gelmez bu.
Durun bir dakika, bir Layer 2 (L2) blokzinciri "taklit" edilebilir mi? Dışarıdan bakan biri için kulağa çılgınca geliyor ama EVM dünyasında bir ağ asla sihirli bir şey değildir; sadece bir dizi kural (convention) ve RPC endpoint'inden ibarettir.
Kötü niyetli kişiler açık kaynaklı bir yazılım yığını (büyük ihtimalle OP Stack türevi bir şeyi) çatallayıp (fork) kendi nodelarını deploy ettiler. Ancak sadece sunucu ayağa kaldırmak yetmez; cüzdanları ve uygulamaları, bunun henüz mainnet'te resmi olarak bile başlamamış olan Güney Koreli borsa Upbit'in resmi ürünü olduğuna ikna etmeleri gerekiyordu.
Node konfigürasyonuna GIWA ekibinin gelecekteki blokzincirleri için önceden kaydettiği resmi Chain ID'yi — yani 9134 sayısını — sert bir şekilde (hardcode) işlediler. İşte tüm ekosistemin asıl zafiyeti burada yatıyor: MetaMask gibi cüzdanlar ağı, yaratıcılarına duyulan kriptografik bir güven köküne göre değil, yapılandırma satırlarına ve ID'lere bakarak doğrular.
Ve tam da bu noktada DYORSWAP DEX'i duvara çarptı. Yeni ağın yarattığı hype dalgasına herkesten önce atlamak isteyerek bu sahte RPC'yi kendi altyapılarına dahil ettiler.
Biliyor musunuz, eskiden kendi başıma akıllı kontrat denetimleri yaparken hep şöyle düşünürdüm: tamam, frontend taklit edilebilir, RPC değiştirilebilir ama köprünün (bridge) akıllı kontratı kutsaldır, sonuçta kodu doğrudan Ethereum blokzincirinde yaşar! İşte bu saldırının en zekice tuzağı da tam burada kurulmuştu.
Kullanıcılar Neden Hiçbir Şeyden Şüphelenmedi?
Kullanıcılar en ufak bir şüphe duymadı çünkü köprü, Ethereum'dan GIWA L2 ağına varlık transfer etmek için kullanılan orijinal arayüze birebir benziyordu. İnsanlar MetaMask üzerinden imza atıp canından aziz ETH'lerini mainnet üzerindeki para yatırma (deposit) akıllı kontratına gönderiyorlardı.
Teknik açıdan bu kontrat, standart bir depozito bulucusunun (locator) çalışmasını taklit edecek şekilde kodlanmıştı. İşlem ana ağda doğrulanır doğrulanmaz, dolandırıcılar fonların kontrolünü tamamen ele geçiriyordu. Karşılığında ise kullanıcı, sahte L2 bakiyesinde hiçbir karşılığı olmayan uyduruk tokenler görüyordu. Ekranda artan sayılar başarılı bir köprüleme illüzyonu yaratırken, gerçek ETH şimdiden organizatörlerin cüzdanına uçmuş ve mixer'lar aracılığıyla izini kaybettiriyordu. Sonuçta 1.335 benzersiz adres kurbana dönüştü ve yaklaşık 767.7 ETH kapana kısıldı. Üstelik gas maliyetlerini minimumda tutarak yaklaşık 766.3 ETH'yi tertemiz bir şekilde çekmeyi başardılar.
DYORSWAP ekibi cidden büyük bir karakter ortaya koyarak tazminatlar için kendi cebinden 200 ETH'den fazla kaynak ayırdı. Şirketin itibarına gösterdiği bu yaklaşımı takdir ediyorum, ancak harici RPC bağlantı doğrulamasındaki o mimari deliğin can pahasına kapatılması gerekecek.
Şimdi gelelim işin pratik kısmına. Yeni blokzincirleri ilk test edenlerden olmayı seviyorsanız, bir sonraki vurgunun sponsoru olmamak için ne yapmalısınız? Cüzdanınızla herhangi bir etkileşim kurmayı düşünmeden önce RPC nodelarını doğrulamanız için Python dilinde ufak bir kontrol script'i hazırladım.
#!/usr/bin/env python3
import requests
def rpc_call(rpc_url, method, params=None):
if params is None:
params = []
payload = {
"jsonrpc": "2.0",
"method": method,
"params": params,
"id": 1
}
response = requests.post(rpc_url, json=payload, timeout=10)
response.raise_for_status()
data = response.json()
if "error" in data:
raise RuntimeError(f"{method}: {data['error']}")
return data.get("result")
def verify_evm_node(rpc_url, expected_chain_id):
try:
chain_id_hex = rpc_call(rpc_url, "eth_chainId")
chain_id = int(chain_id_hex, 16)
net_version = rpc_call(rpc_url, "net_version")
client_version = rpc_call(rpc_url, "web3_clientVersion")
block_number_hex = rpc_call(rpc_url, "eth_blockNumber")
block_number = int(block_number_hex, 16)
latest_block = rpc_call(
rpc_url,
"eth_getBlockByNumber",
["latest", False]
)
print("=" * 60)
print(f"RPC URL : {rpc_url}")
print(f"Chain ID : {chain_id}")
print(f"Expected ChainID : {expected_chain_id}")
print(f"Net Version : {net_version}")
print(f"Client Version : {client_version}")
print(f"Block Number : {block_number}")
if latest_block:
print(f"Latest Block Hash: {latest_block.get('hash')}")
print(f"Latest Block Num : {int(latest_block['number'], 16)}")
print(f"Parent Hash : {latest_block.get('parentHash')}")
print(f"Timestamp : {int(latest_block['timestamp'], 16)}")
print("=" * 60)
checks = []
checks.append(chain_id == expected_chain_id)
try:
checks.append(int(net_version) == expected_chain_id)
except Exception:
checks.append(False)
checks.append(block_number > 0)
checks.append(
latest_block is not None
and latest_block.get("hash")
and latest_block.get("parentHash")
and latest_block.get("number")
)
if all(checks):
print("VERIFICATION PASSED")
return True
print("VERIFICATION FAILED")
return False
except Exception as e:
print(f"ERROR: {e}")
return False
if __name__ == "__main__":
verify_evm_node(
"https://your-rpc-endpoint",
9134
)Altın kuralı unutmayın: Resmi proje kendi doğrulanmış kanalları (sosyal medya hesapları değil, dokümantasyonu veya SSL sertifikalı resmi web sitesi) aracılığıyla tam endpoint'leri yayınlayana kadar, şüpheli Twitter hesaplarından veya doğrulanmamış DEX'lerden gelen ağ listelerine asla güvenmeyin. Upbit borsası, mainnet'lerinin henüz yayına alınmadığını ve dolaşımdaki tüm mevcut RPC'lerin tamamen havaya sıkılmış kurşun ve saf dolandırıcılık olduğunu açıkça belirtti.