
T3 Code 61c3794c lokaler Pfad-Rest. Ein gekoppelter filesystem:read-Client kann Host-Dateien über einen absoluten Pfad oder einen ~/-Pfad öffnen. Schreibvorgänge bleiben im Workspace. Loopback-Lab.
Du koppelst ein Telefon oder eine zweite Maschine an T3 Code, damit es Projektdateien öffnen kann. Dieselbe Berechtigung kann deinen SSH-Schlüssel öffnen. Die Datei-Lese-API akzeptiert einen absoluten Pfad oder einen ~/-Pfad und umgeht die Workspace-Begrenzung, die Schreibvorgänge weiterhin einhalten. Relative ../ bleiben blockiert. Ein schreibgeschützter MCP-Agent erhält diese Berechtigung nicht.
Klasse: Pfad-Überbleibsel
Reichweite: Lokal (gekoppeltes filesystem:read; auch ein gekoppeltes Telefon oder ein Browser, wenn der Eigentümer diesen Scope gewährt hat)
T3 Code 61c3794c - Ping
| ID | noch keine CVE |
| Klasse | Pfad-Überbleibsel |
| Reichweite | Lokal (gekoppelter Client mit filesystem:read) |
| CWE | CWE-22 / CWE-73 |
| CVSS | Mittel: 6.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Produkt | T3 Code |
| Betroffen | 61c3794c32b0eeebfac09add43e403618c65d2d7 (nach v0.1.6) |
| Auth | gekoppelte oder Standard-Grant-Sitzung mit filesystem:read |
| Lizenz | GNU Affero GPL v3.0 |
| Labor | Loopback-Vitest gegen WorkspaceFileSystem; keine Produktionshosts |
Benötigt ein Credential, das bereits filesystem:read besitzt. Das Standard-Pairing umfasst diesen Scope sowie terminal:operate. Gastfreigaben erreichen diesen RPC nicht. MCP im Nur-Lese-Modus ist ausschließlich orchestration:read.
| Privileg | Methode / Sink | Recon / Integrität / Verfügbarkeit | Im Labor bewiesen oder abgeleitet |
|---|---|---|---|
| Lesen einer Host-Datei über einen absoluten Pfad | WorkspaceFileSystem.readFile / RPC projectsReadFile mit relativePath auf einen absoluten Pfad gesetzt | Recon (Host-Datei) | Im Labor bewiesen. Witness t3f01w8k2 zurückgegeben |
Lesen einer Host-Datei über ~/ | gleicher Sink mit relativePath ~/.lab-secret unter einem Labor-HOME | Recon | Im Labor bewiesen. Gleicher Witness |
| Erzeugen einer signierten Asset-URL für einen absoluten Medienpfad | assetsCreateUrl media-file | Recon | Aus dem Quellcode abgeleitet. Nicht das Orakel dieses Labors |
Negativkontrolle: relatives ../ | readFile mit einem Pfad, der aus dem Workspace herausläuft | n/a | Im Labor bewiesen. WorkspacePathOutsideRootError |
| Negativkontrolle: absolutes Schreiben | writeFile mit demselben absoluten geheimen Pfad | n/a | Im Labor bewiesen. verweigert, Secret unverändert |
| Negativkontrolle: MCP im Nur-Lese-Modus | mcpClientScopes("read-only") vs. projectsReadFile | n/a | Im Labor bewiesen. verweigert |
Bleibt bei diesem Überbleibsel geschlossen
| Achse | Methode / Sink | Warum geschlossen |
|---|---|---|
| Integrität | Workspace-Schreibvorgänge über absoluten Pfad | resolveWriteTarget beschränkt auf das reale Root und verweigert .git |
| Recon | Relatives ../-Lesen | resolveRelativePathWithinRoot |
| Recon | T3 secretsDir und stateDir/*.sqlite | isServerInternalPath |
| Recon | Gastfreigabe-HTTP | Gast-Tokens gelangen nie in den SessionStore |
| Recon | MCP im Nur-Lese-Modus /mcp | kein filesystem:read |
| Integrität | Nicht authentifizierter Loopback-RPC | EnvironmentAuthPolicy ist nicht unsafe-no-auth |
Die Produktdokumentation (docs/internals/environment-auth.md) beschreibt filesystem:read als Host-Lese-Berechtigung. Die UI sendet weiterhin workspace-relative Pfade. Der Server akzeptiert Eingaben, die ein legitimer Client nicht erzeugt. Das Standard-Pairing umfasst außerdem eine Shell.
Ich habe pingdotgg/t3code 61c3794c gepinnt. resolveReadTarget expandiert ~/, löst einen absoluten Pfad per realpath auf und gibt ihn ohne isInsideRealRoot zurück. Schreibvorgänge führen diese Prüfung durch. Das öffentliche Issue #316 hat ungezügeltes cwd nur bei Schreibvorgängen geschlossen.
Irrwege: MCP im Nur-Lese-Modus als Aufrufer von projectsReadFile zu behandeln (ist es nicht); dies als nicht authentifiziertes Überbleibsel zu behandeln (es ist eine gekoppelte Berechtigung).
python3 t3code-abspath-host-read-Abraxas-Labs.py
oder:
cd lab
./run.sh
Klont pingdotgg/t3code bei 61c3794c nach lab/src, installiert mit pnpm, platziert einen Zeugen unter lab-home/.lab-secret und führt Vitest aus. Nur Loopback. Node 26 und pnpm 12.
IOC abs-read=1
IOC home-read=1
IOC rel-escape=0
IOC write-abs=refused
IOC mcp-readonly-filesystem=denied
IOC secret-unchanged=1
SUCCESS T3-F01-ABSPATH t3f01w8k2
Nach realpath den Zielpfad innerhalb von realpath(cwd) verlangen, so wie es resolveWriteTarget bereits tut. knownWorkspaces.assertContains(input.cwd) beim Lesen und bei Metadaten aufrufen. Aufhören, media-file-URLs für absolute Pfade ohne ein Projekt zu erzeugen. isServerInternalPath auf das gesamte stateDir ausweiten.
61c3794c32b0eeebfac09add43e403618c65d2d7WorkspaceFileSystem.resolveReadTargetGNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.
Abraxas Labs [email protected]
Bitte die CVE Abraxas Labs zuschreiben.