Solidity Derleyici Açık Analizi ve Müdahale Stratejileri
Derleyici, modern bilgisayar sistemlerinin önemli bir parçasıdır ve yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürme işlevini yerine getirir. Uygulama programı koduyla karşılaştırıldığında, derleyicinin güvenliği genellikle göz ardı edilir. Ancak, derleyici zafiyetleri bazı durumlarda ciddi güvenlik riskleri doğurabilir.
Solidity derleyicisinin temel işlevi, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimatlarına dönüştürmektir. EVM'nin kendisindeki açıkların aksine, Solidity derleyici açıkları esas olarak akıllı sözleşme geliştiricilerini etkiler ve doğrudan Ethereum ağının güvenliğini tehlikeye atmaz.
Derleyici hataları, üretilen EVM kodunun geliştiricilerin beklediğinden farklı olmasına yol açabilir. Akıllı sözleşmeler genellikle kripto para varlıklarını içerdiğinden, derleyiciden kaynaklanan herhangi bir hata kullanıcı varlıklarının kaybına neden olabilir. Bu tür sorunları yalnızca sözleşme kaynak kodu denetimi ile tespit etmek zordur, belirli derleyici sürümleri ve kod desenleri ile birleştirilerek analiz yapılması gerekir.
Solidity Derleyici Açığı Örneği
SOL-2016-9 YüksekDüzenBaytTemizlemeDepolama
Bu güvenlik açığı, erken dönem Solidity derleyici sürümleri (>=0.1.6 <0.4.4)'de bulunmaktadır. Belirli durumlarda, storage değişkenleri yanlışlıkla değiştirilebilir ve bu da fonksiyonun döndürdüğü değerin beklenenden farklı olmasına yol açabilir. Bu tutarsızlık, yetki doğrulama veya varlık muhasebesi ile ilgili durumlarda ciddi sonuçlara neden olabilir.
Açıkların nedeni, derleyicinin 32 bayttan daha küçük veri türlerini işlerken yüksek bit verilerini doğru bir şekilde temizlememesidir. Bu, tam sayı taşması sırasında yüksek bitin yanındaki değişkene yanlış yazılmasına neden olur.
SOL-2022-4 InlineAssemblyMemorySideEffects
Bu güvenlik açığı, >=0.8.13 <0.8.15 sürümündeki derleyicileri etkilemektedir. Sorun, derleyici optimizasyon sürecinde bellek işlemlerinin yanlış işlenmesinden kaynaklanmaktadır. Bazı durumlarda, derleyici görünüşte gereksiz olan bellek yazma talimatlarını yanlışlıkla kaldırarak fonksiyon dönüş değerlerinin anormal olmasına neden olmaktadır.
Bu güvenlik açığı >= 0.5.8 < 0.8.16 sürümündeki derleyicide bulunmaktadır. calldata türü dizileri üzerinde abi.encode işlemi yapılırken, derleyici bazı verileri yanlışlıkla temizleyerek komşu verilerin değişmesine neden olmakta ve bu da kodlama çözme sonrası verilerin tutarsız olmasına yol açmaktadır.
Dikkat edilmesi gereken husus, external call ve emit event işlemlerinin abi.encode işlemi ile örtük olarak gerçekleştirileceğidir, bu nedenle bu açığın etkisi beklenenden daha geniş olabilir.
Güvenlik Önerileri
Solidity derleyici açığına yönelik, 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 vakalarını geliştirin, kod kapsama oranını artırın
Inline assembly, karmaşık ABI kod çözme gibi işlemleri kullanmaktan kaçının, yeni özellikler ve deneysel işlevleri dikkatli kullanın.
Güvenlik personeline:
Denetim sırasında derleyicinin getirebileceği güvenlik risklerine dikkat edin.
Geliştirme sürecinde derleyici sürüm yükseltmesini teşvik etmek, CI/CD'de otomatik sürüm kontrolü getirmeyi düşünmek
Belirli projelere göre derleyici açıklarının gerçek güvenlik etkilerini değerlendirme
Kullanışlı kaynaklar:
Solidity resmi güvenlik uyarı blogu
Solidity GitHub deposundaki hata listesi
Her sürüm için derleyici hata listesi
Etherscan sözleşme kodu sayfasındaki derleyici açığı uyarısı
Sonuç olarak, geliştiricilerin ve güvenlik uzmanlarının Solidity derleyici açıklarının getirebileceği risklere dikkat etmeleri ve güvenlik tehditlerini azaltmak için gerekli önlemleri almaları gerekmektedir. Ayrıca, belirli etkileri nesnel bir şekilde değerlendirmek ve gereksiz bir panikten kaçınmak da önemlidir.
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.
13 Likes
Reward
13
4
Share
Comment
0/400
AirdropChaser
· 08-02 03:03
又一个 insanları enayi yerine koymak 的理由出现了
View OriginalReply0
BearMarketBuilder
· 08-02 02:55
Ah, bütün gün geliştirme yapıyorum, bu şeyden korkuyorum.
View OriginalReply0
TeaTimeTrader
· 08-02 02:53
Derleyici hatalarını edebiyatı üstlenebilir mi?
View OriginalReply0
0xOverleveraged
· 08-02 02:42
Bütün derleyiciler güvenilir değil, o yüzden ne tür sözleşmeler oynayabiliriz ki?
Solidity Derleyici Açığı Analizi: Geliştiricilerin Göz Ardı Etmemesi Gereken Potansiyel Riskler
Solidity Derleyici Açık Analizi ve Müdahale Stratejileri
Derleyici, modern bilgisayar sistemlerinin önemli bir parçasıdır ve yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürme işlevini yerine getirir. Uygulama programı koduyla karşılaştırıldığında, derleyicinin güvenliği genellikle göz ardı edilir. Ancak, derleyici zafiyetleri bazı durumlarda ciddi güvenlik riskleri doğurabilir.
Solidity derleyicisinin temel işlevi, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimatlarına dönüştürmektir. EVM'nin kendisindeki açıkların aksine, Solidity derleyici açıkları esas olarak akıllı sözleşme geliştiricilerini etkiler ve doğrudan Ethereum ağının güvenliğini tehlikeye atmaz.
Derleyici hataları, üretilen EVM kodunun geliştiricilerin beklediğinden farklı olmasına yol açabilir. Akıllı sözleşmeler genellikle kripto para varlıklarını içerdiğinden, derleyiciden kaynaklanan herhangi bir hata kullanıcı varlıklarının kaybına neden olabilir. Bu tür sorunları yalnızca sözleşme kaynak kodu denetimi ile tespit etmek zordur, belirli derleyici sürümleri ve kod desenleri ile birleştirilerek analiz yapılması gerekir.
Solidity Derleyici Açığı Örneği
SOL-2016-9 YüksekDüzenBaytTemizlemeDepolama
Bu güvenlik açığı, erken dönem Solidity derleyici sürümleri (>=0.1.6 <0.4.4)'de bulunmaktadır. Belirli durumlarda, storage değişkenleri yanlışlıkla değiştirilebilir ve bu da fonksiyonun döndürdüğü değerin beklenenden farklı olmasına yol açabilir. Bu tutarsızlık, yetki doğrulama veya varlık muhasebesi ile ilgili durumlarda ciddi sonuçlara neden olabilir.
Açıkların nedeni, derleyicinin 32 bayttan daha küçük veri türlerini işlerken yüksek bit verilerini doğru bir şekilde temizlememesidir. Bu, tam sayı taşması sırasında yüksek bitin yanındaki değişkene yanlış yazılmasına neden olur.
SOL-2022-4 InlineAssemblyMemorySideEffects
Bu güvenlik açığı, >=0.8.13 <0.8.15 sürümündeki derleyicileri etkilemektedir. Sorun, derleyici optimizasyon sürecinde bellek işlemlerinin yanlış işlenmesinden kaynaklanmaktadır. Bazı durumlarda, derleyici görünüşte gereksiz olan bellek yazma talimatlarını yanlışlıkla kaldırarak fonksiyon dönüş değerlerinin anormal olmasına neden olmaktadır.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup
Bu güvenlik açığı >= 0.5.8 < 0.8.16 sürümündeki derleyicide bulunmaktadır. calldata türü dizileri üzerinde abi.encode işlemi yapılırken, derleyici bazı verileri yanlışlıkla temizleyerek komşu verilerin değişmesine neden olmakta ve bu da kodlama çözme sonrası verilerin tutarsız olmasına yol açmaktadır.
Dikkat edilmesi gereken husus, external call ve emit event işlemlerinin abi.encode işlemi ile örtük olarak gerçekleştirileceğidir, bu nedenle bu açığın etkisi beklenenden daha geniş olabilir.
Güvenlik Önerileri
Solidity derleyici açığına yönelik, Cobo blok zinciri güvenlik ekibi aşağıdaki önerileri sunmaktadır:
Geliştiricilere:
Güvenlik personeline:
Kullanışlı kaynaklar:
Sonuç olarak, geliştiricilerin ve güvenlik uzmanlarının Solidity derleyici açıklarının getirebileceği risklere dikkat etmeleri ve güvenlik tehditlerini azaltmak için gerekli önlemleri almaları gerekmektedir. Ayrıca, belirli etkileri nesnel bir şekilde değerlendirmek ve gereksiz bir panikten kaçınmak da önemlidir.