Python'daki str.lower() çağrısı IDNA alan adlarında güvenlik açığı oluşturdu
Öne çıkanlar
- IDNA 2003 ve StringPrep standartları kesin olarak Unicode 3.2.0 harf eşleme kurallarını zorunlu kılıyor.
- Python standart kütüphanesi str.lower() çağrısıyla yorumlayıcının güncel Unicode sürümünü çalıştırdı.
- Sürüm uyuşmazlığı nedeniyle bazı karakterler yanlış Punycode alan adı çıktısı üretti.
- Açık, Unicode 3.2.0 davranışını taklit eden özel istisna tablosuyla giderildi.
Python Yazılım Vakfı Güvenlik Geliştiricisi Seth Larson, Python standart kütüphanesindeki IDNA 2003 alan adı dönüşümünde yer alan str.lower() metodunun bir güvenlik açığına yol açtığını duyurdu. RFC 3454 standardında tanımlanan StringPrep algoritması, büyük/küçük harf dönüştürme işlemleri için Unicode 3.2.0 tablosuna dayanıyor. Ancak Python'daki genel str.lower() fonksiyonu, yorumlayıcının yüklü olduğu en güncel Unicode sürümünü kullanıyor.
Farklı Unicode sürümleri arasındaki harf dönüştürme kurallarının uyuşmaması, aynı alan adının hedeflenen ASCII çıktısından farklı bir Punycode sonucuna dönüşmesine neden oldu. Bu durum, alan adı doğrulama ve yönlendirme süreçlerinde güvenlik riskleri doğurdu. Geliştirici ekibi, güncel Unicode ile 3.2.0 sürümü arasındaki farkları istisna tablosuna ekleyerek açığı kapattı ve IDNA 2003 uygulamasını standartla yeniden uyumlu hale getirdi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.