Merkezi Olmayan Finans Yaygın Güvenlik Açıkları ve Önleme Tedbirleri
Son zamanlarda, bir güvenlik uzmanı topluluk üyeleri için bir Merkezi Olmayan Finans güvenlik dersi paylaştı. Geçtiğimiz bir yıldan fazla sürede Web3 sektörünün karşılaştığı önemli güvenlik olaylarını gözden geçirdi, bu güvenlik olaylarının nedenlerini ve nasıl önlenebileceğini tartıştı, yaygın akıllı sözleşmelerin güvenlik açıklarını ve önleyici tedbirleri özetledi, ayrıca proje sahipleri ve sıradan kullanıcılar için bazı güvenlik önerileri sundu.
Yaygın DeFi zayıflık türleri genellikle hızlı krediler, fiyat manipülasyonu, fonksiyon yetki sorunları, rastgele dış çağrılar, fallback fonksiyonu sorunları, iş mantığı zayıflıkları, özel anahtar sızıntıları ve yeniden giriş saldırılarını içerir. Bu makalede hızlı krediler, fiyat manipülasyonu ve yeniden giriş saldırıları gibi üç tür üzerinde durulacaktır.
Hızlı Kredi
Lightning loans, kendisi Merkezi Olmayan Finans'ın bir yeniliğidir, ancak bir hacker tarafından kullanıldığında, herhangi bir maliyet ödemeden büyük miktarda fon alabilirler, arbitraj yaptıktan sonra geri ödeyebilirler ve sadece küçük bir Gas ücreti ödeyerek büyük kazançlar elde edebilirler.
Birçok Merkezi Olmayan Finans projesi yüksek getiri sağlıyormuş gibi görünse de, aslında projelerin kalitesi değişkenlik göstermektedir. Bazı projelerin kodları satın alınmış olabilir; kodun kendisi güvenli olsa bile, mantıksal olarak hâlâ sorunlar bulunabilir. Örneğin, bir proje belirli zamanlarda, token sahiplerinin sahip olduğu token sayısına göre ödül dağıtıyorsa, saldırganlar bu ödülleri almak için flash loan kullanarak büyük miktarda token satın alabilir ve ödül dağıtıldığında bu ödüllerin çoğunu elde edebilir.
Ayrıca, fiyatları hesaplamak için token kullanan bazı projeler bulunmaktadır; bu projelerin fiyatlarını hızlı kredi ile etkilemek mümkündür. Proje sahipleri bu sorunlara karşı dikkatli olmalıdır.
Fiyat Manipülasyonu
Fiyat manipülasyonu sorunları ve flash kredi ilişkisi yakından bağlantılıdır, başlıca iki yaygın türü vardır:
Fiyat hesaplamasında üçüncü taraf verileri kullanılır, ancak kullanım şekli yanlış veya kontroller eksik olduğu için fiyat kötü niyetli bir şekilde manipüle edilir.
Hesaplama değişkeni olarak belirli adreslerin token miktarlarını kullanın, bu adreslerin token bakiyeleri geçici olarak artırılabilir veya azaltılabilir.
Yeniden Giriş Saldırısı
Dış sözleşmeleri çağırmanın en büyük tehlikelerinden biri, kontrol akışını ele geçirebilmeleri ve veriler üzerinde işlev çağrılarında beklenmeyen değişiklikler yapabilmeleridir. Örneğin:
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender];
(bool success, ) = msg.sender.call.value(amountToWithdraw)("");
require(başarılı);
userBalances[msg.sender] = 0;
}
Kullanıcının bakiyesi fonksiyonun sonuna kadar 0 olarak ayarlandığı için, ikinci (ve sonraki) çağrılar yine başarılı olacak ve bakiye tekrar tekrar çekilecektir.
Reentrancy sorununu çözmek için aşağıdaki noktalara dikkat etmek gerekir:
Sadece tek bir fonksiyonun yeniden giriş problemini önlemek için değil
Checks-Effects-Interactions modelini takip ederek kodlama yapın
Zamanla test edilmiş reentrancy modifier'ı kullanın
Bu alanda birçok en iyi güvenlik uygulaması var, bunları doğrudan kullanmalıyız, tekerleği yeniden icat etmek yerine. Olgun, kanıtlanmış çözümler kullanmak, kendi geliştirdiğimiz yeni çözümlerden sorun yaşama olasılığımızdan çok daha düşük.
Proje Ekibi Güvenlik Önerileri
Sözleşme geliştirme en iyi güvenlik uygulamalarına uymalı.
Sözleşmeler yükseltilebilir ve durdurulabilir: Birçok saldırı, paranın tamamını bir seferde almak yerine, birden çok işlemle gerçekleştirilir. Eğer nispeten sağlam bir izleme mekanizması varsa, sözleşmeyi zamanında durdurup kaybı etkili bir şekilde azaltabilir.
Zaman kilidinin kullanılması: Eğer bir zaman kilidi varsa, anormallikleri fark etmek ve harekete geçmek için yeterli zaman tanıyabilir.
Güvenlik yatırımlarını artırmak, kapsamlı bir güvenlik sistemi kurmak: Güvenlik bir sistemdir, yalnızca sözleşme denetimini değil, aynı zamanda özel anahtar yönetimi, ekonomik model gibi birçok unsuru da içerir.
Tüm çalışanların güvenlik bilincini artırmak: Birçok güvenlik sorunu, dikkat artırılarak önlenebilir.
İçeriden kötüye kullanımı önlemek, verimliliği artırırken risk kontrolünü güçlendirmek: Çoklu imza, zaman kilidi gibi mekanizmalar kullanarak verimliliği artırırken güvenliği de artırmak mümkündür.
Üçüncü tarafın güvenliği sağlama: Hem yukarı hem de aşağı akış için güvenlik kontrolü yapılmalı, özellikle açık kaynak olmayan sözleşmeler için özel dikkat gösterilmelidir.
Kullanıcı/LP Akıllı Sözleşmenin Güvenliğini Nasıl Değerlendirir?
Sözleşme açık kaynak mı: Açık kaynak olmayan projelere katılmayın.
Sahip çoklu imza kullanıyor mu, çoklu imza merkeziyetsiz mi.
Sözleşmenin mevcut işlem durumunu kontrol et: dağıtım zamanı, etkileşim sayısı vb.
Sözleşme bir vekil sözleşmesi mi, yükseltilebilir mi, zaman kilidi var mı?
Sözleşme birden fazla kurum tarafından denetimden geçti mi, Owner yetkisi fazla mı.
Oracle'lara Dikkat: Tanınmış oracle kullanan projeler genellikle daha güvenlidir; kendi oluşturulan veya kolayca manipüle edilebilen oracle'lara karşı özellikle dikkatli olunmalıdır.
Sonuç olarak, Web3 ortamında dikkatli olmak ve birkaç neden sormak, birçok potansiyel riski önlemenizi sağlar. Hem proje sahipleri hem de sıradan kullanıcılar güvenlik sorunlarına önem vermeli, sağlam bir güvenlik bilinci ve önlem mekanizması oluşturmalı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.
9 Likes
Reward
9
6
Share
Comment
0/400
MEVHunterNoLoss
· 15h ago
Bu güvenlik sorunları bir der sayılır.
View OriginalReply0
AirdropHustler
· 08-01 17:58
Henüz airdrop'u nasıl yapacağınızı öğretmek daha iyi.
View OriginalReply0
BearMarketBuilder
· 08-01 17:53
Tüm açıkları sen paylaştın, hackerlar neyle oynayacak?
View OriginalReply0
LightningAllInHero
· 08-01 17:51
Başka bir şey söyleme, en son Hepsi içeride kaybetmemin sebebi Flaş Kredilerdi.
View OriginalReply0
FUD_Whisperer
· 08-01 17:45
Altı aydan fazla DeFi ile uğraşmak, bir hackerın hızına yetişememek demek.
Merkezi Olmayan Finans güvenlik kılavuzu: Flaş Krediler, fiyat manipülasyonu ve yeniden giriş saldırılarına karşı önleme stratejileri
Merkezi Olmayan Finans Yaygın Güvenlik Açıkları ve Önleme Tedbirleri
Son zamanlarda, bir güvenlik uzmanı topluluk üyeleri için bir Merkezi Olmayan Finans güvenlik dersi paylaştı. Geçtiğimiz bir yıldan fazla sürede Web3 sektörünün karşılaştığı önemli güvenlik olaylarını gözden geçirdi, bu güvenlik olaylarının nedenlerini ve nasıl önlenebileceğini tartıştı, yaygın akıllı sözleşmelerin güvenlik açıklarını ve önleyici tedbirleri özetledi, ayrıca proje sahipleri ve sıradan kullanıcılar için bazı güvenlik önerileri sundu.
Yaygın DeFi zayıflık türleri genellikle hızlı krediler, fiyat manipülasyonu, fonksiyon yetki sorunları, rastgele dış çağrılar, fallback fonksiyonu sorunları, iş mantığı zayıflıkları, özel anahtar sızıntıları ve yeniden giriş saldırılarını içerir. Bu makalede hızlı krediler, fiyat manipülasyonu ve yeniden giriş saldırıları gibi üç tür üzerinde durulacaktır.
Hızlı Kredi
Lightning loans, kendisi Merkezi Olmayan Finans'ın bir yeniliğidir, ancak bir hacker tarafından kullanıldığında, herhangi bir maliyet ödemeden büyük miktarda fon alabilirler, arbitraj yaptıktan sonra geri ödeyebilirler ve sadece küçük bir Gas ücreti ödeyerek büyük kazançlar elde edebilirler.
Birçok Merkezi Olmayan Finans projesi yüksek getiri sağlıyormuş gibi görünse de, aslında projelerin kalitesi değişkenlik göstermektedir. Bazı projelerin kodları satın alınmış olabilir; kodun kendisi güvenli olsa bile, mantıksal olarak hâlâ sorunlar bulunabilir. Örneğin, bir proje belirli zamanlarda, token sahiplerinin sahip olduğu token sayısına göre ödül dağıtıyorsa, saldırganlar bu ödülleri almak için flash loan kullanarak büyük miktarda token satın alabilir ve ödül dağıtıldığında bu ödüllerin çoğunu elde edebilir.
Ayrıca, fiyatları hesaplamak için token kullanan bazı projeler bulunmaktadır; bu projelerin fiyatlarını hızlı kredi ile etkilemek mümkündür. Proje sahipleri bu sorunlara karşı dikkatli olmalıdır.
Fiyat Manipülasyonu
Fiyat manipülasyonu sorunları ve flash kredi ilişkisi yakından bağlantılıdır, başlıca iki yaygın türü vardır:
Fiyat hesaplamasında üçüncü taraf verileri kullanılır, ancak kullanım şekli yanlış veya kontroller eksik olduğu için fiyat kötü niyetli bir şekilde manipüle edilir.
Hesaplama değişkeni olarak belirli adreslerin token miktarlarını kullanın, bu adreslerin token bakiyeleri geçici olarak artırılabilir veya azaltılabilir.
Yeniden Giriş Saldırısı
Dış sözleşmeleri çağırmanın en büyük tehlikelerinden biri, kontrol akışını ele geçirebilmeleri ve veriler üzerinde işlev çağrılarında beklenmeyen değişiklikler yapabilmeleridir. Örneğin:
katılık mapping (address => uint) private userBalances;
function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(başarılı); userBalances[msg.sender] = 0; }
Kullanıcının bakiyesi fonksiyonun sonuna kadar 0 olarak ayarlandığı için, ikinci (ve sonraki) çağrılar yine başarılı olacak ve bakiye tekrar tekrar çekilecektir.
Reentrancy sorununu çözmek için aşağıdaki noktalara dikkat etmek gerekir:
Bu alanda birçok en iyi güvenlik uygulaması var, bunları doğrudan kullanmalıyız, tekerleği yeniden icat etmek yerine. Olgun, kanıtlanmış çözümler kullanmak, kendi geliştirdiğimiz yeni çözümlerden sorun yaşama olasılığımızdan çok daha düşük.
Proje Ekibi Güvenlik Önerileri
Sözleşme geliştirme en iyi güvenlik uygulamalarına uymalı.
Sözleşmeler yükseltilebilir ve durdurulabilir: Birçok saldırı, paranın tamamını bir seferde almak yerine, birden çok işlemle gerçekleştirilir. Eğer nispeten sağlam bir izleme mekanizması varsa, sözleşmeyi zamanında durdurup kaybı etkili bir şekilde azaltabilir.
Zaman kilidinin kullanılması: Eğer bir zaman kilidi varsa, anormallikleri fark etmek ve harekete geçmek için yeterli zaman tanıyabilir.
Güvenlik yatırımlarını artırmak, kapsamlı bir güvenlik sistemi kurmak: Güvenlik bir sistemdir, yalnızca sözleşme denetimini değil, aynı zamanda özel anahtar yönetimi, ekonomik model gibi birçok unsuru da içerir.
Tüm çalışanların güvenlik bilincini artırmak: Birçok güvenlik sorunu, dikkat artırılarak önlenebilir.
İçeriden kötüye kullanımı önlemek, verimliliği artırırken risk kontrolünü güçlendirmek: Çoklu imza, zaman kilidi gibi mekanizmalar kullanarak verimliliği artırırken güvenliği de artırmak mümkündür.
Üçüncü tarafın güvenliği sağlama: Hem yukarı hem de aşağı akış için güvenlik kontrolü yapılmalı, özellikle açık kaynak olmayan sözleşmeler için özel dikkat gösterilmelidir.
Kullanıcı/LP Akıllı Sözleşmenin Güvenliğini Nasıl Değerlendirir?
Sözleşme açık kaynak mı: Açık kaynak olmayan projelere katılmayın.
Sahip çoklu imza kullanıyor mu, çoklu imza merkeziyetsiz mi.
Sözleşmenin mevcut işlem durumunu kontrol et: dağıtım zamanı, etkileşim sayısı vb.
Sözleşme bir vekil sözleşmesi mi, yükseltilebilir mi, zaman kilidi var mı?
Sözleşme birden fazla kurum tarafından denetimden geçti mi, Owner yetkisi fazla mı.
Oracle'lara Dikkat: Tanınmış oracle kullanan projeler genellikle daha güvenlidir; kendi oluşturulan veya kolayca manipüle edilebilen oracle'lara karşı özellikle dikkatli olunmalıdır.
Sonuç olarak, Web3 ortamında dikkatli olmak ve birkaç neden sormak, birçok potansiyel riski önlemenizi sağlar. Hem proje sahipleri hem de sıradan kullanıcılar güvenlik sorunlarına önem vermeli, sağlam bir güvenlik bilinci ve önlem mekanizması oluşturmalıdır.