CVE-2024-24563

Kritik

Açıklama

Vyper, Ethereum Virtual Machine için Python benzeri bir Akıllı Sözleşme Dilidir. Diziler yalnızca işaretsiz tam sayılar (unsigned integers) için tanımlanmış olmasına rağmen, işaretli bir tam sayı (signed integer) ile anahtarlanabilmektedir. Tip denetleyicisi, bir dizinin indeksi olarak `int` kullanımı tespit edildiğinde hata vermemektedir. Tip denetleyicisi, dizi indeksleri olarak işaretli tam sayıların kullanılmasına izin vermektedir. Bu güvenlik açığı, `0.3.10` dahil tüm sürümlerde farklı biçimlerde mevcuttur. Tam sayılar için 2'ye tümleyen (2's complement) gösterimi kullanılır. Dizi çok büyük tanımlandığı için sınır kontrolü başarılı olacaktır; negatif değerler basitçe çok büyük sayılar olarak temsil edilecektir. Yayınlandığı tarih itibarıyla düzeltilmiş bir sürüm mevcut değildir. Üç potansiyel güvenlik açığı sınıfı bulunmaktadır: öngörülemeyen davranış, erişilemez öğelere erişim ve hizmet reddi. Sınıf 1: Bir diziyi geri alma (revert) işlemi olmadan negatif bir tam sayı ile indekslemek mümkünse, bu durum muhtemelen geliştirici tarafından öngörülmemiştir ve bu tür erişimler sözleşme için öngörülemeyen davranışlara neden olabilir. Sınıf 2: Eğer bir sözleşmede `assert index < x` şeklinde bir değişmez (invariant) varsa, geliştirici `y | y >= x` indekslerindeki hiçbir öğenin erişilebilir olmadığını varsayacaktır. Ancak, negatif indeksler kullanılarak bu durum atlatılabilir. Sınıf 3: İndeks sözleşmenin durumuna bağlıysa, bu durum hizmet reddi riski oluşturur. Sözleşmenin durumu, indeksin negatif olmaya zorlanacağı şekilde manipüle edilebilirse, dizi erişimi her zaman geri dönebilir (çünkü büyük olasılıkla dizi aşırı büyük tanımlanmamıştır). Bununla birlikte, tüm bu senaryolar oldukça düşük ihtimaldir. En muhtemel davranış, sınır kontrolünde geri dönme (revert) işlemidir.

ÖnemKritik
CVSS9.8
İstismar olasılığı—
ÜrünVyper
Yayın7 Şub 2024
İlk görülme7 Şub 2024
Zayıflık türüCWE-129CWE-129

Nasıl düzeltilir

Güncelleyin
  • vyper0.4.0, 0.4.0b1 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
vyperlang vyperv ≤ 0.3.10—
vyperPyPIv < 0.4.0, v < 0.4.0b10.4.0, 0.4.0b1

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.