
T3 Code 61c3794c residuo di percorso locale. Un client filesystem:read abbinato può aprire file dell'host tramite percorso assoluto o ~/. Le scritture restano nel workspace. Laboratorio loopback.
Si associa un telefono o una seconda macchina a T3 Code affinché possa aprire i file di progetto. Quella stessa autorizzazione può aprire la tua chiave SSH. L'API di lettura file accetta un percorso assoluto o un percorso ~/ e salta la barriera del workspace che le scritture rispettano ancora. Il percorso relativo ../ resta bloccato. Un agente MCP in sola lettura non ottiene questa autorizzazione.
Classe: Percorso residuo
Raggiungibilità: Locale (client associato con filesystem:read; anche un telefono o browser associato se il proprietario ha concesso quello scope)
T3 Code 61c3794c - Ping
| ID | nessuna CVE al momento |
| Classe | Percorso residuo |
| Raggiungibilità | Locale (client associato in possesso di filesystem:read) |
| CWE | CWE-22 / CWE-73 |
| CVSS | Medio: 6.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Prodotto | T3 Code |
| Affetto | 61c3794c32b0eeebfac09add43e403618c65d2d7 (dopo v0.1.6) |
| Auth | sessione associata o con grant standard con filesystem:read |
| Licenza | GNU Affero GPL v3.0 |
| Lab | Vitest su loopback contro WorkspaceFileSystem; nessun host di produzione |
Richiede una credenziale che possieda già filesystem:read. L'associazione predefinita include quello scope, e anche terminal:operate. Le condivisioni guest non raggiungono questa RPC. MCP in sola lettura è solo orchestration:read.
| Privilegio | Metodo / sink | Ricognizione / integrità / disponibilità | Provato in lab o dedotto |
|---|---|---|---|
| Leggere un file host tramite percorso assoluto | WorkspaceFileSystem.readFile / RPC projectsReadFile con relativePath impostato a un percorso assoluto | Ricognizione (file host) | Provato in lab. Witness t3f01w8k2 restituito |
Leggere un file host tramite ~/ | stesso sink con relativePath ~/.lab-secret sotto un HOME di lab | Ricognizione | Provato in lab. Stesso witness |
| Generare un URL di asset firmato per un percorso media assoluto | assetsCreateUrl media-file | Ricognizione | Dedotto dal sorgente. Non è l'oracolo di questo lab |
Controllo negativo: ../ relativo | readFile con un percorso che esce dal workspace | n/d | Provato in lab. WorkspacePathOutsideRootError |
| Controllo negativo: scrittura assoluta | writeFile con lo stesso percorso segreto assoluto | n/d | Provato in lab. rifiutato, segreto invariato |
| Controllo negativo: MCP in sola lettura | mcpClientScopes("read-only") vs projectsReadFile | n/d | Provato in lab. negato |
Resta chiuso su questo residuo
| Asse | Metodo / sink | Perché è chiuso |
|---|---|---|
| Integrità | Scritture nel workspace tramite percorso assoluto | resolveWriteTarget contiene alla root reale e rifiuta .git |
| Ricognizione | Lettura relativa ../ | resolveRelativePathWithinRoot |
| Ricognizione | secretsDir e stateDir/*.sqlite di T3 | isServerInternalPath |
| Ricognizione | HTTP di condivisione guest | I token guest non entrano mai in SessionStore |
| Ricognizione | MCP in sola lettura /mcp | nessun filesystem:read |
| Integrità | RPC loopback non autenticata | EnvironmentAuthPolicy non è unsafe-no-auth |
La documentazione del prodotto (docs/internals/environment-auth.md) descrive filesystem:read come un grant di lettura host. L'interfaccia continua a inviare percorsi relativi al workspace. Il server accetta input che un client legittimo non produce. L'associazione standard include anche una shell.
Ho fissato pingdotgg/t3code 61c3794c. resolveReadTarget espande ~/, applica il realpath a un percorso assoluto e lo restituisce senza alcun isInsideRealRoot. Le scritture eseguono quel controllo. La issue pubblica #316 ha chiuso il cwd non vincolato solo sulle scritture.
Vicoli ciechi: considerare MCP in sola lettura come chiamante di projectsReadFile (non lo è); considerare questo un residuo non autenticato (è un grant associato).
python3 t3code-abspath-host-read-Abraxas-Labs.py
o:
cd lab
./run.sh
Clona pingdotgg/t3code a 61c3794c in lab/src, installa con pnpm, inserisce un witness sotto lab-home/.lab-secret ed esegue Vitest. Solo loopback. Node 26 e 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
Dopo realpath, richiedere che la destinazione sia all'interno di realpath(cwd) come già fa resolveWriteTarget. Chiamare knownWorkspaces.assertContains(input.cwd) in lettura e nei metadati. Smettere di generare URL media-file per percorsi assoluti senza un progetto. Ampliare isServerInternalPath a tutto stateDir.
61c3794c32b0eeebfac09add43e403618c65d2d7WorkspaceFileSystem.resolveReadTargetGNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio su loopback. Nessuna garanzia.
Abraxas Labs [email protected]
Si prega di attribuire la CVE ad Abraxas Labs.