HTTP Header Injection Zafiyeti

Bir web sunucusundan HTTP isteği yapıldığında, sunucu sayfaya ek olarak bir de üst bilgi iletmektedir, buna HTTP Header denilmektedir. HTTP Header gelen sayfanın nasıl işleneceği, dil bilgisi ve sıkıştırma olup olmadığı gibi önemli bilgileri içermektedir. İçerik sayfası ile HTTP header arasında ayrıcı olarak CRLF dediğimiz bir kod kullanılmaktadır, bu koddan sonra gelen bilgiler ise HTML sayfasını içermektedir.

Bir saldırgan CRLF karakteri ileterek araya kendi kodunu enjekte edebilir ve bu da CORS açığına neden olabilir. IIS, Apache ve NGINX gibi web sunucularının güncel sürümleri bu zafiyetten etkillenmemektedir.

CRLF Nedir

CRLF daktilo ve telegraftan bu yana kullanılmaktadır. Sayfa içerisinde yeni satıra geçmek için kullanılan özel bir karakterdir. İşletim sistemlerine göre bu karakter farklılık göstermektedir. Örneğin Windows ve Dos işletim sistemlerinde yeni satur CRLF iken, Unix ve benzeri işletim sistemlerinde sadece LF’dir.

İşletim SistemiKarakterScript karşılığı
Microsoft Windows ve DOS, AtariCR LF\r\n
Unix, macOS, BSDLF\n

CRLF Neden iki karakter?

Daktilo’da her tuşa basmanızla birlikte üst kısmında bulunan hareketli kısım sağa doğru bir adım ilerleyecektir. Sayfa sonuna geldiğinizde duymanız muhtemel bir çan sesi ile artık hareketli kısım daha fazla ilerlemeyecektir. Satır başına dönmek için daktilonun çoğunlukla sol tarafında bulunan kol sağa doğru itilir. Bu CR’dir (Carriage Return). Hareketli kısım başa döner ama henüz satır atlamamıştır. Satır atlatmak için eski modellerde bağımsız bir kol daha vardır, bu kolu da bir defa kendinize doğru çekmelisiniz, bu da LF’dir (Line Feed).

Daktilodan bu yana kullanılmaya devam eden CRLF, metin dosyalarında UNIX/DOS uyumsuzluğunun da sebebidir. FTP transferlerinde kullanılan ASCII/binary karmaşası da buradan doğmaktadır.

Çözüm

Etkin ve hızlı çözüm için aşağıdaki direktifleri uygulayabilirsiniz

  1. URL’lerinizde URL encoding kullanın
  2. Web sunucunuzu en son versiyonuna güncelleyin

Yasal Uyarı

Copyright (c) 2019 – 2020 ONLAYER Bilişim Teknolojileri A.Ş.

Bu sayfadaki içeriğin kullanımı sadece bu sayfaya link ile atıf yapılarak mümkündür. Yazılı izin olmadan değiştirilemez ve alıntı yapılamaz.

Kullanım Uyarısı: Burada belirtilen direktifler olduğu gibidir ve uygulanması sonucunda oluşabilecek servis kesintileri ve veri kaybından ONLAYER sorumlu değildir. Sistemlerin daha iyi çalışabileceği ya da daha güvenli olacağına dair hiç bir garanti verilmemektedir. Ne firma ne de yazar kullanımdan dolayı hiçbir sorumluluk kabul etmemektedir.