JWT-Hack V2, performansı, güvenlik ve istikrarı artıran tam bir pas yeniden yazmadır.
Ekim 2020’de, JSON Web Tokens (JWTS) için güvenlik testini biraz daha uygun hale getirmek için JWT-Hack adlı bir araç oluşturdum. O zaman, bu Go tabanlı araç, özüne odaklanan kendi zorunluluğumdan doğan bir projeydi. crack
Kelime listeleri veya kaba kuvvet kullanarak JWT imzalama sırlarını bulmak için özellik.
Gerçek şu ki, yaklaşık beş yıldır, proje diğer çalışmalarıma kıyasla biraz ihmal edildi. Burada ve orada küçük iyileştirmeler yaparken, bir parçam her zaman daha fazla hak ettiğini hissetti. Bu yüzden nihayet dalmayı almaya ve projeye tam bir yeniden başlatmaya karar verdim ve yeni bir büyük sürümün yayınlanmasına yol açtım: JWT-Hack V2.
Bu yazıda, JWT-Hack V2’deki temel değişikliklerin ne olduğunu ve projenin bir sonraki nereye yöneldiğini kısaca paylaşmak istiyorum.
Git’den Rusta: Çekirdek Değişim
V2’deki en büyük değişiklik, Go’dan Rust’a tam geçiş. Mevcut tüm GO kodunu Rust’ta yeniden yazmak adil bir çaba gerektirdi, ancak bunun değerli bir çaba olduğuna inanıyorum.
Birincil neden istikrardı. Açıkçası, V1 bazen beklenmedik bellekle ilgili sorunlarla karşılaşırdı. Rust’un sahiplik sistemi ve katı derleme zamanı kontrolleri sayesinde, bu tür hataları kaynakta önleyebildim ve çok daha kararlı bir araçla sonuçlandım.
Tabii ki, bir performans artışı bonus olarak ortaya çıktı. Basit bir ölçüt bile oldukça tatmin edici bir hız gelişimi gösterir.
Metrik | JWT-HACK v1 | JWT-HACK v2 |
---|---|---|
Zaman (ortalama ± σ) | 1.874 s ± 0.033 s | 678.6 ms ± 165.8 ms |
Menzil (min… maks) | 1.834 s… 1.935 s | 623.5 ms… 1150.4 ms |
Kullanıcı zamanı | 7.312 S | 3516.7 ms |
Sistem süresi | 1.985 s | 491.1 ms |
Koşu | 10 | 10 |
Performans karşılaştırması crack
aynı koşullar altında özellik ($ jwt-hack crack eyJ0e... --mode brute --max 4
)
Vakfı güçlendirmek
Bu sadece dili değiştirmekle ilgili değildi; Ayrıca projenin temelini güçlendirmeye odaklandım.
Test kapsamı
V2’nin gelişimi sırasında en çok dikkat ettiğim alanlardan biri Test Koduydu. Önceki sürüme kıyasla çok daha kapsamlı testler yazdım, gelecekteki kod değişikliklerinden yan etkileri en aza indirmek ve yeni özellikler eklendikçe istikrarı korumak için sağlam bir taban oluşturdum.
Uyumluluk
Önemli bir sürüm sürümü olmasına rağmen, V1’den tüm komut satırı seçenekleri ve kullanım modelleri tamamen kalıtsaldır. Bu, herhangi bir geçiş çalışması olmadan mevcut komut dosyalarınıza veya boru hatlarınıza güncelleyebileceğiniz ve uygulayabileceğiniz anlamına gelir.
Genişletilmiş özellikler
Rust’a geçişten kazanılan istikrar ve kalkınma kolaylığı üzerine dayanarak, uzun zamandır gerekli olduğunu düşündüğüm birkaç özellik ekledim.
Daha fazla algoritma desteği
Daha önce HMAC tabanlı algoritmalara (HS256, HS384, HS512) odaklanmış olsa da, JWT-Hack artık RSA (RS*) ve ECDSA (ES*) gibi asimetrik şifreleme algoritmalarını desteklemektedir.
Yeni anahtar tabanlı işlevsellik
Basit gizli tabanlı testlerin ötesine geçerek, artık özel/genel anahtarları kullanarak jetonları oluşturmak, doğrulamak ve test etmek mümkündür. Örneğin, böyle özel bir anahtarla imzalı bir JWT oluşturabilirsiniz:
ssh-keygen -t rsa -b 4096 -E SHA256 -m PEM -P "" -f RS256.key
jwt-hack encode '{"a":"z"}' --private-key RS256.key --algorithm=RS256
Yeni Doğrulama Modu
Gerçek şu ki, önceki sürüm, bir JWT’nin imzasının geçerli olup olmadığını doğrulamak için temel işlevlerden yoksundu. Bu güncelleme bir verify
Bir jetonun imzasını bir sır veya genel anahtarla kontrol etmenizi sağlayan mod, jeton testi için aracı daha eksiksiz hale getirir.
Daha geniş saldırı vektör desteği
JWT-Hack’in temel özelliklerinden biri, bilinen saldırı vektörleri için jetonlar oluşturmaktır. Mevcut olana ek olarak none
algoritma ve jku/x5u
Saldırılar, şimdi daha geniş bir vektör yelpazesini destekliyor ve gelecekte genişlemeye devam edecek:
- Algoritma karışıklığı (
alg
HS256 başlığı) - SQL enjeksiyonu
kid
(Bir SQLI yükü eklemekkid
başlık) - Bilinen diğer saldırı teknikleri
Kurulum
Kargo
Rust geliştiriciyseniz, doğrudan yükleyebilirsiniz. cargo
.
cargo install jwt-hack
Homebrew
Ve en heyecan verici haber parçalarından biri için: JWT-Hack artık yetkiliye dahil edildi homebrew-core
! Basit bir komutla yükleyebilir ve güncelleyebilirsiniz, ayrı bir depoya dokunmaya gerek yoktur.
brew install jwt-hack
Daha
Snapcraft paketi, Docker Hub ve GHCR dahil olmak üzere çeşitli kanallardan JWT-hack de alabilirsiniz.
Son Düşünceler
Uzun süredir ihmal edilen bir projeye yeni hayat vermek beklediğimden daha keyifli oldu. Aracın geliştiğini görmek harikaydı, ancak onu özellikle eğlenceli kılan, pas dilini daha derinden tanıma süreciydi.
İleride, JWT-Hack’i JWT güvenlik testi için çeşitli özelliklerle dolu kapsamlı bir araca dönüştürmeyi planlıyorum. Gerekli özellikler veya iyileştirmeler için herhangi bir fikriniz varsa, lütfen GitHub sorunları hakkında yorum yapmaktan çekinmeyin. İlginiz bu projenin arkasındaki itici güçtür.