Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün
  • CWE-611
  • CWE-776

CVE-2026-108357

PhpSpreadsheet'te XmlScanner atlatılması: çift kodlanmış unentity TOCTOU hatası XXE ve hizmet dışı bırakmaya yol açıyor

PHPOffice PhpSpreadsheet

Yüksek 8,8 CVSS 4.0
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
6 gün
Kaydı açan
GitHub_M

ÖzetTürkçe

PhpSpreadsheet, elektronik tablo dosyalarını okumak ve yazmak için kullanılan saf bir PHP kütüphanesidir. 3.3.0 sürümünden 3.10.8 sürümüne kadar ve 5.10.0 sürümünde, Reader\Xml, Xml::canRead ve Xml::trySimpleXMLLoadStringPrivate içinde saklanan SpreadsheetML XML'ini XmlScanner::scan üzerinden geçirmektedir; ancak Xml::unentity, sayısal varlıkları yalnızca her DOCTYPE desen kontrolünden sonra çözmektedir. Çift kodlanmış bir küçüktür karakteri, ilk geri çağrıda başka bir kodlanmış karaktere, ikinci geri çağrıda ise düz bir küçüktür işaretine dönüştürülmekte; bu sayede SimpleXML, denetlenmemiş bir DOCTYPE ve varlık bildirimi almaktadır. Saldırgan kontrolündeki SpreadsheetML XML'inin işlenmesi, varlık genişletmesine bağlı hizmet dışı bırakmaya neden olabilir ve PHP 8.0 öncesinde veya LIBXML_NOENT etkinleştirildiğinde yerel dosya erişimine veya SSRF'ye izin verebilir. Bu sorun 3.10.8 ve 5.10.0 sürümlerinde giderilmiştir.

Kaynaktaki açıklama (İngilizce)

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. From 3.3.0 until 3.10.8 and 5.10.0, Reader\Xml passes stored SpreadsheetML XML through XmlScanner::scan in Xml::canRead and Xml::trySimpleXMLLoadStringPrivate, while Xml::unentity decodes numeric entities only after each DOCTYPE pattern check. A double-encoded less-than character is reduced by the first callback to another encoded character and by the second callback to a literal less-than sign, so SimpleXML receives an unchecked DOCTYPE and entity declaration. Processing attacker-controlled SpreadsheetML XML can cause entity-expansion denial of service and can permit local file access or SSRF on PHP before 8.0 or when LIBXML_NOENT is enabled. This issue is fixed in versions 3.10.8 and 5.10.0.

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ümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
PHPOffice PhpSpreadsheet Sürüm belirtilmemiş –

Kaynaklar7 kaynak

Kayıt geçmişi

  1. 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.