- Son 7 gün
- CWE-354
CVE-2026-107846
bitcoinjs-lib: Merkle kökü doğrulamasında kopya düğüm tespit edilmiyor
- Yayımlandı
- Güncellendi
- 4 Kas 2026
- Açık yaşı
- 1 gün
- Kaydı açan
- GitHub_M
Yönetici özeti
Bu açık, blok zinciri verilerini işleyen kuruluşlarda çift kayıt, yanlış bakiye veya meşru işlemlerin reddedilmesi gibi iş riskleri doğurabilir. Bu tür yazılımları kullanan ekiplerin güncellemeyi kısa sürede yapması önerilir.
ÖzetTürkçe
bitcoinjs-lib kütüphanesinin 2.3.0 sürümünden itibaren, 5.2.1, 6.1.8 ve 7.0.2 sürümlerinden önceki sürümlerinde fastMerkleRoot fonksiyonu, tek sayıda kalan Merkle ağacı seviyelerini son düğümü kendisiyle hashleyerek doldurur ancak ardışık kopya hash değerlerini bildirmez. Bu nedenle blok kök doğrulaması, işlem listesinin değiştirildiğini fark etmeden kabul edebilir. Blok zinciri gezginleri, borsa indeksleyicileri ve SPV istemcileri gibi blok kökü doğrulamasına güvenen uygulamalar etkilenir.
Saldırgan ne yapabilir?
Saldırgan, aynı Merkle kökünü, blok başlığını ve blok kimliğini koruyan ancak kopya işlemler içeren farklı bir işlem listesi sunabilir. Bu durum bir işlemin iki kez işlenmesine veya dürüst bloğun kara listeye alınıp reddedilmesine yol açabilir.
Kaynaktaki açıklama (İngilizce)
bitcoinjs-lib is a JavaScript Bitcoin library for Node.js and browsers. From 2.3.0 until 5.2.1, 6.1.8, and 7.0.2, fastMerkleRoot pads odd Merkle-tree levels by hashing the final node with itself but does not report adjacent duplicate hashes. The affected block-root verifier was introduced as Block.checkMerkleRoot() alongside Block.calculateMerkleRoot(), while later versions expose validation through checkTxRoots() and __checkMerkleRoot; these validation paths can accept a recomputed root without checking for mutation. A peer can append duplicate transactions so a different transaction list retains the original Merkle root, block header, proof of work, and block identifier. Consumers that rely on block-root validation, including explorers, exchange indexers, or SPV clients, can process a duplicated transaction twice or blacklist the shared block hash and reject the honest block. This issue is fixed in versions 5.2.1, 6.1.8, and 7.0.2.
Ne yapmalı?
- Kullandığınız dal sürümüne göre bitcoinjs-lib kütüphanesini 5.2.1, 6.1.8 veya 7.0.2 sürümüne yükseltin. Genel öneri
- Uygulamanın bağımlılık ağacını kontrol edin, eski sürümün dolaylı bağımlılık olarak kullanılıp kullanılmadığını doğrulayın, ardından güncellenmiş sürümle yeniden derleyip dağıtın. Genel öneri
- Güncelleme hemen yapılamıyorsa, blok kök doğrulamasına dayanan işlem akışlarında yinelenen işlem kimliklerini ayrıca kontrol eden ek bir doğrulama adımı ekleyin. Genel öneri
Ek önlemler
- Blok ve işlem verilerini yalnızca Merkle kökü doğrulamasına değil, işlem kimliklerinin benzersizliğine de bakan ek kontrollerle işleyin. Genel öneri
- Aynı blok kimliğine sahip ancak farklı işlem listesi içeren verileri ve tekrarlanan işlemleri izleyen kayıtlar tutun. Genel öneri
- Üçüncü taraf blok zinciri kütüphanelerini düzenli olarak güncelleyin ve bağımlılıklarınız için güvenlik bültenlerini takip edin. Genel öneri
Etkilenen sürümler1 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| bitcoinjs-lib | Sürüm belirtilmemiş | – |
Kaynaklar6 kaynak
Kayıt geçmişi
- Yayımlandı
İlgili açıklar
Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.