JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı
En yaygın JWT güvenlik hatalarını istismar edin ve düzeltin.
JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.
JWT Saldırı Yüzeyi
JWT'ler kriptografik olarak imzalanır, ancak birçok kütüphanede ciddi güvenlik açıkları bulunuyordu. En çok istismar edilenler: alg=none saldırısı, RS256→HS256 karışıklığı saldırısı ve zayıf gizli anahtarların kaba kuvvetle denenmesi. Bunların tümü, saldırganın kontrolündeki üstbilgi alanlarına güvenilmesinden kaynaklanır.
alg=none Saldırısı
JWT belirtimi, güvenli olmayan belirteçler için alg:"none" değerine izin verir. Hatalı kütüphaneler bunu kabul ediyor ve imza doğrulamasını tamamen atlıyordu. Saldırgan yükü (örneğin, "role":"admin") değiştirir, alg:"none" değerini ayarlar, imzayı çıkarır ve sunucu bunu kabul eder.
alg=none İstismar Örneği
Orijinal: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIn0.SIG Saldırı: eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9. (boş imza, sondaki nokta). Güvenlik açığı bulunan bir sunucu doğrulamayı başarılı biçimde tamamlar ve yönetici erişimi verir.
alg=none Düzeltmesi
Üretim ortamında alg:"none" değerini asla kabul etmeyin. İzin verilen algoritmaları açıkça listeleyin: jwt.decode(token, key, algorithms=["HS256"]). Modern kütüphanelerin çoğu (PyJWT 2+, jsonwebtoken 9+) alg=none değerini varsayılan olarak reddeder.
RS256 → HS256 Anahtar Karışıklığı
Bir sunucu RS256 kullanıyorsa ve istemci alg değerini HS256 olarak değiştirirse sunucu, RSA açık anahtarını HMAC gizli anahtarı olarak kullanarak doğrulama yapabilir. Açık anahtar... herkese açık olduğundan saldırgan, bu anahtarla rastgele yükleri imzalar ve sunucu bunları doğrular.
Anahtar Karışıklığı İstismarı
Adımlar: 1) JWKS uç noktasından açık anahtarı alın. 2) Kötü amaçlı yük oluşturun. 3) HMAC gizli anahtarı olarak ham açık anahtar PEM baytlarını kullanarak HMAC-SHA256 ile imzalayın. 4) Üstbilgide alg:"HS256" değerini ayarlayın. 5) Sunucunun HS256 yolu doğrulamayı başarılı biçimde tamamlar.
Anahtar Karışıklığı Düzeltmesi
Doğrulama çağrısında beklenen algoritmayı her zaman açıkça belirtin. Algoritmayı asla belirtecin üstbilgisinden türetmeyin. RS256 ve HS256 için, çağıranın değiştiremeyeceği ayrı kod yolları kullanın.
Zayıf Gizli Anahtarın Kaba Kuvvetle Kırılması
Zayıf gizli anahtarlarla (256 bitten az entropiye sahip) kullanılan HS256, çevrimdışı olarak kaba kuvvetle denenebilir. hashcat gibi araçlar JWT kırmayı destekler: hashcat -a 0 -m 16500 token.txt wordlist.txt. En az 32 bayt uzunluğunda, kriptografik olarak rastgele gizli anahtarlar kullanın.
kid ile Üstbilgi Enjeksiyonu
kid (anahtar kimliği) üstbilgisi, hangi anahtarın kullanılacağını seçer. Sunucu, kid değerini temizlemeden bir SQL sorgu parametresi veya dosya sistemi yolu olarak kullanırsa: kid="../../dev/null" → boş anahtarla HMAC → sahte belirteç kabul edilir. kid değerini her zaman temizleyin.
jwk Üstbilgi Enjeksiyonu
jwk üstbilgisi, doğrulama için bir açık anahtar gömer. Güvenlik açığı bulunan bir sunucu, gömülü anahtarı doğrudan kullanabilir; böylece saldırgan kendi anahtar çiftini sağlayabilir, belirteci özel anahtarla imzalayabilir ve açık anahtarı gömebilir. Yalnızca kayıtlı anahtarlara karşı doğrulama yapın.
Süresi Dolmuş Belirteci Atlama
Bazı uygulamalar exp alanını denetlemeyi unuttu veya sunucu zamanını tutarsız biçimde kullandı. exp, nbf ve iat alanlarını her zaman açıkça doğrulayın. Bu alanları varsayılan olarak denetleyen bir kütüphane kullanın ve üretim ortamında alan doğrulamasını asla devre dışı bırakmayın.
Hızlı Kontrol
RS256→HS256 anahtar karışıklığı saldırısında saldırgan, HMAC gizli anahtarı olarak ne kullanır?
Özet
JWT güvenlik açıkları, alg üstbilgisine güvenilmesinden, alg=none değerinin kabul edilmesinden ve zayıf gizli anahtarlardan kaynaklanır. Çözüm: algoritmaları doğrulayıcıda sabitleyin, güçlü gizli anahtarlar kullanın ve kid değerini temizleyin. Sıradaki konu: güvenli JWT uygulama yöntemleri.
Sıkça Sorulan Sorular
“JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı” dersi ücretsiz mi?
Evet — “JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.
“JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı” dersinde ne öğreneceğim?
En yaygın JWT güvenlik hatalarını istismar edin ve düzeltin. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JWT Anatomisi: Üst Bilgi, Yük ve İmza
- HS256 ve RS256: Simetrik ve Asimetrik JWT'ler
- JWT Güvenlik Açıkları: alg=none ve Anahtar Karışıklığı
- Güvenli JWT Uygulaması için En İyi Uygulamalar