Back to Blog

CVE-2021–39137'nin Vahşi Doğada İstismarının Kısa Bir Analizi

Code Auditing
August 28, 2021
2 min read

CVE-2021-39137, birkaç gün önce raporlanan ve düzeltilen bir güvenlik açığıdır. Ancak tüm Ethereum düğümleri yamayı henüz uygulamış değildir. Bu güvenlik açığının kötü niyetli bir işlem tarafından istismar edildiğini gözlemliyoruz.

Saldırı İşlemi

https://tx.blocksecteam.com/tx/0x1cb6fb36633d270edefc04d048145b4298e67b8aa82a9e5ec4aa1435dd770ce4

Bu işlem, 0x4 adresiyle bir STATICCALL içermektedir. Bu, önceden derlenmiş bir akıllı sözleşme olan dataCopy'dir. Argümanlar aşağıdaki gibidir.

inOffset = 0, inSize = 32, retOffset = 7 ve retSize = 32.

0x4 Akıllı Sözleşmesi

Şekil 1

STATICCALL'un hedefi 0x4 önceden derlenmiş sözleşmesi olduğundan, Şekil 1'deki RunPrecompiledContract fonksiyonunu çalıştıracaktır.

Şekil 2

Şekil 3

Şekil 2/3'e göre, 0x4 akıllı sözleşmesi yalnızca in işaretçisinin referansını döndürmektedir.

Şekil 4

Şekil 5

Şekil 4, STATICCALL opcode'unun kodudur. 751. satırda, args, EVM belleğinin [inOffset ~ inOffset + inSize] aralığını, yani Mem[0:32]'yi işaret etmektedir.

Şekil 5 ve 0x04'ün kod mantığının analizine göre (Şekil 2/3), döndürülen değer (ret), args ile aynı belleğin bir referansıdır. Yani, bu da Mem[0:32]'yi işaret etmektedir.

Güvenlik Açığı

Güvenlik açığı içeren kodda (sürüm 1.10.7), 762. satır ret içeriğini Mem[retOffset : retOffset + retOffset] alanına kopyalar, yani Mem[0:32]'yi Mem[7:7+32]'ye kopyalar. Bu işlem yanlışlıkla ret içeriğini değiştirmektedir. Bu, 0x4 önceden derlenmiş sözleşmesinin döndürdüğü değerin değiştirildiği anlamına gelir.

Düzeltilmiş sürümde (1.10.8), ret'in bir kopyası oluşturulmaktadır (766. satır). 767. satırdaki kopyalama işlemi ret içeriğini değiştiremeyeceğinden bu güvenlik açığı giderilmiş olur.

CVE-2021–39137 güvenlik açığı, düğümlerin yamalarını zamanında güncellememiş olması nedeniyle kötü niyetli bir işlem tarafından istismar edildi. Bu kusur, Ethereum Sanal Makinesi'nin bellek işlemlerindeki bir hatayı kapsıyordu; ancak 1.10.8 sürümünde düzeltildi. Sistem güvenliğini sağlamak için tüm Ethereum düğümlerinin en kısa sürede en son sürüme güncellenmesi önerilmektedir.

Katkıda Bulunanlar

Saldırı, Siwei Wu, Yufeng Hu, Lei Wu, Yajin Zhou@BlockSec tarafından analiz edilmiştir.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit