Der Stand war grossteils Express-Generator-Boilerplate von 2018 und brachte 19
gemeldete Schwachstellen mit, 4 davon kritisch. Jetzt: 0.
Sicherheitsrelevant:
- express 4.16.4 -> 4.22.2 behebt DoS in body-parser, die cookie-Lücke,
path-to-regexp, qs sowie Template-Injection/XSS in send und serve-static
- hbs 4.0.6 -> 4.2.1 zieht handlebars nach; die alte Fassung hatte vier
kritische Meldungen, darunter Remote Code Execution beim Kompilieren von
Templates
- socket.io 4.7.5 -> 4.8.3 samt Sub-Abhaengigkeiten behebt die unbegrenzte Zahl
binaerer Attachments und die Memory-Exhaustion in socket.io-parser sowie
mehrere DoS-Pfade in ws — beides genau der Pfad, der im Betrieb offen im WLAN
haengt
- cookie-parser, morgan, debug und http-errors auf aktuelle Fassungen
Entfernt: express-ws und ws als direkte Abhaengigkeiten. Beide wurden nirgends
importiert — die WebSocket-Verbindung laeuft ueber socket.io, das sein eigenes
ws mitbringt.
Express bleibt bewusst auf 4.x. Der Sprung auf 5 ist ein Major mit Aenderungen
an Router und Fehlerbehandlung und bringt hier keinen Sicherheitsgewinn.
Verifiziert auf Node 24.19: alle drei Monitoransichten, Adminpanel, 404-Seite
und der komplette Socket.IO-Durchlauf (score, timerDurationLeft, timerEnded,
scoreSideswitch, refresh, Reconnect) unveraendert in Ordnung, keine
Deprecation-Warnungen im Log.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lowdb v7 ist ESM-only, das Projekt ist CommonJS. Der bisherige Umweg ueber
eine async IIFE mit await import() hatte zur Folge, dass db bei einem sehr
fruehen Request noch undefined sein konnte.
Fuer eine Liste von Teamnamen genuegt fs: read/write lesen und schreiben
db.json direkt und synchron, die Race-Condition entfaellt und lowdb kann als
Abhaengigkeit raus. Die exportierte API bleibt unveraendert, score.js und
routes/admin.js brauchen keine Anpassung.
Der Pfad zu db.json wird jetzt ueber __dirname aufgeloest statt relativ zum
Arbeitsverzeichnis, damit die Datei unabhaengig vom Startverzeichnis immer
an derselben Stelle liegt. Fehlt oder bricht die Datei, wird auf eine leere
Teamliste zurueckgefallen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>