Solidity Derleyici Açık Analizi ve Müdahale Stratejileri
Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve ana işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürmektir. Uygulama kodu güvenliği ile karşılaştırıldığında, derleyicinin kendine ait güvenlik sorunları genellikle göz ardı edilir. Ancak, derleyici açıkları belirli senaryolar altında ciddi güvenlik riskleri de doğurabilir.
Solidity derleyicisinin rolü, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimat koduna dönüştürmektir. EVM'nin kendisindeki güvenlik açıklarından farklı olarak, Solidity derleyici güvenlik açıkları doğrudan Ethereum ağına etki etmez, ancak üretilen EVM kodunun geliştiricilerin beklediğiyle uyumsuz olmasına neden olabilir, bu da akıllı sözleşmenin normal çalışmasını etkileyebilir ve potansiyel olarak kullanıcı varlıklarının kaybına yol açabilir.
Aşağıda bazı gerçek Solidity derleyici hatası örnekleri verilmiştir:
SOL-2016-9 YüksekDüzeyBaytTemizDepolama
Bu güvenlik açığı, daha eski sürüm Solidity derleyicisinde (>=0.1.6 <0.4.4) mevcuttur. Derleyici, tam sayı taşmalarıyla başa çıkarken yüksek bitleri düzgün bir şekilde temizlemediğ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 ile 0.8.15 sürümleri arasındaki derleyicide bulunmaktadır. Derleyici optimizasyon stratejisi nedeniyle, içeri alınmış assembly'deki bellek yazma talimatlarını yanlışlıkla kaldırabilir ve bu da programın davranışının beklentilerle uyuşmamasına neden olabilir.
Bu güvenlik açığı, 0.5.8 ile 0.8.16 sürümleri arasındaki derleyicileri etkilemektedir. calldata türündeki bir dizi üzerinde abi.encode işlemi yapılırken, komşu verilerin yanlış bir şekilde değiştirilmesine neden olabilir ve bu da kodlama ve çözme sonrası verilerin tutarsız olmasına yol açabilir.
Birim test vakalarını iyileştirmek ve kod kapsamını artırmak
Karmaşık dil özelliklerini, örneğin, iç içe montaj, çok boyutlu dizilerin abi kodlama ve kod çözme gibi kullanmaktan kaçının.
Güvenlik denetçileri için öneriler:
Denetim sürecinde derleyicinin getirebileceği güvenlik risklerini dikkate alın.
SDL sürecinde geliştirme ekibini derleyici sürümünü güncellemeye teşvik et
CI/CD'de derleyici sürümünün otomatik kontrolünün eklenmesi
Dikkate değer bir husus, çoğu derleyici açığının yalnızca belirli kod desenlerinde tetiklendiğidir; bu nedenle, bir güvenlik açığına sahip derleyici sürümünün kullanılması, sözleşmenin mutlaka bir güvenlik riski taşıdığı anlamına gelmez, gerçek etki spesifik olarak değerlendirilmelidir.
Solidity derleyicisinin güvenlik sorunlarına sürekli dikkat etmek için aşağıdaki kaynaklara bakabilirsiniz:
Solidity ekibi tarafından yayınlanan güvenlik uyarısı
Solidity resmi repo içindeki hata listesi
Tüm sürümlerin derleyicileri için hata listesi
Etherscan üzerindeki akıllı sözleşme kodu sayfasındaki güvenlik uyarısı
Derleyici güvenliğine dikkat ederek, dil özelliklerini makul bir şekilde kullanarak ve dikkatli kalarak, geliştiriciler ve güvenlik uzmanları akıllı sözleşmelerin güvenliğini daha iyi sağlayabilirler.
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
5
Share
Comment
0/400
ConsensusBot
· 21h ago
Bu yükü kim taşıyacak?
View OriginalReply0
RebaseVictim
· 21h ago
Aman Tanrım, hala eski sürüm derleyici kullanmaya cesaret edenler var.
Solidity Derleyici Açıkları ve Yanıt Stratejilerinin Analizi
Solidity Derleyici Açık Analizi ve Müdahale Stratejileri
Derleyici, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve ana işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürmektir. Uygulama kodu güvenliği ile karşılaştırıldığında, derleyicinin kendine ait güvenlik sorunları genellikle göz ardı edilir. Ancak, derleyici açıkları belirli senaryolar altında ciddi güvenlik riskleri de doğurabilir.
Solidity derleyicisinin rolü, akıllı sözleşme kodunu Ethereum sanal makinesi (EVM) talimat koduna dönüştürmektir. EVM'nin kendisindeki güvenlik açıklarından farklı olarak, Solidity derleyici güvenlik açıkları doğrudan Ethereum ağına etki etmez, ancak üretilen EVM kodunun geliştiricilerin beklediğiyle uyumsuz olmasına neden olabilir, bu da akıllı sözleşmenin normal çalışmasını etkileyebilir ve potansiyel olarak kullanıcı varlıklarının kaybına yol açabilir.
Aşağıda bazı gerçek Solidity derleyici hatası örnekleri verilmiştir:
Bu güvenlik açığı, daha eski sürüm Solidity derleyicisinde (>=0.1.6 <0.4.4) mevcuttur. Derleyici, tam sayı taşmalarıyla başa çıkarken yüksek bitleri düzgün bir şekilde temizlemediğinden, bitişik değişkenlerin değerlerinin yanlışlıkla değiştirilmesine neden olabilir.
Bu güvenlik açığı 0.8.13 ile 0.8.15 sürümleri arasındaki derleyicide bulunmaktadır. Derleyici optimizasyon stratejisi nedeniyle, içeri alınmış assembly'deki bellek yazma talimatlarını yanlışlıkla kaldırabilir ve bu da programın davranışının beklentilerle uyuşmamasına neden olabilir.
Bu güvenlik açığı, 0.5.8 ile 0.8.16 sürümleri arasındaki derleyicileri etkilemektedir. calldata türündeki bir dizi üzerinde abi.encode işlemi yapılırken, komşu verilerin yanlış bir şekilde değiştirilmesine neden olabilir ve bu da kodlama ve çözme sonrası verilerin tutarsız olmasına yol açabilir.
Solidity derleyici açığına karşı, geliştiricilere önerilir:
Güvenlik denetçileri için öneriler:
Dikkate değer bir husus, çoğu derleyici açığının yalnızca belirli kod desenlerinde tetiklendiğidir; bu nedenle, bir güvenlik açığına sahip derleyici sürümünün kullanılması, sözleşmenin mutlaka bir güvenlik riski taşıdığı anlamına gelmez, gerçek etki spesifik olarak değerlendirilmelidir.
Solidity derleyicisinin güvenlik sorunlarına sürekli dikkat etmek için aşağıdaki kaynaklara bakabilirsiniz:
Derleyici güvenliğine dikkat ederek, dil özelliklerini makul bir şekilde kullanarak ve dikkatli kalarak, geliştiriciler ve güvenlik uzmanları akıllı sözleşmelerin güvenliğini daha iyi sağlayabilirler.