Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayar tarafından yürütülebilen talimat koduna dönüştürmektir. Çoğu geliştirici ve güvenlik uzmanı genellikle uygulama kodunun güvenliğine odaklansa da, derleyicinin güvenliği de aynı derecede önemlidir. Derleyici açıkları belirli senaryolar altında ciddi güvenlik riskleri taşıyabilir; örneğin, bir tarayıcı Javascript kodunu çözümleyip yürütürken, çözümleme motorundaki bir açık nedeniyle uzaktan kod yürütme gerçekleşebilir.
Solidity derleyicisi de istisna değildir, birden fazla sürümde güvenlik açıkları bulunmaktadır. Solidity derleyicisinin işlevi, akıllı sözleşme kodunu Ethereum Sanal Makinesi (EVM) talimat koduna dönüştürmektir. Dikkat edilmesi gereken nokta, Solidity derleyici açıklarının EVM'nin kendisindeki açıklarla farklı olduğudur. EVM açıkları tüm Ethereum ağını etkileyebilirken, Solidity derleyici açıkları esas olarak akıllı sözleşme geliştiricilerini ve kullanıcılarını etkilemektedir.
Solidity derleyici açıklarının bir tehlikesi, üretilen EVM kodunun geliştiricinin beklediği gibi olmaması olabilir. Akıllı sözleşmeler genellikle kullanıcıların kripto para varlıklarını içerdiğinden, derleyiciden kaynaklanan herhangi bir hata ciddi sonuçlara yol açabilir. Bu tür sorunlar basit bir kod denetimi ile tespit edilmesi zor olup, belirli derleyici sürümleri ve kod kalıplarının birlikte analiz edilmesini gerektirir.
Aşağıda birkaç gerçek Solidity derleyici açığı örneği verilmiştir:
SOL-2016-9 YüksekDüzenBaytTemizlemeDepolama:
Bu açık, erken dönem Solidity derleyici sürümlerinde bulunmaktadır (>=0.1.6 <0.4.4). Derleyici, tam sayı taşması sonrası yüksek bit temizleme işlemini doğru bir şekilde işlemediğinden, bitişik değişkenlerin değerlerinin yanlışlıkla değiştirilmesine neden olabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects:
Bu güvenlik açığı >=0.8.13 <0.8.15 sürümündeki derleyicilerde bulunmaktadır. Derleyici optimizasyon sürecinde iç içe yerleştirilmiş asm kodunun yanlış işlenmesi, bazı bellek işlemlerinin yanlış bir şekilde optimize edilmesine yol açabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
Bu açık, >= 0.5.8 < 0.8.16 sürümündeki derleyicileri etkilemektedir. calldata türündeki bir dizi üzerinde abi.encode işlemi gerçekleştirildiğinde, bazı verilerin yanlışlıkla temizlenmesi, bitişik verilerin değiştirilmesine neden olabilir.
Solidity derleyici açığına yönelik, Cobo blok zinciri güvenlik ekibi aşağıdaki önerileri sunmaktadır:
Geliştiriciler için:
Daha yeni bir Solidity derleyici sürümü kullanın.
Birim test durumlarını iyileştirmek
İç içe montaj, karmaşık abi kod çözme gibi işlemlerden kaçının.
Dikkatli bir şekilde dilin yeni özelliklerini ve deneysel işlevlerini kullanın
Güvenlik personeline:
Güvenlik denetimi sırasında derleyicinin neden olabileceği riskleri göz önünde bulundurun
CI/CD sürecine derleyici versiyonunun otomatik kontrolünü ekleme
Projenin özel durumuna göre derleyici açıklarının gerçek güvenlik etkisini değerlendirin.
Bazı pratik kaynaklar:
Solidity resmi olarak yayımlanan güvenlik uyarısı
Solidity resmi deposunun güncellenmiş hata listesi
Her versiyonun derleyici hata listesi
Etherscan tarafından sağlanan derleyici açığı uyarı özelliği
Geliştiriciler ve güvenlik uzmanları, derleyici güvenliğine dikkat ederek, testleri tamamlayarak, karmaşık özellikleri dikkatli bir şekilde kullanarak ve derleyici sürümünü zamanında güncelleyerek, Solidity derleyici açıklarının getirdiği riskleri etkili bir şekilde azaltabilir ve akıllı sözleşmelerin genel güvenliğini artırabilir.
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.
15 Likes
Reward
15
6
Share
Comment
0/400
Rekt_Recovery
· 07-12 06:08
herkesin fonlarına yazık... oradaydım, 2018'de derleyici hatalarına her şeyi kaybettim tsk
View OriginalReply0
RunWhenCut
· 07-12 05:51
Ne ölçersen ölç, insanları enayi yerine koymak zorundasın.
View OriginalReply0
FUDwatcher
· 07-12 03:11
Bu hata gerçekten korkunç, kaçtım kaçtım.
View OriginalReply0
ResearchChadButBroke
· 07-09 10:27
Derleyici yine mi sorun çıkardı? Gece geç saatlere kadar hata düzeltmeye mi gideceksin?
View OriginalReply0
MoonlightGamer
· 07-09 10:19
Kod incelendi, bir sorun yok.
View OriginalReply0
GasGuzzler
· 07-09 09:58
Hala akıllı sözleşmeler yazıyorum, bir enayi tadı var.
Solidity derleyici açıkları analizi ve başa çıkma stratejileri
Solidity Derleyici Açıkları Analizi ve Önlemler
Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayar tarafından yürütülebilen talimat koduna dönüştürmektir. Çoğu geliştirici ve güvenlik uzmanı genellikle uygulama kodunun güvenliğine odaklansa da, derleyicinin güvenliği de aynı derecede önemlidir. Derleyici açıkları belirli senaryolar altında ciddi güvenlik riskleri taşıyabilir; örneğin, bir tarayıcı Javascript kodunu çözümleyip yürütürken, çözümleme motorundaki bir açık nedeniyle uzaktan kod yürütme gerçekleşebilir.
Solidity derleyicisi de istisna değildir, birden fazla sürümde güvenlik açıkları bulunmaktadır. Solidity derleyicisinin işlevi, akıllı sözleşme kodunu Ethereum Sanal Makinesi (EVM) talimat koduna dönüştürmektir. Dikkat edilmesi gereken nokta, Solidity derleyici açıklarının EVM'nin kendisindeki açıklarla farklı olduğudur. EVM açıkları tüm Ethereum ağını etkileyebilirken, Solidity derleyici açıkları esas olarak akıllı sözleşme geliştiricilerini ve kullanıcılarını etkilemektedir.
Solidity derleyici açıklarının bir tehlikesi, üretilen EVM kodunun geliştiricinin beklediği gibi olmaması olabilir. Akıllı sözleşmeler genellikle kullanıcıların kripto para varlıklarını içerdiğinden, derleyiciden kaynaklanan herhangi bir hata ciddi sonuçlara yol açabilir. Bu tür sorunlar basit bir kod denetimi ile tespit edilmesi zor olup, belirli derleyici sürümleri ve kod kalıplarının birlikte analiz edilmesini gerektirir.
Aşağıda birkaç gerçek Solidity derleyici açığı örneği verilmiştir:
SOL-2016-9 YüksekDüzenBaytTemizlemeDepolama: Bu açık, erken dönem Solidity derleyici sürümlerinde bulunmaktadır (>=0.1.6 <0.4.4). Derleyici, tam sayı taşması sonrası yüksek bit temizleme işlemini doğru bir şekilde işlemediğinden, bitişik değişkenlerin değerlerinin yanlışlıkla değiştirilmesine neden olabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects: Bu güvenlik açığı >=0.8.13 <0.8.15 sürümündeki derleyicilerde bulunmaktadır. Derleyici optimizasyon sürecinde iç içe yerleştirilmiş asm kodunun yanlış işlenmesi, bazı bellek işlemlerinin yanlış bir şekilde optimize edilmesine yol açabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Bu açık, >= 0.5.8 < 0.8.16 sürümündeki derleyicileri etkilemektedir. calldata türündeki bir dizi üzerinde abi.encode işlemi gerçekleştirildiğinde, bazı verilerin yanlışlıkla temizlenmesi, bitişik verilerin değiştirilmesine neden olabilir.
Solidity derleyici açığına yönelik, Cobo blok zinciri güvenlik ekibi aşağıdaki önerileri sunmaktadır:
Geliştiriciler için:
Güvenlik personeline:
Bazı pratik kaynaklar:
Geliştiriciler ve güvenlik uzmanları, derleyici güvenliğine dikkat ederek, testleri tamamlayarak, karmaşık özellikleri dikkatli bir şekilde kullanarak ve derleyici sürümünü zamanında güncelleyerek, Solidity derleyici açıklarının getirdiği riskleri etkili bir şekilde azaltabilir ve akıllı sözleşmelerin genel güvenliğini artırabilir.