Restos de la cadena de suministro de T3 Code 61c3794c. El actualizador verifica SHA256SUMS desde el mismo origen que el archivo. Sin firma. Laboratorio en loopback.
El actualizador verifica un archivo SHA-256 que se encuentra junto a la descarga. Roba el host de descarga y también robas el checksum. No hay firma en esa ruta. La corrupción accidental sigue fallando. Un par intercambiado del mismo origen se instala.
Clase: Cadena de suministro
Alcance: Cadena de suministro (quien controle releaseBaseUrl)
T3 Code 61c3794c - Ping
| ID | aún sin CVE |
| Clase | Cadena de suministro |
| Alcance | Cadena de suministro (host de release comprometido, CDN, o DNS/TLS en ese origen) |
| CWE | CWE-345 / CWE-494 |
| CVSS | Medio: 6.8 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Producto | T3 Code |
| Afectado | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| Autenticación | ninguna en la víctima una vez que el publicador está comprometido; la víctima ejecuta una instalación o actualización |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | publicador en loopback 127.0.0.1:18192; tar simulado para que los bytes del archivo nunca se ejecuten |
Requiere control del origen que sirve tanto SHA256SUMS como el archivo (releaseBaseUrl / GitHub Releases para esa compilación). No necesita una cuenta de T3 en la víctima.
| Privilegio | Método / sink | Reconocimiento / integridad / disponibilidad | Probado en laboratorio o inferido |
|---|---|---|---|
| Publicar archivo + checksum coincidentes desde un mismo origen | ensurePinnedRuntimeInstalled obtiene ${baseUrl}/SHA256SUMS y luego ${baseUrl}/${fileName}, comparación SHA-256 | Integridad (instalación aceptada) | Probado en laboratorio. checksum-pass=1, testigo t3f02s9m4 en ambos archivos |
| Impulsar la autoactualización / servicio de arranque a través del mismo helper | selfUpdate.ts, bootService.ts pasan releaseBaseUrl | Integridad | Código fuente. El laboratorio llamó al helper directamente |
| Ejecutar el binario instalado tras la extracción | tar -xf y luego ejecutar t3 | Integridad / disponibilidad | Inferido. El laboratorio simuló tar y no ejecutó los bytes |
| Control negativo: checksum no coincidente | mismo helper, ceros en SHA256SUMS | n/a | Probado en laboratorio. paso verifying the t3 release archive checksum |
Permanece cerrado en este remanente
| Eje | Método / sink | Por qué está cerrado |
|---|---|---|
| Integridad | Bit-flip accidental en tránsito | La falta de coincidencia SHA-256 rechaza la extracción |
| Integridad | Origen extra sin firma | El laboratorio usó una sola URL base; nunca se consulta un segundo origen porque no existe |
| Integridad | Que este laboratorio ejecute bytes del atacante | tar simulado; extracted-binary-executed=0 |
signature-check=0 en el bloque de descarga+digest y en los llamadores de autoactualización / servicio de arranque (sin minisign, cosign, GPG ni sigstore).
pinnedRuntime.ts construye ambas URL a partir de cliReleaseDownloadBaseUrl. Las pruebas en el árbol ya fijan que el checksum del mismo origen pasa y que la falta de coincidencia falla. No requieren una firma.
Falsos caminos: tratar un checksum como autenticador del publicador.
python3 t3code-release-checksum-same-origin-Abraxas-Labs.py
o:
cd lab
./run.sh
Publicador HTTP de loopback en 127.0.0.1:18192. El ensurePinnedRuntimeInstalled de producción usa Effect fetch contra ese origen. Las instalaciones de pares coincidentes (extracción simulada). El par no coincidente se detiene en la verificación.
IOC loopback-bound=127.0.0.1:18192
IOC same-origin=1
IOC checksum-pass=1
IOC checksum-fail=1
IOC signature-check=0
IOC tar-mocked=1
IOC extracted-binary-executed=0
SUCCESS T3-F02-CHECKSUM t3f02s9m4
Firma el manifiesto de checksums (minisign, cosign o GPG) e incrusta la clave pública en el binario. Verifica la firma antes de analizar SHA256SUMS. Fija el origen de la versión a una referencia firmada e inmutable.
61c3794c32b0eeebfac09add43e403618c65d2d7pinnedRuntime.ts descarga+digestGNU Affero GPL v3.0. Consulta LICENSE. Solo laboratorio de loopback. Sin garantía.
Abraxas Labs [email protected]
Por favor, atribuye el CVE a Abraxas Labs.