Penligent Başlık

PenligentAI blockchain akıllı sözleşme güvenlik açığını otomatik olarak tespit ediyor

Yapay zeka TOCTOU çifte harcama riskini buldu

Kontrol Zamanı-Kullanım Zamanı yarış koşulları, bir sistemin karar noktası ile bu karara göre hareket edildiği an arasındaki boşluğu dolduran bir zamanlama hatası sınıfıdır. Blok zinciri ödeme akışlarında, böyle bir boşluk tek bir geçerli satın alma ile çift harcama arasındaki fark olabilir. Kod bir bakiyeyi okuyup daha sonra bir satın alma işlemi uyguladığında, neredeyse eş zamanlı işlemler gönderebilen ya da yeniden sıralamayı istismar edebilen bir saldırgan, durum güncellemesi yalnızca bir kez gerçekleşirken kontrolün iki kez başarılı olmasını sağlayabilir. Çift harcama TOCTOU'nun kalbi budur.

TOCTOU çift harcama riski nedir

Penligent nasıl çalışır?

Penligent'ın bu sorunları bulma yaklaşımı tahmin yürütmek değildir. "Check-then-act" deyimlerini işaretleyen statik analiz modelleriyle başlar - bakiyenin veya yetkinin okunduğu ve sonraki bir yazmanın bir yetki sayacını güncellediği kod satırları. Bu işaretli konumlar bağlam alır: kod yolunun çağrı grafiği, onu çağıran ağ uç noktası ve yaptığı çevresel varsayımlar (örneğin, "tek iş parçacıklı güncellemeleri varsayar" veya "bir sonraki adımdan önce blok onaylarını varsayar"). Bu bağlamla Penligent kontrollü doğrulamayı tetikler: hazırlama uç noktalarına karşı tahribatsız problar, mevcut olduğunda işlem izleriyle korelasyon ve neredeyse eşzamanlı gönderimler altında davranışı örnekleyen hedefli eşzamanlılık testleri.

Somut olarak, savunmasız bir akış üretimde şu şekilde görünebilir: uygulama şunları kontrol eder balance[shop_address] == 1_000_000 ve ardından alıcının elmas sayısını artırır. Bir saldırgan, kontrol ile etkin durum değişikliği arasındaki süre içinde gelen iki adet 1.000.000 DDCoin işlemi gönderir. Kontrol, her iki işlem de gerçekleştirilmeden önce çalıştığından, her iki kontrol de geçer ve kullanıcı yalnızca bir birim varlık harcarken iki elmas kazanır. Penligent, istek/yanıt izlerini, işlem kimliklerini, blok zaman damgalarını ve gözlemlenebilir yarış eserlerini toplayarak kanıtları bir araya getirir, ardından bunları kontrolü gerçekleştiren statik kod konumuna bağlar.

Penligent çifte harcama riskini nasıl bulur?

TOCOTOU Nasıl Onarılır

Blok zinciri bağlamlarında TOCTOU'yu düzeltmek genellikle bakiye kontrolü ve durum değişikliğini atomik hale getirmek anlamına gelir. Geleneksel arka uçlarda bu, güçlü izolasyon seviyelerine ve mutekslere sahip veritabanı işlemleri ya da yeniden denemeli iyimser eşzamanlılık şemaları anlamına gelir. Akıllı sözleşmelerde bu, sözleşmenin durum geçişlerinin tek bir işlemde gerçekleştirileceği şekilde tasarlanması ya da tekrarlanan veya yinelenen işlemleri önlemek için nonces ve açık hesap başına sıra numaraları gibi mekanizmaların kullanılması anlamına gelir. Aşağıdaki güvenli sözde kod, saldırılabilirlikten ziyade atomikliği ve doğruluğu vurgulayan savunma modelini göstermektedir:

# savunma sözde kodu: serileştirilebilir bir işlem içinde atomik güncelleme
db.transaction(isolation="serializable") ile:
    bakiye[mağaza_adresi] >= FİYAT ise:
        balance[shop_address] -= PRICE
        session["your_diamonds"] += 1
    else:
        raise InsufficientBalanceError()

Operasyonel olarak, ek önlemler yardımcı olur: işlem gönderimlerinde nonces veya monotonik sayaçlar gerektirir, API ağ geçidinde işlemlerin sıkı bir şekilde sıralanmasını sağlar ve eşzamanlı gönderim modellerinin yeniden oluşturulabilmesi için tam izlenebilirlik sağlar. Hız sınırlama ve gruplama da eşzamanlılığın kullanılabileceği pratik pencereyi azaltabilir.

Tespit açısından bakıldığında, Penligent'ın gerçek değeri sinyalleri birleştirmesinde yatmaktadır. Statik göstergeler tek başına birçok yanlış pozitif üretir; çalışma zamanı telemetrisi tek başına kaynak kodla doğrudan bağlantıdan yoksundur. Penligent, statik kod bulgularını gerçek yürütme kanıtlarına bağlar: hangi uç noktaların çağrıldığı, zincir üzerinde hangi işlem kimliklerinin gözlemlendiği ve hangi olaylar dizisinin durum farklılaşmasına yol açtığı. Sonuç, eyleme geçirilebilir bir kanıt paketidir: geliştiriciler düzeltmek için tam kaynak satırlarını alır, operasyonlar bir tersine çevirme veya hafifletmeyi doğrulamak için işlem izlerini alır ve güvenlik ekipleri öncelikli bir iyileştirme planı elde eder.

Bu modeli benimseyen ekipler için iş akışı daha hızlı ve daha hesap verebilir hale gelir. Aylarca süren manuel triyaj yerine, tekrarlanabilir kanıtlar ve net bir düzeltme yolu elde edersiniz. Düzeltme, süreçle ilgili olduğu kadar mühendislikle de ilgilidir: ürün sahipleri atomiklik kısıtlamalarını kabul etmeli, operasyonlar dağıtımda işlemsel izolasyonu sağlamalı ve güvenlik, hedeflenen yeniden çalıştırmalarla hafifletmeleri doğrulamalıdır.

Önerilen Penligent istemi (doğal dil) - dahili kullanım için

Penligent'ın belirli bir hizmette TOCTOU tarzı çift harcama risklerini taramasını istiyorsanız, kısa bir istem şöyle olabilir:

"Ödeme uç noktasını şu adreste tarayın https://staging.example.com/create_transaction TOCTOU ve çift harcama yarış koşulları için. Bakiyeleri veya yetkilendirmeleri okuyan ve ardından durumu yazan kod yollarına odaklanın. Tahribatsız doğrulama örnekleri oluşturun, eşzamanlı işlem izlerini ilişkilendirin ve kaynak konumları ve öncelikli düzeltmelerle birlikte bir kanıt paketi oluşturun."

Bu istem, Penligent'a statik desen eşleştirmeyi güvenli çalışma zamanı doğrulaması ve kanıt korelasyonu ile birleştirmesi talimatını verir.

Gönderiyi paylaş:
İlgili Yazılar