Solidity Derleyici Açıkları Analizi ve Önleme Önlemleri
Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi yüksek seviyeli programlama dili kaynak kodunu bilgisayarın yürütülebilir talimat koduna dönüştürmektir. Geliştiriciler ve güvenlik uzmanları genellikle program uygulama kodunun güvenliğine odaklansa da, derleyici kendisi de bir bilgisayar programı olarak güvenlik açıklarına sahip olabilir ve bazı durumlarda ciddi güvenlik riskleri doğurabilir.
Solidity derleyicisinin işlevi, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimat koduna dönüştürmektir. EVM'in kendisindeki güvenlik açıklarından farklı olarak, Solidity derleyici güvenlik açıkları, Solidity'nin EVM koduna dönüştürülmesi sırasında sorunlar olabileceği yönünde ortaya çıkmakta olup, doğrudan Ethereum ağını etkilemez, ancak üretilen EVM kodunun geliştiricinin beklediğiyle uyuşmamasına neden olabilir.
Aşağıda birkaç gerçek Solidity derleyici açığı örneği verilmiştir:
SOL-2016-9 YüksekDüzenByteTemizDepolama:
Bu güvenlik açığı, erken dönem Solidity derleyici sürümlerinde (>=0.1.6 <0.4.4) bulunmaktadır. Derleyicinin tam sayılarla ilgili taşmaları işlerken yüksek bitleri doğru bir şekilde temizlememesi, komşu değişkenlerin yanlışlıkla değiştirilmesine neden olabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects:
Bu güvenlik açığı 0.8.13 ile 0.8.15 versiyonları arasındaki derleyicilerde bulunmaktadır. Derleme optimizasyonu, tek bir assembly bloğunu analiz ederken, görünüşte gereksiz ama aslında faydalı olan bellek yazma talimatlarını yanlışlıkla kaldırabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
Bu güvenlik açığı 0.5.8 ile 0.8.16 sürümleri arasındaki derleyicileri etkilemektedir. calldata türündeki dizilere abi.encode işlemi yapılırken, bazı verilerin yanlışlıkla temizlenmesi, bitişik verilerin değiştirilmesine yol açmaktadır.
Solidity derleyici açığına karşı, Cobo blok zinciri güvenlik ekibi aşağıdaki önerileri sunmaktadır:
Geliştiricilere:
Daha yeni bir Solidity derleyici sürümü kullanın
Birim test durumlarını geliştirmek
Inline assembly, karmaşık abi kod çözme gibi işlemlerden kaçının.
Güvenlik personeline:
Denetim sırasında derleyicinin getirebileceği güvenlik risklerini göz önünde bulundurun
Geliştirme sürecinde derleyici sürümünün güncellenmesi için teşvik edin
Derleyici açıklarının gerçek güvenlik etkisini özel durumlara göre değerlendirin.
Bazı pratik kaynaklar:
Solidity resmi güvenlik uyarısı
Solidity GitHub deposundaki hata listesi
Her sürüm derleyici hata listesi
Etherscan sözleşme kodu sayfasının güvenlik ipuçları
Sonuç olarak, geliştiricilerin ve güvenlik uzmanlarının Solidity derleyici açıklarının getirebileceği güvenlik risklerine dikkat etmesi, bu riskleri azaltmak için derleyiciyi güncelleyerek, testleri geliştirmek gibi önlemler alması gerekir.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
24 Likes
Reward
24
6
Share
Comment
0/400
StakeWhisperer
· 07-21 09:21
Erken takip et derleyici hatası mı? Bu Çaylak öldürücü.
View OriginalReply0
OnchainGossiper
· 07-21 06:50
Yeni bir hata düzeltmesini bitirdim, hemen yenisi geliyor... El açma
View OriginalReply0
blockBoy
· 07-20 10:39
Bu gerçekten zor bir sorun... Kim bunu gerçekten çözebilir?
Solidity Derleyici Açıkları ve Bunlara Karşı Stratejilerin Analizi
Solidity Derleyici Açıkları Analizi ve Önleme Önlemleri
Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi yüksek seviyeli programlama dili kaynak kodunu bilgisayarın yürütülebilir talimat koduna dönüştürmektir. Geliştiriciler ve güvenlik uzmanları genellikle program uygulama kodunun güvenliğine odaklansa da, derleyici kendisi de bir bilgisayar programı olarak güvenlik açıklarına sahip olabilir ve bazı durumlarda ciddi güvenlik riskleri doğurabilir.
Solidity derleyicisinin işlevi, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimat koduna dönüştürmektir. EVM'in kendisindeki güvenlik açıklarından farklı olarak, Solidity derleyici güvenlik açıkları, Solidity'nin EVM koduna dönüştürülmesi sırasında sorunlar olabileceği yönünde ortaya çıkmakta olup, doğrudan Ethereum ağını etkilemez, ancak üretilen EVM kodunun geliştiricinin beklediğiyle uyuşmamasına neden olabilir.
Aşağıda birkaç gerçek Solidity derleyici açığı örneği verilmiştir:
SOL-2016-9 YüksekDüzenByteTemizDepolama: Bu güvenlik açığı, erken dönem Solidity derleyici sürümlerinde (>=0.1.6 <0.4.4) bulunmaktadır. Derleyicinin tam sayılarla ilgili taşmaları işlerken yüksek bitleri doğru bir şekilde temizlememesi, komşu değişkenlerin yanlışlıkla değiştirilmesine neden olabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects: Bu güvenlik açığı 0.8.13 ile 0.8.15 versiyonları arasındaki derleyicilerde bulunmaktadır. Derleme optimizasyonu, tek bir assembly bloğunu analiz ederken, görünüşte gereksiz ama aslında faydalı olan bellek yazma talimatlarını yanlışlıkla kaldırabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Bu güvenlik açığı 0.5.8 ile 0.8.16 sürümleri arasındaki derleyicileri etkilemektedir. calldata türündeki dizilere abi.encode işlemi yapılırken, bazı verilerin yanlışlıkla temizlenmesi, bitişik verilerin değiştirilmesine yol açmaktadır.
Solidity derleyici açığına karşı, Cobo blok zinciri güvenlik ekibi aşağıdaki önerileri sunmaktadır:
Geliştiricilere:
Güvenlik personeline:
Bazı pratik kaynaklar:
Sonuç olarak, geliştiricilerin ve güvenlik uzmanlarının Solidity derleyici açıklarının getirebileceği güvenlik risklerine dikkat etmesi, bu riskleri azaltmak için derleyiciyi güncelleyerek, testleri geliştirmek gibi önlemler alması gerekir.