chore: Version 1.11.0
This commit is contained in:
+96
-1
@@ -26,6 +26,100 @@ Wiederherstellung*.
|
||||
|
||||
_Noch nichts._
|
||||
|
||||
## [1.11.0] – 2026-08-24
|
||||
|
||||
Diese Fassung geht aus einer Sicherheitsprüfung hervor. Sie ändert nichts
|
||||
an der Bedienung, schließt aber mehrere Lücken — darunter drei, bei denen
|
||||
im Code eine Zusage stand, die so nicht galt.
|
||||
|
||||
### Vor dem Update: zwei neue Zeilen in der `.env`
|
||||
|
||||
```bash
|
||||
ERSTEINRICHTUNG_GEHEIMNIS=<zufälliger Wert, npm run schluessel erzeugt einen>
|
||||
VERTRAUE_PROXY=true
|
||||
```
|
||||
|
||||
Beide sind nicht zwingend, aber beide haben Folgen, wenn sie fehlen:
|
||||
|
||||
- Ohne `ERSTEINRICHTUNG_GEHEIMNIS` läuft alles weiter — nur der **erste**
|
||||
Zugang ließe sich nicht mehr anlegen. Auf einer bestehenden Installation
|
||||
ist das genau richtig; bei einer Neuinstallation brauchst du den Wert.
|
||||
- Ohne `VERTRAUE_PROXY=true` zählt die Anmeldesperre nur noch nach
|
||||
E-Mail-Adresse, nicht mehr zusätzlich nach Anschluss. Beim ersten Mal
|
||||
steht eine erklärende Zeile im Log.
|
||||
|
||||
### Nach dem Update, nur mit Objektspeicher
|
||||
|
||||
Bereits abgelegte Dateien liegen weiter unverschlüsselt, bis sie einmal
|
||||
umgeschrieben werden. Lesen funktioniert durchgehend, der Lauf lässt sich
|
||||
jederzeit abbrechen und wiederholen:
|
||||
|
||||
```bash
|
||||
npm run speicher:verschluesseln # erst schauen
|
||||
npm run speicher:verschluesseln -- --anwenden
|
||||
```
|
||||
|
||||
Wer beim Dateitreiber bleibt, muss nichts tun — dort wurde immer schon
|
||||
verschlüsselt.
|
||||
|
||||
### Behoben
|
||||
|
||||
- **Der zweite Faktor war eine Anzeige, keine Grenze.** „TOTP ist Pflicht"
|
||||
galt nur für Seiten. Server Actions und Downloads liefen daran vorbei:
|
||||
Wer sich mit Passwort angemeldet, die Einrichtung aber nie abgeschlossen
|
||||
hatte, kam an die Daten. Die Prüfung sitzt jetzt an der Stelle, durch die
|
||||
alles muss.
|
||||
|
||||
- **Ein Dokumenten-Download fragte nur nach der Anmeldung.** Dieselbe
|
||||
Lücke, an einer Stelle, die bei der ersten Durchsicht übersehen wurde.
|
||||
|
||||
- **Die Anmeldesperre sperrte dauerhaft aus.** Jeder Versuch während einer
|
||||
laufenden Sperre verlängerte sie um die volle Dauer. Wer alle zehn
|
||||
Minuten ein falsches Passwort an eine fremde Adresse schickte, sperrte
|
||||
deren Inhaber aus — ohne das Passwort zu kennen. Nebenbei wuchs die
|
||||
Tabelle mit jedem Versuch.
|
||||
|
||||
- **Ein Code aus der Authenticator-App galt mehrfach.** Bis zu 90 Sekunden
|
||||
lang ließ sich derselbe Code erneut einlösen — abgelesen, abgefangen
|
||||
oder aus dem Browserverlauf. Jetzt gilt jeder genau einmal.
|
||||
|
||||
- **Passkeys ließen sich ohne Rückfrage anlegen und entfernen.** An einem
|
||||
unbeaufsichtigten Rechner waren das zwei Klicks zu einem dauerhaften
|
||||
eigenen Zugang, der auch einen Passwortwechsel überlebt hätte. Jetzt
|
||||
fragt die Anwendung vorher nach Passwort und Code — wie beim Export.
|
||||
|
||||
- **Die Ersteinrichtung stand offen.** Zwischen dem ersten Start und dem
|
||||
Anlegen des Zugangs konnte jeder, der die Seite fand, Administrator
|
||||
werden. Zwei gleichzeitige Anfragen legten außerdem beide einen Zugang
|
||||
an.
|
||||
|
||||
- **Dateien im Objektspeicher lagen mit dem Schlüssel des Anbieters da.**
|
||||
Gegen eine verlorene Festplatte im Rechenzentrum half das, gegen den
|
||||
Anbieter und gegen gestohlene Zugangsdaten zum Speicher nicht. Jetzt
|
||||
liegt derselbe Umschlag darum wie bei der Ablage auf dem eigenen Server,
|
||||
mit einem Schlüssel, der die Anwendung nie verlässt.
|
||||
|
||||
- **Ein präpariertes PDF konnte den Server umbringen.** Beim Auslesen des
|
||||
eingebetteten Texts gab es keine Obergrenze: Wenige Kilobyte Füllung
|
||||
blähen sich beim Auspacken auf Gigabyte auf. Ebenso beim Umwandeln in
|
||||
Bilder — die Seitengröße steht im Dokument, und bei fester Auflösung
|
||||
ergab eine künstlich große Seite ein Bild von mehreren Gigabyte.
|
||||
|
||||
- **32 Schwachstellen in mitgelieferten Paketen, davon 5 kritische.**
|
||||
Jetzt keine.
|
||||
|
||||
### Geändert
|
||||
|
||||
- **Downloads laufen jetzt immer über die Anwendung**, auch mit
|
||||
Objektspeicher. Das ist die Folge der Verschlüsselung — entschlüsseln
|
||||
kann nur die Anwendung. Nebeneffekt: Jeder Abruf prüft die Berechtigung
|
||||
und wird protokolliert. Ein weitergeleiteter Link allein öffnet nichts
|
||||
mehr.
|
||||
|
||||
- **`docs/SICHERHEIT.md`** ist neu: Bedrohungsmodell, der Durchgang entlang
|
||||
der OWASP Top 10 — und ein Abschnitt darüber, was ausdrücklich **nicht**
|
||||
geschützt ist.
|
||||
|
||||
## [1.10.2] – 2026-08-24
|
||||
|
||||
### Behoben
|
||||
@@ -1171,7 +1265,8 @@ Was davon wann angegangen wird, steht in [`docs/ROADMAP.md`](docs/ROADMAP.md).
|
||||
|
||||
---
|
||||
|
||||
[Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.10.2...HEAD
|
||||
[Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.11.0...HEAD
|
||||
[1.11.0]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.10.2...v1.11.0
|
||||
[1.10.2]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.10.1...v1.10.2
|
||||
[1.10.1]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.10.0...v1.10.1
|
||||
[1.10.0]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.9.0...v1.10.0
|
||||
|
||||
Reference in New Issue
Block a user