Rate-Limiting: IPv6-Bypass-Härtung via ipKeyGenerator
loginRateLimiter und staffPasswordReAuthLimiter keyten auf die volle req.ip. Bei IPv6 kann ein Angreifer aus seinem zugeteilten Block (/56–/64) pro Request eine neue Adresse nehmen und so das Per-IP-Limit umgehen – betrifft Login-Bruteforce-Schutz und den Passwort-Set- Reauth-Limiter. Fix: req.ip in beiden keyGenerator durch ipKeyGenerator() ersetzt (express-rate-limit v7). IPv6 wird auf das Subnetz normalisiert (Library-Default /56), IPv4 bleibt unverändert. Verifiziert: zwei verschiedene IPv6 im selben /56 ergeben denselben Key. Die Limiter ohne eigenen keyGenerator (Passwort-Reset, Consent) normalisieren IPv6 bereits über den Library-Default – damit jetzt konsistent. Ersetzt den verworfenen aria-WIP, neu auf aktuellem Stand gebaut. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,20 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Rate-Limiting: IPv6-Bypass-Härtung (ipKeyGenerator)**
|
||||
- Die Rate-Limiter mit eigenem `keyGenerator` (`loginRateLimiter`,
|
||||
`staffPasswordReAuthLimiter`) keyten auf die **volle** `req.ip`.
|
||||
Bei IPv6 kann ein Angreifer aus seinem zugeteilten Block (/56–/64)
|
||||
pro Versuch eine neue Adresse nehmen und so das Per-IP-Limit
|
||||
(Login-Bruteforce, Passwort-Set-Reauth) umgehen.
|
||||
- Fix: `req.ip` in beiden `keyGenerator` durch `ipKeyGenerator(...)`
|
||||
(express-rate-limit v7) ersetzt → IPv6 wird auf das Subnetz
|
||||
normalisiert (Library-Default /56), IPv4 unverändert. Verifiziert:
|
||||
zwei verschiedene IPv6 im selben /56 ⇒ derselbe Key.
|
||||
- Die Limiter OHNE eigenen keyGenerator (Passwort-Reset, Consent)
|
||||
machten das schon über den Library-Default – jetzt konsistent.
|
||||
(Ersetzt den verworfenen aria-WIP; auf aktuellem Stand neu gebaut.)
|
||||
|
||||
- [x] **🐞 Spam-Tab: Anhänge aus Junk-Ordner (Pentest R124-Fund)**
|
||||
- Beim Spam-Feature wurden `moveEmailToTrash`/`restoreEmailFromTrash`
|
||||
auf den echten Junk-Pfad umgestellt, aber vier Attachment-Funktionen
|
||||
|
||||
Reference in New Issue
Block a user