CVE-2025-47934
Açıklama
OpenPGP.js, OpenPGP protokolünün bir JavaScript uygulamasıdır. Versiyon 5.0.1 ile başlayıp 5.11.3 ve 6.1.1 versiyonlarından önceki sürümlerde, kötü niyetle değiştirilmiş bir mesaj `openpgp.verify` veya `openpgp.decrypt` fonksiyonlarına iletilebilir; bu durum, söz konusu fonksiyonların aslında imzalanmamış olan verileri döndürürken geçerli bir imza doğrulama sonucu döndürmesine neden olur. Her iki fonksiyon da orijinal olarak imzalanan veriyle eşleşmeyebilecek çıkarılmış veriler döndürdüğü için bu açık, satır içi (ayrık olmayan) imzalı mesajların (`openpgp.verify` kullanılarak) ve imzalanmış ve şifrelenmiş mesajların (`verificationKeys` ile `openpgp.decrypt` kullanılarak) imza doğrulamalarının taklit edilmesine izin verir. Ayrık imza doğrulamaları etkilenmemektedir çünkü bu durumda herhangi bir imzalı veri döndürülmez. Bir mesajı taklit etmek için saldırganın tek bir geçerli mesaj imzasına (satır içi veya ayrık) ve meşru olarak imzalanmış düz metin verilere ihtiyacı vardır; ardından saldırgan, kendi seçtiği herhangi bir veriyle satır içi imzalı bir mesaj veya imzalanmış ve şifrelenmiş bir mesaj oluşturabilir ve bu mesaj OpenPGP.js'nin etkilenen versiyonları tarafından meşru olarak imzalanmış gibi görünecektir. Diğer bir ifadeyle, herhangi bir satır içi imzalı mesaj, (imzanın hala geçerli olduğunu belirtirken) başka herhangi bir veriyi döndürecek şekilde değiştirilebilir; aynı durum, saldırgan geçerli bir imza elde edip bu imzayla birlikte yeni bir mesajı (saldırganın seçimiyle) şifreleyebilirse, imzalanmış+şifrelenmiş mesajlar için de geçerlidir. Sorun 5.11.3 ve 6.1.1 versiyonlarında giderilmiştir. Bazı geçici çözümler mevcuttur. Satır içi imzalı mesajları doğrularken, mesajı ve imza(ları) `openpgp.readMessage` tarafından döndürülen mesajdan ayıklayın ve imzayı ve yalnızca veriyi içeren yeni bir mesajı (`openpgp.createMessage` kullanılarak oluşturulan) `openpgp.verify` fonksiyonuna ileterek imza(yı)/her bir imzayı ayrık bir imza olarak doğrulayın. İmzalanmış+şifrelenmiş mesajları çözerken ve doğrularken, önce `verificationKeys` olmadan `openpgp.decrypt` fonksiyonunu çağırarak ve ardından döndürülen imza(ları) ve şifresi çözülmüş verileri içeren yeni bir mesajı (`openpgp.createMessage` kullanılarak oluşturulan) `openpgp.verify` fonksiyonuna ileterek işlemi iki adımda gerçekleştirin.
Nasıl düzeltilir
- openpgp5.11.3, 6.1.1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| openpgpnpm | 5.0.1 ≤ v < 5.11.3, 6.0.0-alpha.0 ≤ v < 6.1.1 | 5.11.3, 6.1.1 |
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.