|
|
|
@@ -12,11 +12,11 @@ Das Protokoll enthält bewusst keine Passwörter, keine Zugangsdaten und keine A
|
|
|
|
|
|
|
|
|
|
- **Zugangsdaten im Quelltext:** Es wurden keine echten Passwörter oder Schlüssel gefunden. Die gesamte Änderungsgeschichte des Projekts wurde durchsucht; alle 20 Treffer waren Fehlalarme, nämlich Testschlüssel, Beschriftungen und Beispiele in Notizen.
|
|
|
|
|
- **Fremde Bausteine:** Die erste Prüfung verzeichnete 151 bekannte Schwachstellen in den Bausteinen anderer Hersteller, die Tessera im Betrieb verwendet, davon 5 kritische und 73 hohe. Am 9. Oktober 2026 wurden die Bausteine innerhalb ihrer bisherigen Versionslinien aktualisiert und zwei ungenutzte Bausteine entfernt; danach sind es 12 (0 kritische, 9 hohe, 3 mittlere). Die übrigen 12 haben keine bereinigte Fassung in der verwendeten Versionslinie (xlsx, node-forge) oder werden erst in einer neuen Hauptversion behoben (nodemailer, sharp, deepmerge-ts); sie sind unter „Einordnung der Befunde“ mit Grund eingeordnet.
|
|
|
|
|
- **Eigener Quelltext:** Ein einziger echter Härtungspunkt wurde gefunden (die Längenprüfung bei der Entschlüsselung gespeicherter Geheimnisse, Schweregrad niedrig). Alles andere sind Fehlalarme oder bewusste, dokumentierte Entscheidungen.
|
|
|
|
|
- **Eigener Quelltext:** Ein einziger echter Härtungspunkt wurde gefunden (die Längenprüfung bei der Entschlüsselung gespeicherter Geheimnisse, Schweregrad niedrig); er ist am 9. Oktober 2026 behoben und durch Tests abgesichert. Alles andere sind Fehlalarme oder bewusste, dokumentierte Entscheidungen.
|
|
|
|
|
- **Automatische Prüfung:** Seit dem 9. Oktober 2026 läuft nach jedem Bau der Plattform automatisch eine Sicherheitsprüfung. Sie meldet nur und hält den Bau nie an.
|
|
|
|
|
- **Prüfung von außen:** Vor jeder Freigabe wird der Testserver alpha wie ein Besucher ohne Konto angesehen, rein passiv und ohne Angriffe. Der erste Lauf am 9. Oktober 2026 (direkt gegen die Anwendung, ohne den vorgeschalteten Proxy) fand nichts Hohes, 2 mittlere und 6 niedrige Hinweise sowie 3 reine Informationen; alle betreffen fehlende Schutz-Kopfzeilen der Weboberfläche. Der Lauf über die öffentliche Adresse steht noch aus.
|
|
|
|
|
- **Bisherige Prüfungen:** Acht Code-Prüfungen größerer Änderungen mit zusammen 89 Befunden; 76 davon sind behoben, die übrigen 13 sind Hinweise der niedrigsten Stufe. Alle kritischen Befunde und alle Warnungen sind behoben.
|
|
|
|
|
- **Was noch zu tun ist:** Die fertigen Abbilder sollen keine Entwicklungswerkzeuge mehr enthalten, die Härtung der Längenprüfung bei der Entschlüsselung steht aus, und die offenen Bausteine werden bei neuen Fassungen der Hersteller erneut angesehen. Der Stand jedes einzelnen Punkts steht in der Tabelle „Einordnung der Befunde“.
|
|
|
|
|
- **Was noch zu tun ist:** Die Abbilder enthalten seit dem 9. Oktober 2026 keine Entwicklungswerkzeuge und keine Paketverwaltung mehr (das Server-Abbild ist von 1,59 auf 1,12 GB geschrumpft, seine Fundzahl von 3 kritischen und 45 hohen auf 0 kritische und 6 hohe gefallen). Offen bleiben einzelne Bausteine ohne bereinigte Fassung und die Bausteine, die erst mit einer neuen Hauptversion zu beheben sind; sie werden bei neuen Fassungen der Hersteller erneut angesehen. Der Stand jedes einzelnen Punkts steht in der Tabelle „Einordnung der Befunde“.
|
|
|
|
|
|
|
|
|
|
## So lesen Sie dieses Protokoll
|
|
|
|
|
|
|
|
|
@@ -195,11 +195,11 @@ Die Tabelle beurteilt jeden Befund der ersten vollständigen Prüfung. Sie wird
|
|
|
|
|
| Zwei mittelbare Bausteine ohne bereinigte Fassung in der Versionslinie: Bildbaustein sharp 0.34.5 (im Webframework) und deepmerge-ts 7.1.5 (in der Datenbank-Werkzeugkette) | Weboberfläche, Server | Hoch (3 und 1) | offen | Die Korrektur liegt bei sharp erst in 0.35 (eine neue Nebenversion der Null-Linie, die wie eine Hauptversion behandelt wird), bei deepmerge-ts in Version 8. Die Meldungen zu sharp betreffen das Dekodieren präparierter Bilddateien (libvips, libheif, librsvg); sharp gehört zur Bild-Optimierung des Webframeworks, und in der Konfiguration sind keine fremden Bildquellen freigegeben, sodass nur eigene Dateien verarbeitet werden. deepmerge-ts steckt im Werkzeug der Datenbank-Anbindung, das mit der Datenbank-Hauptversion (Prisma 6.19.3 bleibt exakt festgelegt) mitgeführt wird. Beide werden mit der jeweils nächsten Hauptversion ihres Elternpakets behoben |
|
|
|
|
|
| Tabellenbaustein xlsx 0.18.5 | Server (Import Handelsware, Export DKV) | Hoch (2 hoch) | offen | Die beiden Meldungen betreffen das Verändern von Objekteigenschaften und die Überlastung durch präparierte Dateien. Auf dem öffentlichen Paketverzeichnis gibt es keine bereinigte Fassung. Der Baustein liest hochgeladene Tabellen angemeldeter Benutzer mit Modulfreigabe und schreibt DKV-Exporte. Er muss durch einen anderen Baustein ersetzt werden; bis dahin begrenzt die Modulfreigabe den Kreis möglicher Angreifer |
|
|
|
|
|
| Zertifikatsbaustein node-forge 1.4.0 | Server (Zertifikatsmanager) | Hoch (1 hoch) | offen | Es ist keine bereinigte Fassung verzeichnet. Der Fehler betrifft das Prüfen von Unterschriften; im Zertifikatsmanager dient diese Prüfung dem Ordnen und Anzeigen der Kette, eine Zugriffsentscheidung hängt nicht daran. Der Baustein liest nur Dateien, die angemeldete Benutzer mit Modulfreigabe selbst hochladen; Größe, Anzahl und Rechenaufwand sind begrenzt. Er wird beobachtet und bei Erscheinen einer Korrektur aktualisiert |
|
|
|
|
|
| Entwicklungswerkzeuge im Server-Abbild (tinypool, tar, pnpm) | Abbild `api` | Hoch (6 kritisch, 116 hoch im Abbild insgesamt) | offen | Das Abbild enthält Werkzeuge zum Testen und Bauen, die im Betrieb nichts tun, aber Schwachstellen mitbringen. Das fertige Abbild soll nur noch enthalten, was zum Laufen nötig ist |
|
|
|
|
|
| Paketverwalter npm im Node-Grundabbild | Abbild `web` | Hoch (Teil von 2 kritisch, 19 hoch) | offen | Das Grundabbild bringt einen Paketverwalter mit eigenen Bausteinen mit, der im Betrieb nicht gebraucht wird. Er soll aus dem fertigen Abbild entfernt werden |
|
|
|
|
|
| Entwicklungswerkzeuge im Server-Abbild (tinypool, tar, pnpm) | Abbild `api` | Hoch (damals 6 kritisch, 116 hoch im Abbild insgesamt) | behoben (9. Oktober 2026) | Das Abbild bringt jetzt nur noch mit, was zum Laufen nötig ist: Es gibt eine eigene Bauphase, die ausschließlich die Bausteine für den Betrieb installiert (samt dem fertig erzeugten Datenbank-Baustein), die Laufzeit-Stufe stammt direkt aus dem Node-Abbild und enthält keine Test- und Bauwerkzeuge mehr. Bewiesen durch einen Start gegen eine frische Datenbank (alle 63 Migrationen laufen durch, die API meldet sich) und durch die Rauchtests am neu gebauten Stack. Größe 1,59 auf 1,12 GB; Fundzahl des Abbilds von 3 kritisch / 45 hoch auf 0 kritisch / 6 hoch (Messung mit Trivy, Betriebssystem und Bausteine zusammen, nach den Aktualisierungen vom selben Tag) |
|
|
|
|
|
| Paketverwalter npm im Node-Grundabbild | Abbilder `web` und `api` | Hoch (damals Teil von 2 kritisch, 19 hoch) | behoben (9. Oktober 2026) | Die Paketverwaltungen des Node-Grundabbilds (npm, npx, corepack, yarn) werden in beiden Laufzeit-Stufen als Erstes entfernt, im Betrieb installiert nichts nach. Das Abbild `web` fiel von 11 hohen auf 3 hohe Funde (0 kritisch). Die Größe des Web-Abbilds bleibt bei 359 MB, weil Docker gelöschte Dateien aus einer früheren Schicht nicht herausrechnet; die Funde zählen trotzdem weniger, weil Trivy nur die sichtbaren Dateien betrachtet. Die Paketverwaltung des Betriebssystems (apk) bleibt bestehen |
|
|
|
|
|
| Desktop-App: Baustein rustls 0.23.41 (Verschlüsselung der Verbindung) | Desktop-App | Mittel | behoben (9. Oktober 2026) | Auf 0.23.45 derselben Versionslinie angehoben (dabei zog der Paketverwalter den Begleitbaustein rustls-webpki von 0.103.13 auf 0.103.15 mit). Übersetzen und Codeprüfung der Desktop-App laufen fehlerfrei. Die nächste Fassung der Desktop-App muss neu gebaut werden, damit die Korrektur ausgeliefert wird |
|
|
|
|
|
| Desktop-App: Baustein glib 0.18.5 | Desktop-App (Linux-Oberfläche) | Mittel | offen | Die Korrektur liegt erst in Version 0.20, die zur Oberflächen-Bibliothek des Desktop-Frameworks gehört. Ein Wechsel ist nur mit deren Aktualisierung möglich |
|
|
|
|
|
| Länge der Echtheitsprüfung bei AES-GCM (Entschlüsselung gespeicherter Geheimnisse) | Server, `crypto.service.ts` | Niedrig | offen | Beim Entschlüsseln wird die Länge des Echtheits-Codes nicht erzwungen. Ein Angreifer bräuchte dafür schreibenden Zugriff auf die Datenbank. Alle bisher gespeicherten Werte nutzen die volle Länge, die Härtung ist ohne Datenverlust möglich |
|
|
|
|
|
| Länge der Echtheitsprüfung bei AES-GCM (Entschlüsselung gespeicherter Geheimnisse) | Server, `crypto.service.ts` | Niedrig | behoben (9. Oktober 2026) | Die Entschlüsselung verlangt jetzt genau die volle Länge des Echtheits-Codes (16 Byte) und weist alles andere ab; die Länge wird zusätzlich an die Verschlüsselungsfunktion übergeben. Alle bisher gespeicherten Werte nutzen die volle Länge und bleiben lesbar. Tests: ein auf 4 Byte gekürzter Code, ein zu langer und ein leerer Code sowie ein Code mit einem veränderten Bit werden abgewiesen (vor der Änderung wurde der gekürzte Code noch akzeptiert), der normale Hin- und Rückweg inklusive leerem Text und Umlauten funktioniert weiter |
|
|
|
|
|
| Vier abschaltbare Zertifikatsprüfungen (Verzeichnisdienst, Proxmox-Anmeldung, Proxmox-Abfragen, Symbolsuche) | Server | Mittel laut Werkzeug | bewusst akzeptiert | Die Prüfung entfällt nur, wenn ein Administrator das für genau eine Verbindung ausdrücklich erlaubt, etwa bei internen Servern mit selbst ausgestellten Zertifikaten. Standard ist die volle Prüfung. Die Entscheidung ist in Kommentaren des Quelltexts mit Verweis auf den Beschluss festgehalten |
|
|
|
|
|
| Testschlüssel und Testwerte in Testdaten, Testdateien und Planungsnotizen | Zertifikatsmanager (Testdaten), drei Testdateien, eine Planungsnotiz, eine Testkomponente | Fehlalarm | bewusst akzeptiert | Die Schlüssel sind eigens zum Prüfen der Software erzeugt und schützen nichts. Der Ordner mit den Testdaten und die einzelnen Dateien stehen in den Ausnahmelisten (gitleaks, Trivy, Semgrep) |
|
|
|
|
|
| Beschriftung „Benutzer/Passwort“, Tabellenzeile einer Prüfliste und Beispielaufruf an einen lokalen Wegwerf-Testserver | Sprachdatei, Planungsnotizen | Fehlalarm | bewusst akzeptiert | Keines der drei enthält ein echtes Geheimnis: ein Beschriftungstext, eine Beispielzeile und der Testzugang eines wegwerfbaren lokalen Testservers. Alle drei sind einzeln in den Ausnahmelisten eingetragen |
|
|
|
|
@@ -240,6 +240,12 @@ Die Beurteilung jeder Meldung steht in der Tabelle „Einordnung der Befunde“.
|
|
|
|
|
|
|
|
|
|
Der neueste Eintrag steht oben.
|
|
|
|
|
|
|
|
|
|
### 2026-10-09 — Eigene Härtung: Echtheits-Code und schlankere Abbilder
|
|
|
|
|
|
|
|
|
|
Zwei Maßnahmen aus der ersten Prüfung wurden umgesetzt. Erstens verlangt die Entschlüsselung gespeicherter Geheimnisse jetzt die volle Länge des Echtheits-Codes; ein gekürzter Code wird abgewiesen, vorher wurde er noch angenommen (der neue Test war vor der Änderung rot). Zweitens enthalten die fertigen Abbilder keine Entwicklungswerkzeuge und keine Paketverwaltung mehr: Das Server-Abbild wird aus einer eigenen Bauphase mit ausschließlich den Betriebsbausteinen zusammengesetzt, und beide Laufzeit-Abbilder entfernen npm, npx, corepack und yarn des Node-Grundabbilds.
|
|
|
|
|
|
|
|
|
|
**Messung (Trivy, Betriebssystem und Bausteine, nach den Aktualisierungen vom selben Tag):** Server-Abbild vorher 3 kritisch, 45 hoch, 41 mittel, 2 niedrig bei 1,59 GB, nachher 0 kritisch, 6 hoch, 4 mittel, 0 niedrig bei 1,12 GB. Web-Abbild vorher 0 kritisch, 11 hoch, 13 mittel, 1 niedrig, nachher 0 kritisch, 3 hoch, 1 mittel, 0 niedrig bei unveränderten 359 MB. **Beweis, dass nichts kaputtgegangen ist:** Ein Start des Server-Abbilds gegen eine frische, leere Datenbank wendet alle 63 Migrationen an und bringt die API zum Laufen; dazu liefen die Rauchtests am neu gebauten Stack (Zertifikatsmanager, Änderungsliste, Dateien und Übertragungen, Mailversand) fehlerfrei.
|
|
|
|
|
|
|
|
|
|
### 2026-10-09 — Bausteine von Fremdherstellern aktualisiert
|
|
|
|
|
|
|
|
|
|
Alle Bausteine mit bereinigter Fassung innerhalb ihrer bisherigen Versionslinie wurden angehoben: das Webframework Next.js (15.5.19 auf 15.5.27), das Server-Framework (11.2.7, damit multer 2.4.0), der Mailversand (nodemailer 9.1.1), das Netzwerk-Paket undici (7.30.0), adm-zip (0.6.1) und csv-parse (7.0.3). Dazu kommen 15 Überschreibungen für tief eingebundene Bausteine (`pnpm.overrides`, jeweils innerhalb derselben Hauptversion) und die Entfernung der beiden ungenutzten Pakete für Mailvorlagen und die frühere Exchange-Anbindung. In der Desktop-App wurde rustls auf 0.23.45 gehoben. Prisma blieb exakt auf 6.19.3, Next.js auf der Linie 15, NestJS auf 11.
|
|
|
|
|