Bilmeyenler için, bir JSON Web İmzası kod çözme işlem önemsiz görünmektedir - bir token içindeki talepleri görüntülemek için basit bir Base64URL kod çözme alıştırması. Ancak güvenlik mühendisleri, sızma test uzmanları ve yapay zeka güvenlik araştırmacıları için "kod çözme" çok daha karmaşık bir savaş alanının sadece keşif aşamasıdır.
Geliştiriciler kod çözmeyi kimlik doğrulama akışlarında hata ayıklamak için kullanırken, saldırganlar bunu imzalama mantığını tersine mühendislik yapmak için kullanır. Aradaki boşluk kod çözme bir belirteç ve doğrulama bütünlüğü, modern API tarihindeki en tehlikeli kimlik doğrulama bypass güvenlik açıklarının yaşadığı yerdir.
Bu makale, JWS'nin anatomisini incelemekte, yüksek etkili CVE'ler de dahil olmak üzere kritik doğrulama hatalarını analiz etmekte ve yapay zekaya dayalı güvenliğin, tıpkı Penligent-bu kriptografik mekanizmaları denetleme şeklimizi değiştiriyor.

Bir JWS'nin Anatomisi: Base64'ten Daha Fazlası
Açıkları analiz etmeden önce, şu şekilde tanımlanan yapıya uyum sağlamalıyız RFC 7515. Bir JSON Web İmzası (JWS), dijital imza veya Mesaj Kimlik Doğrulama Kodu (MAC) ile güvence altına alınmış içeriği temsil eder.
Kompakt bir JWS dizesi noktalarla ayrılmış üç bölümden oluşur (.):
Üstbilgi.Yük.İmza
Kod Çözme Mantığı
Bir işlem gerçekleştirdiğinizde json web imzası kod çözmeilk iki segmenti Base64URL formatından tekrar JSON'a dönüştürüyorsunuz.
İşte hassas belirteçleri günlüğe kaydedebilecek web tabanlı araçlar yerine CLI'yı tercih eden güvenlik araştırmacıları için ham bir Python uygulaması:
Python
`import sys import json import base64
def padding_fix(data): missing_padding = len(data) % 4 if missing_padding: data += '=' * (4 - missing_padding) return data
def decode_jws(token): try: header_b64, payload_b64, signature_b64 = token.split('.')
header = json.loads(base64.urlsafe_b64decode(padding_fix(header_b64)))
payload = json.loads(base64.urlsafe_b64decode(padding_fix(payload_b64)))
başlığı, yükü döndür
hariç ValueError:
print("[-] Geçersiz Belirteç Formatı")
sys.exit(1)
Kullanım bağlamı
header, payload = decode_jws(sys.argv[1])
print(json.dumps(header, indent=2))`
Bir kod çözme işleminin çıktısı tipik olarak doğrulamanın nasıl yapılacağını belirleyen meta verileri ortaya koyar gerekir olur. Bu meta veriler saldırganın birincil hedefidir.
| Başlık Parametresi | Açıklama | Güvenlik Uygulamaları |
|---|---|---|
alg | Algoritma (örn. HS256, RS256) | Kripto ilkelini belirler. Düşürme saldırıları için birincil hedef. |
typ | Belirteç Türü (ör. JWT) | Genellikle göz ardı edilir, ancak tip karışıklığı için kullanılabilir. |
Çocuk | Anahtar Kimliği | Hangi tuşun kullanılacağına dair ipuçları verir. Şunlar için manipüle edilebilir Dizin Çaprazlama veya SQL Enjeksiyonu nadir durumlarda. |
jku / x5u | JSON Web Anahtarı URL'si | Açık anahtar URL'sine işaret eder. SSRF veya kötü niyetli anahtar barındırma için hedef. |

"Kod Çözme-Doğrulama" Boşluğu: Güvenlik Açıklarının Yaşadığı Yer
Temel sorun, birçok kütüphanenin ve özel uygulamanın şifre çözme adımından doğrulamak adım. Bir uygulama, başlığı okumak için kod çözebilir alg alanını seçin ve ardından imzanın nasıl doğrulanacağına karar vermek için bu kullanıcı kontrollü girdiyi kullanın.
1. "Yok" Algoritma Bypass'ı
Bu, JWS istismarlarının "Merhaba Dünya "sıdır, ancak eski sistemlerde devam eder. Eğer bir arka uç uygulaması alg başlığını doğrulama mantığını belirlemek için çözülen belirteçten alan bir saldırgan belirteci değiştirebilir:
- Şifre çözme başlık.
- Değişim
algiçinHiçbiri(veyaHiçbiri,YOK). - İmzayı soyun.
Kütüphane destekliyorsa Hiçbiri (hata ayıklama için tasarlanmıştır) ve algoritmaları beyaz listeye almazsa, imza kontrolü tamamen atlanır.
2. Algoritma Karışıklığı (Anahtar Karışıklığı)
Bu daha sofistike bir saldırıdır. Bir sunucu hem simetrik (HMAC) hem de asimetrik (RSA/ECDSA) imzalamayı desteklediğinde ancak belirli bir anahtar için hangisinin kullanıldığını doğrulayamadığında ortaya çıkar.
- Senaryo: Sunucu bir RS256 belirteci bekler (bir Özel Anahtar ile imzalanmış, bir Açık Anahtar ile doğrulanmış).
- Saldırın: Saldırgan bir json web imzası kod çözme, değişiklikler
algiçinHS256(HMAC) ile imzalar ve token'ı sunucunun Açık Anahtar HMAC sırrı olarak. - Sonuç: Açık Anahtar genellikle istemci tarafından kullanılabildiğinden (veya kolayca erişilebildiğinden), saldırgan sunucunun kendi Açık Anahtarını kullanarak doğruladığı geçerli bir imzayı taklit edebilir (bunu bir HMAC sırrı olarak ele alır).
Örnek Olay İncelemesi: CVE-2022-21449 ("Psychic Paper")
Algoritma karışıklığı bir mantık hatası olsa da, bazı güvenlik açıkları kriptografik uygulamanın derinliklerinde mevcuttur.
CVE-2022-21449 (CVSS 7.5), "Psychic Paper" olarak adlandırılan bu sorun Java'nın ECDSA imzalarını uygulamasını etkilemiştir. Bu, bir "imzanın var olduğunu" doğrulamanın neden yetersiz olduğunun en iyi örneğidir.
Mekanizma
ECDSA'da doğrulama matematiksel bir denklem içerir: $v = R'$ (basitleştirilmiş). Güvenlik açığı Java'nın ECDSA $r$ ve $s$ imza parçalarının her ikisinin de 0doğrulama mantığı yanlış bir şekilde gerçek için herhangi bir yük.
Bir saldırgan olabilir:
- Şifre çözme meşru bir JWS.
- Yükü değiştirin (örn,
{"admin": true}). - $r=0$ ve $s=0$ olan bir imza oluşturun.
- Java tabanlı bir arka uca gönderin (Java 15, 16, 17 veya 18 çalıştıran).
Sunucu imzanın geçerli olduğunu doğrulayarak kimlik doğrulamasının tamamen atlanmasına izin verir. Bu durum, standart, yaygın olarak kullanılan kütüphanelerin bile felaket hatalarına karşı bağışık olmadığını vurgulamaktadır.
Yapay Zeka Güdümlü JWS Denetimi: Penligent Yaklaşımı
JWS belirteçlerinin manuel analizi bireysel istismarlar için etkilidir, ancak modern mikro hizmet mimarileri genellikle yüzlerce farklı anahtar, rotasyon politikası ve algoritma yapılandırması kullanır. Bir insan mühendis manuel olarak json web imzası kod çözme ve tüm saldırı yüzeyinde başlık ekleme, anahtar karışıklığı ve kütüphaneye özgü baypasların her permütasyonunu test edin.
İşte bu noktada yapay zeka odaklı otomatik sızma testleri büyük önem kazanıyor.
Penligent Bu test derinliğini otomatikleştirmek için gelişmiş Büyük Dil Modellerinden (LLM'ler) ve takviye öğrenmeden yararlanır. Bilinen kötü dizeleri aramak için statik regex kullanan geleneksel tarayıcıların aksine, Penligent'in motoru:
- Bağlamsal Kod Çözme: Trafiği durdurur, JWS belirteçlerinin kodunu çözer ve bağlamı anlar (örneğin, "Bu belirteç sadece oturum açmak için değil, ödeme ağ geçidi için kullanılır").
- Uyarlanabilir Yük Üretimi: Sadece denemekle kalmıyor
alg: yok. Arka uç kütüphanesini çıkarmak için sunucunun hata yanıtlarını analiz eder. Bir Java ortamı tespit ederse, CVE-2022-21449'un varyasyonlarını deneyebilir. Eğer görürseÇocukparametrelerini kullanarak, Anahtar Kimliği aracılığıyla SQL enjeksiyonu veya komut enjeksiyonu için problar. - Mantık Akış Analizi: Penligent, bir tokenin bir uç noktada doğru bir şekilde doğrulanıp doğrulanmadığını ancak deşifre edildi ve ikincil bir mikro hizmette doğrulama yapılmadan güvenilmesi yaygın bir mimari kusurdur.
Penligent, akıllı JWS analizini entegre ederek, basit güvenlik açığı taramasının ötesine geçerek otonom kırmızı ekipkriptografik uygulamaların hem bilinen CVE'lere hem de sıfırıncı gün mantık kusurlarına karşı sağlam olmasını sağlar.
Mühendisler için Sertleştirme Kılavuzları
Uygulamaları JWS saldırılarına karşı güvence altına almak için "örtük güven "den "açık doğrulama "ya geçmeliyiz.
1. Algoritma Beyaz Listesini Zorla
Asla güvenmeyin alg başlığını doğrulama yöntemini belirlemek için kodu çözülmüş belirteçten alın. Doğrulayıcınızda beklenen algoritmayı sabit kodlayın.
JavaScript
// Güvenli yaklaşım (Node.js jose kütüphanesi) const verified = await jose.jwtVerify(token, secretKey, { algorithms: ['RS256'], // Explicitly whitelist ONLY RS256 });
2. Doğrulama Çocuk (Anahtar Kimliği) STRICTLY
Kurulumunuzda birden fazla anahtar (JWKS) kullanılıyorsa Çocuk başlığı beyaz listenizdeki bir anahtarla eşleşir. Geçmeyin Çocuk değerini doğrudan bir veritabanı sorgusuna veya dosya sistemi çağrısına yönlendirir.
3. Modern Kütüphaneleri Kullanın
Kendi kripto sarmalayıcılarınızı yazmaktan kaçının. Savaşta test edilmiş kütüphaneleri kullanın jose (Node.js), PyJWT (Python) veya jjwt (Java). Ancak, bu kütüphaneler için güvenlik bültenlerine abone olduğunuzdan emin olun.
4. Kod Çözmeyi Doğrulamadan Ayırın (Mantıksal Olarak)
Şunu anlayın json web imzası kod çözme içindir. ekran amaçlar (kullanıcı arayüzü, günlük kaydı). Doğrulama içindir. yetkilendirme. Doğrulama adımı geri dönmeden önce iş mantığı için kodu çözülmüş verileri asla kullanmayın gerçek.
Sonuç
Yetenek json web imzası kod çözme temel bir beceridir, ancak bu yalnızca yüzeyin çizilmesidir. Güvenlik mühendisi için ham JSON, potansiyel yanlış yapılandırmaların bir haritasıdır. Klasik "None" algoritmasından CVE-2022-21449 gibi matematiksel atlamalara kadar, web'in bütünlüğü sadece başarılı kod çözmeye değil, titiz doğrulamaya da dayanır.
Uygulama karmaşıklığı arttıkça, yapay zeka destekli araçlardan yararlanmak Penligent Bu ince kriptografik kusurların tespitini otomatikleştirmek, sağlam kurumsal güvenlik duruşu için bir gereklilik haline geliyor.
Referanslar:

