Claymore's Dual Ethereum + Decred/Siacoin/Lbry/Pascal AMD+NVIDIA GPU Miner için versiyon 10.6 yayınlandı.
Relase Nota bakıldığında : - fixed critical issue in remote management feature (attacker could crash miner even in read-only mode). açıklaması yapılmış.
Aslen ilgili açık uzun süredir devam etmekteydi (
2017-12-07 tarihinde exploit db de publish edilmişti), ilgili güncelleme yerinde olmuş.
İlgili açık : Miner yazılımının dışarında izlenmesi (Monitoring) ve yönetilmesi (Management) işlemleri için kullanılan remote managemant api üzerinde yapılan geçersiz istekler ile uygulamanın çalışmasını engellemek.
Bu şekilde yapılan saldırılar ile dışarıdan erişilebilir durumda olan miner lar kapatılabilmekte.
Bilindiği üzere claymore default 3333 vea -mport ile set edilen port üzerinden uzak izleme ve yönetim hizmeti vermekte. Lokal riglerinizde denemek için bir tarayıcı üzerinden
http://localhost:3333 veya -mport ile set edilen port adresi ile görüntüleyebilirsiniz. İlgili servisin asıl amacı claymore içerisinde bulunan EthMan ile birden fazla workerın izlenmesi ,alarm oluşturulması ve yönetilmesi.
Öncelikli olarak saldırıya maruz kalmanız için ilgili rigin lan->wan çıkışında ilgili portunun ya nat yada rig ip adresi için dmz edilmiş olması gerekli, yani whats my ip üzerinden bulduğunuz internet (wide area ) ip adresiniz ile farklı bir hat (aynı ortamda yönlendiriciniz cevap vermeye bilir, engüzeli ceptelefonu üzerinden test.) http://İnternet_ip:3333 üzerinde ulaşılabilir durumda olmanız lazım, tersi durumda İnternet yönlendiriciniz (modem,router vs) dışarıdan gelen istekleri yönlendirmeyecektir.
Gelelim saldırı yöntemine.
İlgili servise http ile bağlandığınızda, servis size claymore consolunun o anki ekran görüntüsünü vermekte, bunun haricinde socket üzerinden json rpc ile
{"id":0,"jsonrpc":"2.0","method":"miner_getstat1"} verisini request olarak gönderdiğinizde claymore respose olarak
{"result": ["9.3 - ETH", "21", "182724;51;0", "30502;30457;30297;30481;30479;30505", "0;0;0", "off;off;off;off;off;off", "53;71;57;67;61;72;55;70;59;71;61;70", "eth-eu1.nanopool.org:9999", "0;0;0;0"]} yanıtını dönmekte.
Saldırgan bu servise socket üzerinden bağlanarak
{"id":0,"jsonrpc":"2.0","method":"miner_getstat1"} yerine
{"id":0,"jsonrpc":"2.0","method":"miner_getstat1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..."} requestini gönderdiğinde claymore üzerinde method için tanımlanmış veri tipine ayrılmış alanda bir bellek taşımı oluşuyor (Stack Buffer Overflow). Kabaca 1kg taşıyabilecek bir torbaya 10kg yük yükleniyor. Bu bellek taşımı sonucunda claymore crash olarak çalışmayı durduruyor.
3. parti olarak claymore'u izleyen ve onu tekrar başlatacak bir servisiniz yoksa , taki siz fark edip müdahale edene kadar sisteminiz kapalı kalıyor.
Test edecek veya exploit tool a bakmak isteyen arkadaşlar :
https://www.exploit-db.com/exploits/43231/ adresinden faydalanabilirler.
Not : Api respons açıklaması :
RESPONSE:
{"result": ["9.3 - ETH", "21", "182724;51;0", "30502;30457;30297;30481;30479;30505", "0;0;0", "off;off;off;off;off;off", "53;71;57;67;61;72;55;70;59;71;61;70", "eth-eu1.nanopool.org:9999", "0;0;0;0"]}
"9.3 - ETH" - miner version.
"21" - running time, in minutes.
"182724" - total ETH hashrate in MH/s, number of ETH shares, number of ETH rejected shares.
"30502;30457;30297;30481;30479;30505" - detailed ETH hashrate for all GPUs.
"0;0;0" - total DCR hashrate in MH/s, number of DCR shares, number of DCR rejected shares.
"off;off;off;off;off;off" - detailed DCR hashrate for all GPUs.
"53;71;57;67;61;72;55;70;59;71;61;70" - Temperature and Fan speed(%) pairs for all GPUs.
"eth-eu1.nanopool.org:9999" - current mining pool. For dual mode, there will be two pools here.
"0;0;0;0" - number of ETH invalid shares, number of ETH pool switches, number of DCR invalid shares, number of DCR pool switches.