- Yama var
- Son 7 gün
- CWE-532
CVE-2026-105963
Plug.Crypto'da yanlış tipte argümanlarda gizli anahtar taban değeri hata izlerine sızıyor
- Yayımlandı
- Güncellendi
- 23 Eki 2026
- Açık yaşı
- 5 gün
- Kaydı açan
- EEF
ÖzetTürkçe
Plug.Crypto içindeki genel fonksiyonlar, argüman tiplerini fonksiyon başlığındaki guard ile doğrular. Yanlış tipte bir argüman bu guard'ı geçemediğinde Erlang VM, en üst yığın çerçevesinde gerçek argüman değerlerini içeren bir FunctionClauseError fırlatır. Böylece gizli anahtar taban değeri, türetilmiş bir anahtar ya da bir API anahtarının karşılaştırıldığı değer bu çerçeveye düşer. Kütüphanenin rescue blokları ve Plug.Crypto.prune_args_from_stacktrace/1 yalnızca fonksiyon gövdesi içinde fırlatılan istisnaları yakalar, dolayısıyla guard hatalarını görmez. Plug.Cowboy ve Bandit bu çerçeveyi hata günlüğüne yazar ve crash_reason Logger üst verisi olarak ekler; hata izleyiciler de bunu iletir. Kimliği doğrulanmamış uzak bir saldırgan, yanlış tipte argüman içeren bir istekle gizli anahtar taban değerini uygulama günlükleri üzerinden açığa çıkarabilir. İki giriş noktası istek verisini kabul eder: Plug.Crypto.verify/4, token ikili (binary) veya nil olmadığında gizli anahtar taban değerini açığa çıkarır; Phoenix.Token.verify/4 token'ı guard'sız ilettiği için bu yola ulaşır. Plug.Crypto.secure_compare/2 ise taraflardan biri ikili olmadığında diğer operandı açığa çıkarır; eksik bir istek başlığı nil değer ürettiğinde bu durum oluşur. Sızan değeri okumak için günlüklere ya da hata izleyiciye ayrıca erişim gerekir, bu yüzden yalnızca istek saldırganın gizli bilgiyi öğrenmesi için yeterli değildir. Etkilenen sürümler: plug 1.6.3 ile 1.7.0 öncesi; plug_crypto 1.0.0 ile 2.2.1 öncesi.
Kaynaktaki açıklama (İngilizce)
Externally-Generated Error Message Containing Sensitive Information vulnerability in plug_crypto in elixir-plug plug_crypto allows an unauthenticated remote attacker to expose the secret key base through application logs via a wrong-typed argument. Every public function in Plug.Crypto validates argument types in a function-head guard. A failed guard makes the Erlang VM raise FunctionClauseError with the actual argument values in the top stack frame, so the secret key base, a derived key, or the value an API key is compared against lands in that frame. The library's rescue blocks and Plug.Crypto.prune_args_from_stacktrace/1 only reach exceptions raised inside a function body, so they never see a guard failure. Plug.Cowboy and Bandit write the frame to the error log and attach it as crash_reason Logger metadata, which error trackers forward.
Two entry points take request data. Plug.Crypto.verify/4 exposes the secret key base when the token is neither a binary nor nil, which Phoenix.Token.verify/4 reaches because it forwards the token unguarded. Plug.Crypto.secure_compare/2 exposes the other operand when one side is not a binary, as happens when a missing request header yields nil. Reading the leaked value needs separate access to the logs or the error tracker, so the request alone does not disclose the secret to the attacker.
This issue affects plug: from 1.6.3 before 1.7.0; plug_crypto: from 1.0.0 before 2.2.1.
Üreticinin geçici önlemi (İngilizce)
Check argument types in the calling code before entering Plug.Crypto, so no head guard ever fails. Pass a token to Phoenix.Token.verify/4, Phoenix.Token.decrypt/4, Plug.Crypto.verify/4 or Plug.Crypto.decrypt/4 only when is_binary(token) holds, and treat anything else as an invalid token. Call Plug.Crypto.secure_compare/2 only when both operands are binaries, treating a missing header or parameter as a failed comparison rather than passing nil.
Where the leaked value matters more than the crash, configuring the error tracker to drop stack-frame arguments also keeps the secret out of the forwarded report. For Sentry this means not sending vars with the crash report. This narrows exposure but leaves the value in the local error log.
Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.
Etkilenen sürümler2 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| elixir-plug plug | ≥ 1.6.3, < 1.7.0 | 1.7.0 |
| elixir-plug Plug Crypto | ≥ 1.0.0, < 2.2.1 | 2.2.1 |
Kaynaklar9 kaynak
- CVE.org kaydı
- NVD kaydı
- github.com/…g/plug/security/advisories/GHSA-ffw9-w85g-f2vh Üretici bülteni
- github.com/…ommit/aeaa90e76b73ea90c3ecca9aae16fce71bd2a8d4 Yama
- github.com/…ommit/981887493dada0fce7003c61861c00dfbb0fc8c5 Yama
- cna.erlef.org/cves/CVE-2026-105963.html Diğer
- osv.dev/vulnerability/EEF-CVE-2026-105963 Diğer
- github.com/…ommit/56000c33d8a0a2fbac491f8be06b9c5112bc2276 Diğer
- github.com/…ommit/2d078b7b8264c565f0ff71235c515f4f46882dcf Diğer
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.