| Insecure Cookie Açıklığı (CWE-614) | |||||
| Bu makalede Insecure Cookie (CWE-614), yani Çerez İçeriğinin Korunaksız Olması açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Orta Açıklığın Etkisi: Oturum Bilgisinin Ele Geçirilmesi Açıklığın Açıklaması: Web uygulamalarının kullanıcılara dağıttıkları çerezlerde mutlaka HttpOnly bayrağı yer almalıdır. Bu bayrak web uygulamalarında istemci tarafındaki javascript kodlarının kullanıcı çerezlerine erişimini engellemektedir. Böylece web uygulamalarında ileride çıkabilecek olası XSS zafiyetlerine karşı kullanıcı çerezlerinin üçüncü taraf konumlara (saldırganların sunucularına) gidişinin önü kesilmiş olur. Web uygulamalarının kullanıcılara dağıttıkları çerezlerde ikinci olarak eğer uygulama SSL/TLS üzerinden çalışıyor ise "Secure" bayrağı yer almalıdır. Bu bayrak çerezin sadece SSL/TLS ile şifrelenmiş taleplerin içerisinde gitmesini sağlar. Örneğin kullanıcı arp zehirleme gibi araya giren adam saldırılarına maruz kalırsa uygulama trafiği https yerine http üzerinden aktığı sıralarda araya girme saldırısı yapan saldırganlar kullanıcının çerezini açık bir şekilde okuyabilirler. Fakat web uygulamasında çerezlerde "Secure" bayrağı kullanılırsa kullanıcı uygulama trafiği http üzerinden aktığı sıralarda çerezini web sunucusuna sadece https üzerinden trafik akarken göndereceğinden göndermeyecektir ve aradaki adam (saldırgan) bu sebeple çerezi elde edemeyecektir. Böylece kullanıcı çerezleri araya giren adam saldırılarından korunmuş olacaktır. Web uygulamalarının kullanıcılara dağıttıkları çerezlerde üçüncü olarak "SameSite" bayrağı yer almalıdır. Bu bayrak kullanıcıların Siteler Arası Talep Sahtekarlığı saldırılarına maruz kaldığı vak'alar meydana geldiğinde fark etmeden web uygulama üzerinde işlemler gerçekleştirmelerini önler. Yani çerezin saldırganlarca sunulan sahte taleplerde (yan sekmelerden) kullanımını engeller.
Not:
CSRF (Siteler Arası Talep Sahtekarlığı) saldırılarına önlem olarak sunulan CSRF jetonları SameSite bayrağı önleminin bir alternatifi konumunda değildirler. Ayrı bir kademede güvenlik önlemidir. Dolayısıyla her iki ayrı kademede yer alan önlemi uygulamak en güvenli kullanımdır. Açıklığın Önlemi: a) Apache Sunucularda Çerezlere HttpOnly, Secure ve SameSite Ekleme Apache sunucularda çerezlere HttpOnly, Secure ve SameSite bayraklarını eklemek için sistem türüne göre httpd.conf ya da apache2.conf yapılandırma dosyası açılmalıdır: Terminal: > sudo su > nano /etc/apache2/apache2.conf Ardından yapılandırma dosyasının en altına aşağıdaki satır eklenmelidir: Header edit Set-Cookie ^(.*)$ "$1; HttpOnly; Secure; SameSite=Strict" Son olarak yapılandırma dosyası kaydedilmelidir ve apache servisi yeniden başlatılmalıdır: Terminal: > service apache2 restart b) IIS Sunucularda Çerezlere HttpOnly, Secure ve SameSite Ekleme IIS sunucularda ise web.config adlı yapılandırma dosyası açılmalıdır ve system.web etiketi içerisindeki httpCookies etiketi özellikleri "true" yapılmalıdır. <httpCookies httpOnlyCookies="true" requireSSL="true"> IIS sunucularda SameSite bayrağı için sistemin IIS 7 ve üzeri olması, ASP.NET rolünün aktif (enable) olması ve ayrıca "Url Rewrite" modülünün (tool'unun) sistemde yüklü olması gerekmektedir. Bu koşullar sağlandığı takdirde web.config dosyası açılmalıdır ve system.web etiketi içerisine şu kod satırları eklenmelidir.
<!--
SameSite Bayrağı Ekleme
IIS sunucusu versiyon 7 ve üzeri değilse,
ASP.NET rolü enable edilmemişse ve Url
Rewrite yazılımı sisteme yüklenmemişse
bu eklenen kodlar çalışmayacaktır.
-->
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=strict" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern=".*" />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=strict" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
IIS ardından servisi yeniden başlatılmalıdır. c) Nginx Sunucularda Çerezlere HttpOnly, Secure ve SameSite Ekleme Nginx sunucularda aynı işlemi yapmak için ise ssl.conf ya da default.conf dosyası açılmalıdır ve dosyada yer alan proxy_cookie_path satırına bayraklar aşağıdaki gibi eklenmelidir: proxy_cookie_path / "/; HttpOnly; secure; SameSite=Strict"; Ardından nginx servisi yeniden başlatılmalıdır. Not: Eğer uygulama SSL/TLS kullanmıyorsa sadece HttpOnly ve SameSite bayraklarını eklemek için Apache sunucularda belirtilen satır Header edit Set-Cookie ^(.*)$ "$1; HttpOnly; SameSite=Strict" IIS sunucularda belirtilen satır <httpCookies httpOnlyCookies="true" requireSSL="false"> ve SameSite için IIS rewrite kuralı web.config'de aynı şekilde, Nginx sunucularda ise belirtilen satır proxy_cookie_path / "/; HttpOnly; SameSite=Strict"; kullanılmalıdır. Yararlanılan Kaynaklar:
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 01:49:03'de yazılmıştır.
24.10.2025 tarihi ve 23:02:44 saatinde ise güncellenmiştir. |
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 01:49:03'de yazılmıştır.
24.10.2025 tarihi ve 23:02:44 saatinde ise güncellenmiştir.