Skip to content

260723

Choose a tag to compare

@radioactive-bbs radioactive-bbs released this 23 Jul 16:55
· 9 commits to main since this release

Aenderungen seit 260721

Fix

  • DM-Chunking zerschnitt Umlaute/Emojis und kappte lange Antworten: Die Aufteilung langer Nachrichten in mehrere Funkpakete zaehlte bisher Zeichen statt UTF-8-Bytes - bei Umlauten/Emojis konnte ein 150-Zeichen-Chunk deutlich ueber dem 150-Byte-Firmware-Limit liegen und wurde dann mitten in einer Mehrbyte-Sequenz abgeschnitten. Zusaetzlich wurden lange Einzeltexte (u.a. die Willkommens-/Bestaetigungs-DM nach erfolgreicher Registrierung) gar nicht in mehrere Pakete aufgeteilt und dadurch bei 150 Byte hart gekappt. Beides jetzt byte-genau korrekt.
  • cmd_kill (K/ND) ermoeglichte Aufzaehlen fremder Postfach-Nachrichten: Wer eine private Nachricht nicht loeschen durfte, bekam "Keine Berechtigung" (verraet: ID existiert) statt "nicht gefunden" - damit liess sich per Durchprobieren erkennen, welche fremden Nachrichten-IDs existieren. Jetzt dieselbe Maskierung wie beim Lesen (R<n>): wer eine private Nachricht nicht einmal lesen darf, bekommt "nicht gefunden".
  • Watchdog-Reinitialisierung wird beim Shutdown jetzt sauber abgebrochen (war zuvor ein ungetrackter Task); Nachrichtenabruf vom Node bricht ab, sobald "keine weiteren Nachrichten" gemeldet wird, statt immer 20 Anfragen zu senden.

Performance

  • Board-/Nachrichtenliste (BL/NL) laden nicht mehr die komplette Tabelle: Filterung und Seitenweise-Anzeige laufen jetzt per SQL-Query (WHERE/LIMIT/OFFSET) statt die gesamte messages-Tabelle in den Speicher zu laden. Bei der Board-Liste wurden dabei bisher auch alle privaten Nachrichten aller User unnoetig entschluesselt, nur um sie anschliessend wegzufiltern - das entfaellt jetzt komplett.

Sicherheit / Haertung

  • TLS-Cipher-Suiten eingeschraenkt: Das Web-Admin-Zertifikat verhandelt jetzt nur noch Forward-Secret-AEAD-Suiten (ECDHE/DHE + AES-GCM/ChaCha20); ungenutzte PSK-/SRP-Suiten (keine PSK-Identity konfiguriert, reine Angriffsflaeche) sind ausgeschlossen. TLS 1.3 ist davon unberuehrt.
  • TLS-Private-Key-Datei: Dateirechte (0600) werden jetzt auch bei bereits vorhandenen Dateien (z.B. nach manuellem Kopieren oder Backup-Wiederherstellung) explizit erzwungen, nicht nur bei Neuanlage.
  • AES-GCM-Entschluesselung faengt jetzt gezielt ungueltige Tags/defektes Base64 ab, statt pauschal jede Ausnahme (auch z.B. MemoryError) stillschweigend zu verschlucken.
  • scrypt-Passwort-Hashing hat jetzt eine explizite Speicherobergrenze (maxmem), damit ein manipulierter Hash mit ueberhoehten Parametern keinen Speicher-DoS ausloesen kann.
  • Web-Admin-Login: Konstantzeit-Vergleich gegen unbekannte Zusatz-Admin-Benutzernamen (verhindert Enumeration ueber die Antwortzeit); Sessions werden jetzt regelmaessig bereinigt statt unbegrenzt zu wachsen.

Sonstiges

  • datetime.utcnow() durch die zukunftssichere now_utc()-Hilfsfunktion ersetzt (utcnow() ist ab Python 3.12 deprecated), Speicherformat/Verhalten unveraendert.
  • Kleinere Code-Aufraeumungen (gemeinsamer E-Mail-Validator, konsolidierte Imports).