Solidity Derleyici Açığı Analizi ve Müdahale Stratejileri
Derleyiciler, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürmektir. Çoğu geliştirici ve güvenlik uzmanı genellikle program uygulama kodunun güvenliğine odaklansa da, derleyicinin kendisinin güvenliği de aynı derecede önemlidir. Bir bilgisayar programı olarak derleyiciler de güvenlik açıklarına sahip olabilir ve bu açıklar bazı durumlarda ciddi güvenlik riskleri oluşturabilir.
Tarayıcıyı örnek alırsak, JavaScript kodunu derleyip yorumlarken, JavaScript motorundaki açıklar nedeniyle uzaktan kod çalıştırma gibi ciddi sonuçlar doğabilir. Solidity derleyicisi de bir istisna değildir, birçok 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. Solidity derleyici hatası ile EVM'nin kendi hatası arasında ayrım yapmak gerekir. EVM hatası, sanal makinenin talimatları yürütürken ortaya çıkan güvenlik sorunlarını ifade eder ve bu, tüm Ethereum ağını etkileyebilir. Öte yandan, Solidity derleyici hatası, derleme sürecindeki sorunları ifade eder; bu, doğrudan Ethereum ağını etkilemez, ancak üretilen EVM kodunun geliştiricinin beklediği ile tutarsız olmasına neden olabilir.
Solidity derleyici açıklarının bir tehlikesi, üretilen EVM kodunun akıllı sözleşme geliştiricisinin beklentileriyle uyuşmamasıdır. 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. Sadece sözleşme kaynak kodunu denetleyerek bu tür sorunların tespit edilmesi zordur; belirli bir derleyici sürümü ve kod modeli ile birlikte analiz yapılması gerekmektedir.
Aşağıda birkaç gerçek Solidity derleyici açığını örnek olarak vererek, bunların somut biçimlerini, nedenlerini ve tehlikelerini göstereceğim.
SOL-2016-9 HighOrderByteCleanStorage açığı, daha önceki Solidity derleyici sürümlerinde (>=0.1.6 <0.4.4) mevcuttur. Bu açık, storage değişkenlerinin değiştirilmeden beklenmeyen değerler döndürmesine neden olabilir. Bu tutarsızlık, yetki doğrulama, varlık muhasebesi gibi senaryolarda ciddi sonuçlara yol açabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects açığı >=0.8.13 <0.8.15 sürümündeki derleyicilerde bulunmaktadır. Bu açık, derleme optimizasyonu sürecinde inline assembly kodlarının hatalı işlenmesinden kaynaklanmakta olup, bazı bellek işlemlerinin yanlışlıkla kaldırılmasına neden olabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup açığı, 0.5.8 < 0.8.16 sürümlerindeki derleyicileri etkilemektedir. Bu açık, calldata türündeki dizilere abi.encode işlemi yapılırken veri tutarsızlığına yol açabilir.
Solidity derleyici açıklarının analizi temelinde, geliştiricilere ve güvenlik uzmanlarına aşağıdaki önerilerde bulunulmuştur:
Geliştirici:
Daha yeni bir Solidity derleyici sürümünü kullanın
Birim test senaryolarını geliştirin, kod kapsamını artırın
İç içe derleme, karmaşık abi kodlama ve kod çözme gibi işlemlerden kaçının
Yeni özellikler ve deneysel işlevleri dikkatli kullanın
Güvenlik Personeli:
Güvenlik denetimi sırasında derleyicinin getirebileceği riskleri dikkate alın.
SDL sürecinde derleyici sürüm yükseltmesini teşvik etmek
CI/CD'de derleyici sürümünün otomatik kontrolünü ekleme
Belirli projelere göre derleyici güvenlik açıklarının gerçek etkisini değerlendirin
Bazı pratik kaynaklar:
Solidity resmi olarak güvenlik uyarısı yayınladı
Solidity GitHub deposundaki hata listesi
Tüm sürüm derleyici hata listesi
Etherscan'daki derleyici açığı uyarısı
Özetle, Solidity derleyici açıkları nadir olsa da ciddi sonuçlar doğurabilir. Geliştiriciler ve güvenlik uzmanları dikkatli olmalı ve riski azaltmak için gerekli önlemleri almalıdır.
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.
8 Likes
Reward
8
5
Share
Comment
0/400
MetaverseHobo
· 18h ago
Yine bir dizi güvenlik açığı, neye panik yapıyorsun?
View OriginalReply0
OfflineValidator
· 18h ago
İki bin usdt kaybettim, düşük alım yüksek satış anlayışını düşürmek
Derleyiciye güvenerek yine açık verdim...
View OriginalReply0
FallingLeaf
· 18h ago
Açıklar beni çok korkutuyor, hiçbir şey oynamaya cesaret edemiyorum.
View OriginalReply0
PoetryOnChain
· 18h ago
Yine bir güvenlik açığını takip et, kaçtım kaçtım.
Solidity Derleyici Açığı Analizi: Riskler, Örnekler ve Mücadele Stratejileri
Solidity Derleyici Açığı Analizi ve Müdahale Stratejileri
Derleyiciler, modern bilgisayar sistemlerinin temel bileşenlerinden biridir ve işlevi, yüksek seviyeli programlama dili kaynak kodunu bilgisayarın çalıştırabileceği talimat koduna dönüştürmektir. Çoğu geliştirici ve güvenlik uzmanı genellikle program uygulama kodunun güvenliğine odaklansa da, derleyicinin kendisinin güvenliği de aynı derecede önemlidir. Bir bilgisayar programı olarak derleyiciler de güvenlik açıklarına sahip olabilir ve bu açıklar bazı durumlarda ciddi güvenlik riskleri oluşturabilir.
Tarayıcıyı örnek alırsak, JavaScript kodunu derleyip yorumlarken, JavaScript motorundaki açıklar nedeniyle uzaktan kod çalıştırma gibi ciddi sonuçlar doğabilir. Solidity derleyicisi de bir istisna değildir, birçok 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. Solidity derleyici hatası ile EVM'nin kendi hatası arasında ayrım yapmak gerekir. EVM hatası, sanal makinenin talimatları yürütürken ortaya çıkan güvenlik sorunlarını ifade eder ve bu, tüm Ethereum ağını etkileyebilir. Öte yandan, Solidity derleyici hatası, derleme sürecindeki sorunları ifade eder; bu, doğrudan Ethereum ağını etkilemez, ancak üretilen EVM kodunun geliştiricinin beklediği ile tutarsız olmasına neden olabilir.
Solidity derleyici açıklarının bir tehlikesi, üretilen EVM kodunun akıllı sözleşme geliştiricisinin beklentileriyle uyuşmamasıdır. 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. Sadece sözleşme kaynak kodunu denetleyerek bu tür sorunların tespit edilmesi zordur; belirli bir derleyici sürümü ve kod modeli ile birlikte analiz yapılması gerekmektedir.
Aşağıda birkaç gerçek Solidity derleyici açığını örnek olarak vererek, bunların somut biçimlerini, nedenlerini ve tehlikelerini göstereceğim.
SOL-2016-9 HighOrderByteCleanStorage açığı, daha önceki Solidity derleyici sürümlerinde (>=0.1.6 <0.4.4) mevcuttur. Bu açık, storage değişkenlerinin değiştirilmeden beklenmeyen değerler döndürmesine neden olabilir. Bu tutarsızlık, yetki doğrulama, varlık muhasebesi gibi senaryolarda ciddi sonuçlara yol açabilir.
SOL-2022-4 InlineAssemblyMemorySideEffects açığı >=0.8.13 <0.8.15 sürümündeki derleyicilerde bulunmaktadır. Bu açık, derleme optimizasyonu sürecinde inline assembly kodlarının hatalı işlenmesinden kaynaklanmakta olup, bazı bellek işlemlerinin yanlışlıkla kaldırılmasına neden olabilir.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup açığı, 0.5.8 < 0.8.16 sürümlerindeki derleyicileri etkilemektedir. Bu açık, calldata türündeki dizilere abi.encode işlemi yapılırken veri tutarsızlığına yol açabilir.
Solidity derleyici açıklarının analizi temelinde, geliştiricilere ve güvenlik uzmanlarına aşağıdaki önerilerde bulunulmuştur:
Geliştirici:
Güvenlik Personeli:
Bazı pratik kaynaklar:
Özetle, Solidity derleyici açıkları nadir olsa da ciddi sonuçlar doğurabilir. Geliştiriciler ve güvenlik uzmanları dikkatli olmalı ve riski azaltmak için gerekli önlemleri almalıdır.
Derleyiciye güvenerek yine açık verdim...