CVE-2024-38365
Açıklama
btcd, Go (golang) ile yazılmış alternatif bir tam düğüm (full node) bitcoin uygulamasıdır. btcd Bitcoin istemcisi (versiyonlar 0.10 ile 0.24), Bitcoin Core'un "FindAndDelete()" işlevselliğini doğru şekilde yeniden uygulamamıştır. Bu mantık konsensüs açısından kritiktir: diğer Bitcoin istemcileriyle davranış farkı, btcd istemcilerinin geçersiz bir Bitcoin bloğunu kabul etmesine (veya geçerli olanı reddetmesine) yol açabilir. Bu konsensüs hatası, bir zincir bölünmesine (geçersiz bir Bitcoin bloğunun kabul edilmesi) neden olmak için kullanılabilir veya btcd düğümlerine DoS saldırısı düzenlemek (geçerli bir Bitcoin bloğunun reddedilmesi) için istismar edilebilir. Bir saldırgan, FindAndDelete fonksiyonunun eşleşme döndürmediği ancak removeOpCodeByData fonksiyonunun döndürdüğü standart bir işlem oluşturarak btcd'nin farklı bir sighash almasını sağlayabilir ve bu da zincir bölünmesine yol açabilir. Önemli olan nokta, bu zafiyetin herhangi bir Bitcoin kullanıcısı tarafından uzaktan istismar edilebilmesidir ve herhangi bir hash gücü gerektirmez. Bunun nedeni, davranış farkının, bir Bitcoin bloğuna dahil edilmeden önce P2P ağı üzerinden aktarılan "standart" bir Bitcoin işlemi ile tetiklenebilmesidir. `removeOpcodeByData(script []byte, dataToRemove []byte)`, `script` içerisindeki `dataToRemove` içeren tüm veri itmelerini kaldırır. Ancak, `FindAndDelete` yalnızca tam eşleşmeleri kaldırır. Örneğin; `script = "<data> <data||foo>"` ve `dataToRemove = "data"` durumunda btcd her iki veri itmesini de kaldırırken, Bitcoin Core'un `FindAndDelete` fonksiyonu yalnızca ilk `<data>` itmesini kaldırır. Bu sorun btcd versiyon v0.24.2 ile düzeltilmiştir. Kullanıcıların yükseltme yapmaları önerilir. Bu sorun için bilinen bir geçici çözüm yoktur.
Nasıl düzeltilir
- btcd_project btcd0.24.2 ya da sonraki bir sürüm
- github.com/btcsuite/btcd0.24.2-beta.rc1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| btcd_project btcd | 0.10.0 ≤ v < 0.24.2 | 0.24.2 |
| github.com/btcsuite/btcdGo | v < 0.24.2-beta.rc1 | 0.24.2-beta.rc1 |
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.
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.