
Sobra de supply-chain do T3 Code 61c3794c. O atualizador verifica o SHA256SUMS na mesma origem do arquivo. Sem assinatura. Laboratório em loopback.
O atualizador verifica um arquivo SHA-256 que fica ao lado do download. Roube o host do download e você rouba também o checksum. Não há assinatura nesse caminho. Corrupção acidental ainda falha. Um par trocado da mesma origem é instalado.
Classe: Cadeia de suprimentos
Alcance: Cadeia de suprimentos (quem controla releaseBaseUrl)
T3 Code 61c3794c - Ping
| ID | ainda sem CVE |
| Classe | Cadeia de suprimentos |
| Alcance | Cadeia de suprimentos (host de release comprometido, CDN, ou DNS/TLS nessa origem) |
| CWE | CWE-345 / CWE-494 |
| CVSS | Médio: 6.8 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Produto | T3 Code |
| Afetado | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| Autenticação | nenhuma na vítima depois que o publicador é comprometido; a vítima executa uma instalação ou atualização |
| Licença | GNU Affero GPL v3.0 |
| Lab | publicador em loopback 127.0.0.1:18192; tar simulado para que os bytes do arquivo nunca sejam executados |
Precisa controlar a origem que serve tanto o SHA256SUMS quanto o arquivo compactado (releaseBaseUrl / GitHub Releases para aquela build). Não precisa de uma conta T3 na vítima.
| Privilégio | Método / sink | Recon / integridade / disponibilidade | Comprovado em lab ou inferido |
|---|---|---|---|
| Publicar arquivo compactado + checksum correspondentes de uma mesma origem | ensurePinnedRuntimeInstalled busca ${baseUrl}/SHA256SUMS e depois ${baseUrl}/${fileName}, compara SHA-256 | Integridade (instalação aceita) | Comprovado em lab. checksum-pass=1, witness t3f02s9m4 em ambos os arquivos |
| Acionar auto-atualização / serviço de boot pelo mesmo helper | selfUpdate.ts, bootService.ts passam releaseBaseUrl | Integridade | Código-fonte. O lab chamou o helper diretamente |
| Executar o binário instalado após a extração | tar -xf e depois executar t3 | Integridade / disponibilidade | Inferido. O lab simulou o tar e não executou os bytes |
| Controle negativo: checksum divergente | mesmo helper, zeros no SHA256SUMS | n/a | Comprovado em lab. etapa verifying the t3 release archive checksum |
Permanece fechado neste resíduo
| Eixo | Método / sink | Por que está fechado |
|---|---|---|
| Integridade | Bit-flip acidental em trânsito | Divergência de SHA-256 recusa a extração |
| Integridade | Origem extra não assinada | O lab usou uma única base URL; uma segunda origem nunca é consultada porque não existe |
| Integridade | Este lab executando bytes do atacante | tar simulado; extracted-binary-executed=0 |
signature-check=0 no bloco de download+digest e nos chamadores de auto-atualização / serviço de boot (sem minisign, cosign, GPG ou sigstore).
pinnedRuntime.ts constrói ambas as URLs a partir de cliReleaseDownloadBaseUrl. Os testes no próprio repositório já garantem que o checksum da mesma origem passa e que a divergência falha. Eles não exigem uma assinatura.
Caminhos errados: tratar um checksum como autenticador do publicador.
python3 t3code-release-checksum-same-origin-Abraxas-Labs.py
ou:
cd lab
./run.sh
Publisher HTTP loopback em 127.0.0.1:18192. O ensurePinnedRuntimeInstalled de produção usa Effect fetch contra essa origem. Instalações de par correspondente (extração simulada). Par incompatível para na verificação.
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
Assine o manifesto de checksum (minisign, cosign ou GPG) e incorpore a chave pública no binário. Verifique a assinatura antes de analisar o SHA256SUMS. Fixe a origem da versão a uma referência assinada imutável.
61c3794c32b0eeebfac09add43e403618c65d2d7pinnedRuntime.ts download+digestGNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório em loopback. Sem garantia.
Abraxas Labs [email protected]
Por favor, credite o CVE à Abraxas Labs.