|
|
|
@@ -11,12 +11,12 @@ Das Protokoll enthält bewusst keine Passwörter, keine Zugangsdaten und keine A
|
|
|
|
|
## Auf einen Blick
|
|
|
|
|
|
|
|
|
|
- **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:** In den Bausteinen anderer Hersteller, die Tessera im Betrieb verwendet, sind 151 bekannte Schwachstellen verzeichnet, davon 5 kritische und 73 hohe. Für die allermeisten gibt es eine bereinigte Fassung innerhalb der aktuell verwendeten Versionslinie. Für zwei Bausteine (xlsx und node-forge) gibt es noch keine bereinigte Fassung; sie sind unter „Einordnung der Befunde“ eingeordnet.
|
|
|
|
|
- **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.
|
|
|
|
|
- **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 Bausteine mit bereinigter Fassung werden aktualisiert, und die fertigen Abbilder sollen keine Entwicklungswerkzeuge mehr enthalten. Der Stand jedes einzelnen Punkts steht in der Tabelle „Einordnung der Befunde“.
|
|
|
|
|
- **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“.
|
|
|
|
|
|
|
|
|
|
## So lesen Sie dieses Protokoll
|
|
|
|
|
|
|
|
|
@@ -183,20 +183,21 @@ Die Tabelle beurteilt jeden Befund der ersten vollständigen Prüfung. Sie wird
|
|
|
|
|
|
|
|
|
|
| Befund | Wo | Bewertung | Stand | Begründung |
|
|
|
|
|
|--------|----|-----------|-------|------------|
|
|
|
|
|
| Webframework Next.js, Fassung 15.5.19 | Weboberfläche | Kritisch (2 kritisch, 3 hoch, 7 mittel) | offen | Eine bereinigte Fassung derselben Hauptversion (15.5.27) liegt vor. Die Weboberfläche ist über den vorgeschalteten Proxy erreichbar, daher hat dieser Punkt die höchste Dringlichkeit. Er wird innerhalb der Hauptversion 15 behoben, ohne den Sprung auf eine neue Hauptversion |
|
|
|
|
|
| Express-Baustein proxy-addr 2.0.7 (Absenderadresse hinter einem vorgeschalteten Server) | Server | Kritisch (1) | offen | Der Fehler wirkt nur, wenn der Server den Adressangaben eines vorgeschalteten Servers vertraut. Tessera schaltet diese Einstellung nicht ein (im Quelltext geprüft), das tatsächliche Risiko ist deshalb gering. Eine bereinigte Fassung (2.0.8) lässt sich erzwingen |
|
|
|
|
|
| Mail-Vorlagenpaket handlebars 4.7.9 | Server (ungenutztes Paket) | Kritisch (2 kritisch, 1 mittel) | offen | Das Paket gehört zu einem Mail-Baustein, den kein Modul mehr benutzt. Ein Angriff bräuchte eine eingeschleuste Vorlage; Vorlagen pflegt nur ein Administrator. Der ungenutzte Baustein soll entfernt werden |
|
|
|
|
|
| Mailversand nodemailer 9.0.x (und 8.0.11 in einem Nebenpaket) | Server | Hoch (3 hoch, 5 mittel) | offen | Fassung 9.1.x behebt die Meldungen. Mailadressen kommen von Administratoren und Benutzern, daher wird der Baustein aktualisiert |
|
|
|
|
|
| Netzwerkbaustein undici 7.28.0 und 6.27.0 | Server | Hoch (4 hoch, 13 mittel, 4 niedrig) | offen | Fassung 7.29.1 oder neuer derselben Hauptversion behebt die Meldungen. Die abgerufenen Adressen laufen zusätzlich durch den Adressschutz; das Anheben ist trotzdem sinnvoll |
|
|
|
|
|
| Datei-Upload multer 2.1.1 | Server | Hoch (3 hoch, 1 mittel, 1 niedrig) | offen | Fassung 2.4.0 gehört zum nächsten Nebenstand des Server-Frameworks. Hochladen können nur angemeldete Benutzer mit Modulfreigabe |
|
|
|
|
|
| ZIP-Baustein adm-zip 0.6.0 | Server (Zertifikatsmanager) | Hoch (4 hoch, 3 mittel) | offen | Fassung 0.6.1 behebt die Meldungen mit Korrektur. Tessera begrenzt das Entpacken zusätzlich mit eigenem Code |
|
|
|
|
|
| Webframework Next.js, Fassung 15.5.19 | Weboberfläche | Kritisch (2 kritisch, 3 hoch, 7 mittel) | behoben (9. Oktober 2026) | Auf die bereinigte Fassung 15.5.27 derselben Hauptversion angehoben, ohne den Sprung auf eine neue Hauptversion. Die Weboberfläche ist über den vorgeschalteten Proxy erreichbar, daher hatte dieser Punkt die höchste Dringlichkeit |
|
|
|
|
|
| Express-Baustein proxy-addr 2.0.7 (Absenderadresse hinter einem vorgeschalteten Server) | Server | Kritisch (1) | behoben (9. Oktober 2026) | Der Fehler wirkt nur, wenn der Server den Adressangaben eines vorgeschalteten Servers vertraut. Tessera schaltet diese Einstellung nicht ein (im Quelltext geprüft), das tatsächliche Risiko war deshalb gering. Die bereinigte Fassung 2.0.8 ist über eine Überschreibung in der Paketverwaltung erzwungen |
|
|
|
|
|
| Mail-Vorlagenpaket handlebars 4.7.9 | Server (ungenutztes Paket) | Kritisch (2 kritisch, 1 mittel) | behoben (9. Oktober 2026) | Das Paket gehörte zu einem Mail-Baustein, den kein Modul mehr benutzte. Der Baustein ist samt seiner Unterpakete aus dem Projekt entfernt; versendet wird ausschließlich über nodemailer. Mit ihm entfielen auch der zweite ungenutzte Baustein für die Anbindung von Exchange (die Anbindung läuft über eigene Abfragen mit NTLM-Anmeldung) und rund 230 mitgezogene Pakete |
|
|
|
|
|
| Mailversand nodemailer 9.1.1 (vorher 9.0.x und 8.0.11 in einem Nebenpaket) | Server | Hoch (2 hoch, 3 mittel nach der Aktualisierung; vorher 3 hoch, 5 mittel) | offen | Auf die Fassung 9.1.1 angehoben (behoben am 9. Oktober 2026); das ältere Nebenpaket 8.0.11 ist mit dem ungenutzten Mail-Baustein entfernt, und die Fassung des Postfach-Bausteins ist per Überschreibung auf 9.1.1 gehoben. Die verbleibenden Meldungen betreffen das Lesen präparierter Mailanschriften (Überlastung) und eine Eigenheit des Zwischenspeichers bei der Namensauflösung; sie werden erst in der nächsten Hauptversion 10 behoben. Ein Wechsel dorthin gehört nicht zu einer Aktualisierung innerhalb der Hauptversion und ist hier bewusst nicht vorgenommen. Mailadressen und Anschriften kommen von Administratoren und angemeldeten Benutzern; die Hauptversion 10 wird als eigener Schritt geprüft |
|
|
|
|
|
| Netzwerkbaustein undici 7.28.0 und 6.27.0 | Server | Hoch (4 hoch, 13 mittel, 4 niedrig) | behoben (9. Oktober 2026) | Auf Fassung 7.30.0 angehoben und exakt festgelegt (nicht als Bereich), weil mehrere Kopien des Bausteins zu schwer zu findenden Fehlern führen; die Fassung 6.27.0 verschwand mit dem ungenutzten Mail-Baustein. Alle Kopien im Projekt sind jetzt 7.30.0 |
|
|
|
|
|
| Datei-Upload multer 2.1.1 | Server | Hoch (3 hoch, 1 mittel, 1 niedrig) | behoben (9. Oktober 2026) | Mit dem Server-Framework auf 11.2.7 gehoben; es bringt multer 2.4.0 mit. Hochladen können nur angemeldete Benutzer mit Modulfreigabe |
|
|
|
|
|
| ZIP-Baustein adm-zip 0.6.0 | Server (Zertifikatsmanager) | Hoch (4 hoch, 3 mittel) | behoben (9. Oktober 2026) | Auf Fassung 0.6.1 angehoben, die die Meldungen mit Korrektur behebt. Tessera begrenzt das Entpacken zusätzlich mit eigenem Code |
|
|
|
|
|
| Hinweis zu adm-zip ohne Korrektur (Verknüpfungen in ZIP-Dateien) | Server (Zertifikatsmanager) | Mittel | bewusst akzeptiert | Nicht betroffen: Tessera liest ZIP-Einträge nur im Arbeitsspeicher, mit eigenen Grenzen für Größe, Verhältnis und Anzahl, und schreibt nie Einträge auf die Platte. Die angezeigte Gefahr entsteht erst beim Schreiben von Verknüpfungen |
|
|
|
|
|
| Übrige Bausteine mit bereinigter Fassung innerhalb der Version: axios, @xmldom/xmldom, brace-expansion, ip-address, js-yaml, liquidjs, postcss, sharp, svgo, nanoid, browserslist, source-map-js, qs, uuid, moment, csv-parse, deepmerge-ts, linkify-it, underscore und weitere | Server und Weboberfläche, überwiegend mittelbar eingebunden | Hoch bis Mittel | offen | Es sind überwiegend Meldungen, bei denen eine präparierte Eingabe den Dienst überlasten kann. Für alle gibt es eine Korrektur in derselben Hauptversion; ein Teil davon steckt in ungenutzten Paketen, die entfernt werden |
|
|
|
|
|
| Übrige Bausteine mit bereinigter Fassung innerhalb der Version: brace-expansion, ip-address, js-yaml, postcss, nanoid, browserslist, source-map-js, qs, fast-uri, underscore, baseline-browser-mapping, csv-parse und weitere (axios, @xmldom/xmldom, liquidjs, svgo, uuid, moment, linkify-it entfielen mit den ungenutzten Bausteinen) | Server und Weboberfläche, überwiegend mittelbar eingebunden | Hoch bis Mittel | behoben (9. Oktober 2026) | Es waren überwiegend Meldungen, bei denen eine präparierte Eingabe den Dienst überlasten kann. Die tief eingebundenen Bausteine sind über Überschreibungen (`pnpm.overrides` im Wurzel-`package.json`) auf die bereinigte Fassung derselben Hauptversion gehoben; csv-parse wurde direkt angehoben. Keine Überschreibung springt über eine Hauptversion |
|
|
|
|
|
| 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 |
|
|
|
|
|
| Desktop-App: Baustein rustls 0.23.41 (Verschlüsselung der Verbindung) | Desktop-App | Mittel | offen | Eine bereinigte Fassung (0.23.45) liegt in derselben Versionslinie vor und lässt sich ohne Umbau einspielen |
|
|
|
|
|
| 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 |
|
|
|
|
|
| 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 |
|
|
|
|
@@ -239,6 +240,14 @@ Die Beurteilung jeder Meldung steht in der Tabelle „Einordnung der Befunde“.
|
|
|
|
|
|
|
|
|
|
Der neueste Eintrag steht oben.
|
|
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
|
|
**Messung `pnpm audit --prod` (Bausteine im Betrieb):** vorher 151 Schwachstellen (5 kritisch, 73 hoch, 68 mittel, 5 niedrig), nachher 12 (0 kritisch, 9 hoch, 3 mittel, 0 niedrig). **Messung `pnpm audit` (alle Bausteine einschließlich Entwicklungswerkzeuge):** vorher 171 (7 kritisch, 85 hoch, 74 mittel, 5 niedrig), nachher 16 (2 kritisch, 9 hoch, 5 mittel, 0 niedrig); die 2 kritischen und 2 der mittleren gehören zu den Testwerkzeugen (tinypool und vitest 3), die nur im Entwicklungsbetrieb laufen und deren Korrektur in einer neuen Hauptversion liegt. Das Lockfile gewann keinen einzigen neuen Paketnamen; 232 Namen entfielen. Alle Testläufe, Typprüfung, Codeprüfung, der neu gebaute lokale Stack und die Rauchtests (einschließlich eines Mailversands an das lokale Postfach) liefen fehlerfrei.
|
|
|
|
|
|
|
|
|
|
**Offen:** xlsx und node-forge (keine bereinigte Fassung), nodemailer, sharp und deepmerge-ts (Korrektur erst in einer neuen Hauptversion) sowie glib in der Desktop-App. Der Stand jeder Zeile steht in „Einordnung der Befunde“.
|
|
|
|
|
|
|
|
|
|
### 2026-10-09 — Erste Prüfung von außen gegen alpha (OWASP ZAP)
|
|
|
|
|
|
|
|
|
|
Passiver Erstlauf gegen alpha in der Fassung v1.10.1-80-gd15a470 (Beta), direkt gegen die Anwendung und ohne den vorgeschalteten Proxy, weil die öffentliche Adresse vom Prüfrechner nicht erreichbar war. Ergebnis: 0 hoch, 2 mittel, 6 niedrig, 3 Informationen; alle Meldungen betreffen fehlende Schutz-Kopfzeilen der Weboberfläche oder beschreiben Zwischenspeicherung. Vor dem Lauf bewies ein Probelauf gegen eine Testseite, dass das Skript keine Formulare absendet. Beurteilung: siehe „Prüfung von außen gegen alpha“ und „Einordnung der Befunde“. **Offen:** der Lauf über die öffentliche Adresse; dort werden auch die Kopfzeilen und die Verschlüsselung des Proxys sichtbar.
|
|
|
|
|