Direkt zum Inhalt
ColliePWA

02/Documentation

Sicherheit: Vor der Ausführung lesen

Was Collie freigibt, Schutzmaßnahmen und die Kopplung eines Geräts als Schreibberechtigung

Collie bietet standardmäßig Shell-Fernzugriff auf Ihre Maschine. Ein einzelner Collie-API-Aufruf sendet beliebige Tastenanschläge direkt an einen aktiven Terminal-Bereich. Jeder mit Netzwerkzugriff auf die URL kann jeden Bereich lesen (Quellcode, Geheimnisse, Umgebungsvariablen, Agentenausgaben) und Befehle unter Ihrem Benutzer ausführen.

Es gibt keine Sandbox und keine Befehls-Positivliste, da das Filtern von Befehlen den Zweck des Werkzeugs zunichtemachen würde. Behandeln Sie die URL wie ein Root-Login.

Risikomodell

Zentrale Sicherheitsgrenzen und Risiken:

  • Es läuft mit Ihren Benutzerberechtigungen. Collie übernimmt Ihre vollständigen Zugriffsrechte, einschließlich ~/.ssh, git push --force, rm -rf und sudo.
  • Die Authentifizierung identifiziert Geräte, keine Personen. Tailscale verifiziert den Hardware-Endpunkt statt der Person, die ihn bedient. Es gibt keine Passwörter oder Benutzersitzungen; ein entsperrtes oder gestohlenes Smartphone bietet eine offene Shell. Sie können dies mindern, indem Sie das Gerät koppeln (unten). Die integrierte Inaktivitätssperre blendet lediglich einen unbeaufsichtigten Bildschirm aus und bildet keine echte Sicherheitsgrenze (ADR 0007).
  • Alle lokalen Systembenutzer können den Port erreichen. Standardmäßige Terminal-Multiplexer-Sockets (tmux, zellij, herdr) nutzen Dateisystemberechtigungen, um den Zugriff für andere lokale Benutzer einzuschränken. Collie lauscht auf einem lokalen TCP-Port und ist dadurch für jede lokale UID erreichbar. Koppeln oder die gerätebasierte Schranke schränkt den Schreibzugriff ein, Leseoperationen bleiben jedoch für alle lokalen Benutzer zugänglich. Dies begrenzt Ausführungsrisiken, verhindert aber keine Dateneinsicht (ARCHITECTURE.md §6).
  • Eine einzelne Instanz legt alle Sitzungen offen. Standardmäßig bedient ein Collie-Prozess jede Multiplexer-Sitzung, die unter dem Konfigurationsstammverzeichnis von Herdr gefunden wird, einschließlich Sandbox-Sitzungen (Mehrere Sitzungen).
  • Schreibvorgänge werden in <state-dir>/audit.log aufgezeichnet, standardmäßig ~/.local/state/collie/audit.log, sofern es nicht durch COLLIE_STATE_DIR verschoben wird. Der Server protokolliert alle eingehenden Tastenanschläge, Antworten, Datei-Uploads sowie Lebenszyklusereignisse von Bereichen und Tabs. Beachten Sie, dass ein Prüfprotokoll nachträgliche Transparenz statt Zugriffskontrolle bietet (ARCHITECTURE.md §6).
  • Standardmäßige Schutzmechanismen. Collie bindet ausschließlich an Loopback-Schnittstellen, leitet Datenverkehr ausschließlich über tailscale serve oder einen gleichwertigen Reverse-Proxy weiter und wendet strenge CSP-Regeln, Same-Origin-Prüfungen sowie Host-Header-Validierungen an. Bereichsausgaben werden als React-Textknoten statt als innerHTML gerendert. Verwenden Sie niemals tailscale funnel und geben Sie keinen ungeschützten Port frei. Um bestimmte Hardware zu autorisieren, verwenden Sie direkt Koppeln oder, falls Ihr Proxy Geräte-IDs einfügt, die beiden unten stehenden COLLIE_DEVICE_*-Variablen.
VariableFunktion
COLLIE_ALLOW_NON_LOOPBACK_BIND=1Deaktiviert die ausschließliche Loopback-Bindung; ist die Option nicht gesetzt, verweigert die Bridge das Binden an 0.0.0.0.
COLLIE_ALLOW_ANY_HOST=1Deaktiviert die Host-Header-Validierung, die ansonsten standardmäßig aktiv ist und Anfragen bei Fehlern abweist.
COLLIE_TRUSTED_USERWeist eine Anfrage ab, deren Tailscale-User-Login-Header fehlt oder nicht übereinstimmt.
COLLIE_TRUSTED_USER_OPTIONAL=1Erlaubt einen fehlenden Tailscale-User-Login-Header (getaggte Knoten senden diesen nie).
COLLIE_DEVICE_HEADERName des Headers, über den Ihr Proxy eine Geräte-ID einfügt.
COLLIE_DEVICE_ALLOWLISTKommagetrennte Geräte-IDs mit Schreibberechtigung; alle anderen Geräte bleiben schreibgeschützt (docs/deployment.md).
🚫 Verwenden Sie niemals tailscale funnel mit Collie. Funnel leitet Datenverkehr in das öffentliche Internet weiter, wohingegen tailscale serve den Zugriff auf Ihr privates Tailnet beschränkt. Es gibt keinen unterstützten Anwendungsfall für den Betrieb von Collie über Funnel.

Schränken Sie den Zugriff mit Tailscale-ACLs und COLLIE_TRUSTED_USER weiter ein. Bereitstellung ohne Mängelgewähr.

Was Ihre Maschine verlässt

Nichts, standardmäßig und laut Richtlinie. Collie sendet keine Installationsereignisse, keine Nutzungsstatistiken, keine Absturzberichte und keine Analysedaten. Es gibt kein Flag, das diese aktiviert.

Der einzige unaufgeforderte ausgehende Aufruf ist die Update-Prüfung: ein anonymer HTTPS-Aufruf GET an die öffentliche Tags-API von GitHub (bridge/update.ts), der Ihre Version mit dem neuesten Tag vergleicht. Er überträgt keine Daten über Sie oder Ihre Maschine, sondern nur den statischen User-Agent collie-update-check.

Sollte jemals eine Datenerfassung hinzugefügt werden, ist ein explizites Opt-in das Maximum: standardmäßig deaktiviert, als sichtbare Frage formuliert, niemals über ein Flag oder einen Standardwert vorgegeben. Die Aufhebung dieses Versprechens wäre eine inkompatible Änderung (ADR 0034).

Ein Gerät koppeln: der Schreibberechtigungsnachweis

bin/collie pair          # on the host — prints an 8-character code and a QR code, good for 10 minutes

Öffnen Sie Collie auf dem Telefon, gehen Sie zu EinstellungenGekoppelte Geräte und geben Sie den Code zusammen mit einer Gerätebezeichnung ein, oder scannen Sie den vom Befehl ausgegebenen QR-Code, um direkt diesen Bildschirm mit bereits ausgefülltem Code zu öffnen. Das Telefon speichert das zurückgegebene Token. Collie behält nur den Hash, und das Token wird nur einmal angezeigt. Sie müssen den Prozess nicht neu starten; der laufende Daemon wendet Kopplungen und Widerrufe bei der nächsten Anfrage an.

Die beiden Geräteschranken beantworten unterschiedliche Fragen, und Sie können eine davon, beide oder keine verwenden:

fragtvertrautwiderrufen durch
COLLIE_DEVICE_HEADERsteht dieses Gerät auf der Liste des Betreibers?Ihrem Proxy, um einen bereinigten Namen einzufügenBearbeiten von COLLIE_DEVICE_ALLOWLIST und anschließenden Neustart
Koppelnbesitzt dieses Gerät einen von mir ausgestellten Berechtigungsnachweis?nichts im Netzwerkcollie devices revoke <label> – live

Das Koppeln erfordert keine zusätzliche Infrastruktur. Es eignet sich für ein direktes tailscale serve-Setup, bei dem kein Proxy zum Einfügen von Headern vorhanden ist.

Beide Optionen beschränken ausschließlich den Schreibzugriff. Leseanfragen bleiben für alle Anfragen offen, die die Same-Origin-Prüfung bestehen.

bin/collie devices list             # what holds a credential, and when each was last seen
bin/collie devices revoke old-phone # effective immediately, no restart

Die Schreibsperre ist nur aktiv, solange mindestens ein Gerät gekoppelt ist. Es ist kein Gerät gekoppelt, bis Sie collie pair ausführen; bis dahin funktionieren Lese- und Schreibvorgänge wie zuvor. Koppeln Sie zuerst Ihr aktuelles Smartphone. Das Entfernen des letzten Geräts deaktiviert die Sperre wieder, um ein Aussperren zu verhindern.

Fünf fehlgeschlagene Code-Eingaben machen den Code ungültig, sodass collie pair erneut ausgeführt werden muss.

Stellen Sie auf einem Host mit mehreren Instanzen den Befehlen COLLIE_INSTANCE=<name> voran und öffnen Sie diese spezifische Instanz-URL auf dem Smartphone (Mehrere Collie-Instanzen auf einem Host).

Diese Seite auf GitHub bearbeiten