JWT-HACK: Rebn In Rust | Hahwul


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.

MetrikJWT-HACK v1JWT-HACK v2
Zaman (ortalama ± σ)1.874 s ± 0.033 s678.6 ms ± 165.8 ms
Menzil (min… maks)1.834 s… 1.935 s623.5 ms… 1150.4 ms
Kullanıcı zamanı7.312 S3516.7 ms
Sistem süresi1.985 s491.1 ms
Koşu1010

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.

Codecov sonucu

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

Özel anahtarla jwt yapın

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ü eklemek kid 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.



Source link