Skip to content

Releases: integrisec-de/passonce

PassOnce 1.0.1

Choose a tag to compare

@smaicloud smaicloud released this 12 Sep 15:38

Sicherheitshärtung und Betreiberhinweise aus einem manuellen Secret-Logging-Audit gegen 1.0.0.

CodeQL meldet 0 Alerts — ein statischer Scanner erkennt aber nicht, dass eine protokollierte URL bei genau diesem Produkt das Sicherheitsversprechen bricht. Deshalb der manuelle Durchgang.

Härtung (Verhaltensänderung)

Der Dienst verweigert jetzt den Start, wenn ALLOW_SERVER_ENCRYPT=true gesetzt ist und BASE_URL fehlt.

Vorher wurde die Herkunft der zurückgegebenen Links aus dem Host-Header der Anfrage gebaut — also vom Aufrufer bestimmt. Sichtbares Scheitern ist hier besser als stillschweigend falsche Links. ./setup.sh --server-encrypt trägt den Wert ohnehin ein; Einrichtungen über setup.sh sind nicht betroffen.

Dokumentation

  • Warnblock zum Server-Encrypt-Modus. Dort erzeugt der Server den Schlüssel und gibt ihn als Teil der URL im Antwort-Body zurück. Genau da verliert ein Betreiber sein Zero-Knowledge, ohne es zu merken — nicht durch einen Angriff, sondern durch gewöhnliche Betriebspraxis: Body-Logging am Reverse-Proxy, APM- und Tracing-Agenten, Terminal-Scrollback, CI-Logs, eine Zeile log.error(body) im aufrufenden Programm.
  • Umgang mit dem API_TOKEN. setup.sh gibt es einmal aufs Terminal aus (Scrollback, tee/script/CI); im Docker-Betrieb ist es über docker inspect und /proc/1/environ lesbar. env_file mit Rechten 600 oder Docker Secrets als engere Alternative.
  • BASE_URL in ENV-Tabelle und .env.example als Pflicht gekennzeichnet.

Nicht betroffen

Der Zero-Knowledge-Weg über die Weboberfläche. Dort entsteht der Schlüssel im Browser, steht ausschließlich im URL-Fragment und erreicht den Server nie. Das Audit hat das gegen den veröffentlichten Stand bestätigt: kein localStorage, kein Beacon, kein location.href, das Fragment wird nach dem Abruf per replaceState aus der Adresszeile entfernt, serverseitig referrer-policy: no-referrer und keine Zugriffslogs.

Lizenz: Apache 2.0

PassOnce 1.0.0

Choose a tag to compare

@smaicloud smaicloud released this 12 Sep 15:26

Zero-Knowledge One-Time-Secret-Sharing, selbst betreibbar.

Die Verschlüsselung (AES-256-GCM) passiert im Browser; der Schlüssel steht nur im URL-Fragment (#…) und erreicht den Server nie. Gespeichert wird ausschließlich Ciphertext, der beim ersten Abruf atomar gelöscht wird.

Enthalten

  • Node-Server ohne npm-Abhängigkeiten (eingebautes node:sqlite), ab Node 22.13
  • Docker-Compose mit Caddy und automatischem HTTPS
  • Optionale Server-Encrypt-API für das eigene, vertrauenswürdige Netz
  • setup.sh für die geführte Einrichtung
  • SBOM im CycloneDX-Format, mit Datei-Hashes

Schnellstart

git clone https://github.com/integrisec-de/passonce.git
cd passonce
./setup.sh

Details in der README, Meldeweg für Schwachstellen in SECURITY.md.

Vor dem Tag geprüft

Vollständig aus Fremdensicht durchgegangen: anonymer Klon und Archiv-Weg, Docker- und Node-Betrieb, Einmal-Link mit und ohne Zusatzpasswort, TTL-Grenzen, Neustart mit erhaltenen Daten. Keine offenen Blocker.

Lizenz: Apache 2.0 — siehe LICENSE und NOTICE.