Yaşar Ateş

System and Security Administration Manager

JSON Web Token Saldırısı Nedir?

Bir tür dijital varlık olan token, bilgi setini içeren ve bunların taraflar arasında taşınmasını sağlayan veri yapısını ifade eder. Aynı zamanda kimlik doğrulama gibi süreçlerde de kullanılır. JSON Web Token (JWT) de verilerin toplu şekilde aktarılmasında rol oynayan bir token türüdür. Kötü niyetli kullanıcılar, bu tokeni kullanarak kimlik hırsızlığı yapabilir, sistemlerin kontrolünü ele geçirebilir ve erişimi sınırlayabilir. Bu nedenle bireylerin ve kurumların JWT saldırılarına karşı hazırlıklı olması gerekir. TSE onaylı sızma testi firması inventiv olarak yazının devamında dijital güvenliğinizi tehdit eden bu siber saldırı türünü ele aldık.

JSON Web Token Nedir?

JSON Web Token (JWT), kriptografik olarak şifrelenmiş ya da imzalanmış JSON verilerinin RFC 7519 formatında sistemler arasında iletimini sağlayan bir mekanizmadır. JWT'ler, her türlü veriyi içerebilir. Fakat daha çok kimlik doğrulama, oturum işleme ve erişim denetimi süreçlerinin bir parçası olarak kullanılır. Verilerin bir sistemden diğerine güvenli şekilde taşınmasını sağlar. JWT'lerde gerekli tüm bilgiler, istemci tarafında depolanır. Bu özellik, kullanıcıların birden fazla back-end sunucusuyla sorunsuz etkileşim kurmasına olanak tanır.

JWT'ye Yönelik Yaygın Saldırı Türleri Nelerdir?

Yaygın JWT saldırıları arasında token imzasının çalınması ve ifşa edilmesi yer alır. Siber saldırganlar, bu atakları gerçekleştirdikten sonra ilgili sistemlere erişebilir. Bu tür ataklarda tokenin şifresine ya da imzasına ulaşmak hedeflenir. Söz konusu dijital unsurlar, tokenin doğruluğunu ispatlamak için kullanılır. Kötü niyetli kullanıcılar, çaldığı imza aracılığıyla sahte tokenler oluşturabilir. Sahte tokenlerin bir yetki kontrol mekanizmasında rol alması, saldırganların sistem içinde daha geniş bir erişim elde etmesine yol açar. Bu risklerin temelinde depolama sorunları, zayıf imza algoritmaları ve JWT güvenlik açıkları yer alır. Takip eden başlıklarda söz konusu siber saldırılara ve güvenlik zafiyetlere ilişkin detayları görebilirsiniz.

JSON Web Token’in Ele Geçirilmesi

JSON Web Token (JWT), genellikle decode ve verify temel fonksiyonlarıyla doğrulanır. Fakat bu doğrulama işlemi yanlış yapılandırıldığında saldırganların faydalanabileceği bir güvenlik açığı meydana gelir. Örneğin kötü niyetli kullanıcılar, söz konusu işlemi yeterince ya da hiç gerçekleştirmeyen bir JWT'nin içindeki bilgilere ulaşabilir. Bu sorundan kaynaklanan JWT saldırılarını önlemek için token yapılandırmasında bazı detaylara dikkat etmek gerekir.

JWT'nin başlık (header) kısmında bulunan "Algorithm" parametresi, sunucuya token'in imzalanırken hangi algoritmanın kullanıldığını gösterir. Sunucu, bu algoritmayı kullanarak imzayı doğrular. Bu parametre, "none" değerini kabul eden token kütüphanelerinde ya da yanlış yapılandırılmış sistemlerde bulunabilir. Algoritma parametresinin "none" olarak ayarlanması, JWT'nin imzalanmadığı anlamına gelir. Yani tokenin içindeki bilgiler, herhangi bir güvenlik kontrolü olmadan kabul edilir. Saldırganlar, bu durumu kullanarak kendi tokenlerini üretebilir. 

Güvensiz Depolama Sorunları

JWT saldırı türleri, güvensiz depolama sorunlarından da kaynaklanır. JSON Web Token, tarayıcıda Local Storage ya da Session Storage gibi depolama sistemlerinde saklanabilir. Fakat bu depolama alanlarına kötü amaçlı yazılım ya da tarayıcı eklentileri tarafından erişilirse JWT'ler ele geçirilebilir. Ayrıca bu kapsamda XSS saldırıları (Cross-Site Scripting), CSRF atakları (Cross-Site Request Forgery), HTTPOnly* ve Secure Flag** eksikliği gibi siber güvenlik riskleri de bulunur. 

Zayıf İmza Algoritmaları ve Güvenlik Açıkları

Bazı uygulamalar, HS256 gibi HMAC (Hash-Based Message Authentication Code) simetrik algoritmaları kullanarak JSON Web Token’leri imzalar. Fakat bu algoritmaların güvenliği, kullanılan anahtarın gücüne bağlıdır. Eğer kullanılan anahtar kolayca tahmin edilebilecek ya da kırılabilecek şekilde üretilmişse JWT'nin güvenliği riske girebilir. Bu durum, özellikle sistemin ya da verilerin brute-force saldırılarına açık hâle gelmesine yol açabilir. Brute-force atakları, kısaca saldırganın farklı anahtarları deneyerek doğru olanı bulma girişimleridir. Eğer anahtar zayıf bir yapıdaysa bu tür saldırılar hedefine ulaşabilir. 

Saldırganlar; hashcat, John The Ripper, JWT cracker gibi araçları kullanarak zayıf anahtarları test eder. Bu araçlar, farklı wordlist'leri veya kendi özel script'leri ile farklı anahtarları deneyerek tokenleri imzalar. Özetle, JWT süreçlerinde güçlü ve tahmin edilmesi zor anahtarlar kullanmak önemlidir. Ayrıca anahtar yönetimi süreçleri de dikkatlice planlanmalı ve uygulanmalıdır. Güvenlik önlemleri alarak brute-force saldırılarına karşı dirençli bir sistem kurulabilir.

JWT Saldırılarından Korunma Yöntemleri Nelerdir?

JWT saldırı korunma yöntemleri, sistemlerinizi ve verilerinizi güvenceye almanızı sağlar. JSON Web Token kapsamında veri güvenliği koruması için güçlü şifreleme, düzenli denetim ve güncelleme gibi yollara başvurmak mümkündür. Bu süreçte göz önünde bulundurulması gereken temel noktalar şunlardır:

  • Kullanılan JWT kütüphanelerini düzenli olarak güncelleyin.
  • Tokenlerin içerdiği bilgileri ve yetkileri sınırlandırın.
  • “None” algoritmasını engelleyin.
  • JWT’leri iletmek için güvenli bağlantılar kullanın.

Öte yandan, tokenin içindeki "iat" (issued at) ve "exp" (expiration time) zaman parametrelerini doğru belirlemenizde fayda vardır. Bu parametreler, JWT’nin ne zaman oluşturulduğunu ve sona ereceğini gösterir. JSON Web Token depolama güvenliği için doğru depolama mekanizmalarını da tercih etmeniz gerekir. Örneğin HTTP Only Cookies, JWT'leri tarayıcıda saklamak için uygundur. Bu tür çerezler, sadece HTTP taleplerine erişime izin verir. Böylece XSS saldırılarına karşı ek bir koruma sağlar.

Güçlü Şifreleme Yöntemleri ile JWT Güvenliğini Artırmak

JWT’de simetrik ya da asimetrik anahtarlar kullanılır. JSON Web Token güvenliği için bu şifreleme yöntemlerinin güçlü olması son derece önemlidir. Simetrik anahtarın uzun ve zor tahmin edilebilir olması gerekir. Zira kısa ya da öngörülebilir şifreler, brute-force saldırılarına elverişli bir sistem yaratır. Anahtarlar, güvenilir bir rastgele sayı üreteci kullanılarak oluşturulabilir. Asimetrik şifrelemede ise genellikle daha uzun anahtarlar tercih edilir. Örneğin 2048 bit veya daha fazla uzunluktaki anahtarlar belirlenir. Bu detaylar, daha güçlü bir şifreleme ve güvenli bir anahtar değişim mekanizması oluşturmanıza yardım eder. 

Düzenli Denetimler ve Güncellemeler Sağlamak

Düzenli denetimler ve güncellemeler, JWT saldırılarını önlemenizi mümkün kılar. Zira bu süreçte ilgili tokenin kullanıldığı sistemlerde meydana gelen anormal aktiviteler tespit edilir. Olay günlükleri (Event Log) ve SIEM sistemleri, siber güvenlik ekibine JWT zafiyetlerini belirleme konusunda yardımcı olur. Bu noktada sızma ya da diğer adıyla penetrasyon testinin önemine ayrı bir parantez açmak gerekir. Bireyler ve kurumlar, sistemlerdeki güvenli açıklarının tespit edildiği bu testler için profesyonellerden destek alarak JSON Web Tokeni ataklarına karşı hazırlıklı olabilir. 

Düzenli Testler ile JWT Saldırılarına Karşı Firmanızı Koruyun

TSE onaylı sızma testi inventiv ile firmanızın bilişim altyapısını, JWT saldırılarına karşı koruyabilirsiniz. Securvent hizmeti kapsamında yapılan sızma testlerinde uygulamalarınızın ve sistemlerinizin güvenlik zafiyetleri belirlenir. Penetrasyon testi, potansiyel saldırı vektörlerini değerlendirir ve güvenlik önlemlerinin etkinliğini test eder. Ardından inventiv, bu açıkların detayları ve nasıl giderileceği konusunda size kapsamlı bir rapor sunar. Böylece JWT'leri güvenli şekilde kullanmanız ve muhtemel saldırılara karşı güçlü bir savunma mekanizması oluşturmanız mümkün hâle gelir. Şirketinizin dijital dünyadaki güvenliğini artırmak için hiç vakit kaybetmeden inventiv ile tanışabilirsiniz.

Notlar:

*JavaScript'in, web uygulamasında bulunan XSS zafiyeti durumunda session çerezlerini okumamasını sağlayan koruma yöntemi

**session çerezlerinin güvenlik için sadece HTTPS üzerinden gönderilmesini sağlayan koruma mekanizması