
🔎 Ajude a encontrar vulnerabilidade Trojan Source no código 👀 . Útil para revisão de código em projeto com vários colaboradores (CI/CD)
A vulnerabilidade Trojan Source permite que um atacante faça código malicioso parecer inocente.
Em geral, o atacante tenta enganar fazendo seu código parecer um comentário (visualmente). É uma ameaça séria porque afeta muitas linguagens. Projetos com múltiplas fontes "não confiáveis" podem ser afetados
Detectar malicioso 🔎
·
Rastrear malicioso 👀
·
Trojan Source ❓
go> Via go install
go install github.com/ariary/TrojanSourceFinder/cmd/tsfinder@latest
Certifique-se de que $GOPATH está no seu $PATH
> A partir do código-fonte
git clone https://github.com/ariary/TrojanSourceFinder
cd TrojanSourceFinder
make before.build
make build.tsfinder
Se o comando make build.tsfinder falhar, tente:
env GOOS=target-OS GOARCH=target-architecture
go build -o tsfinder cmd/main.go
curl> A partir do lançamento
curl -lO -L https://github.com/ariary/TrojanSourceFinder/releases/latest/download/tsfinder && chmod +x tsfinder
> Auxilia a detecção de Trojan source para revisão manual de código ou com pipelines CI/CD (caracteres bidirecionais Unicode)
Para detectar Trojan source em um arquivo ou diretório <caminho>:
tsfinder [caminho]
> Arquivos de código-fonte são geralmente arquivos de texto. Remover binários da varredura pode ajudar a eliminar falsos positivos
tsfinder -t [caminho]
Adicione -v para ver qual arquivo foi ignorado pela varredura.
Trojan Source não é novo e não é o único perigo. Outro é "Homóglifo".(O que é?)
tsfinder ajuda a detectá-los com o comando homoglyph:
tsfinder homoglyph [nome do arquivo] [flags]
Você pode ver se há um irmão (ou seja, palavra com o mesmo "esqueleto") para os homógrafos encontrados em caminho usando a flag --sibling:
tsfinder homoglyph [nome do arquivo] --sibling [caminho]
Funcionalidade em desenvolvimento, dependendo principalmente de outros projetos
> Visualize como o código é realmente interpretado por máquinas/compilador
tsfinder é deliberadamente pouco verboso. Por padrão, ele apenas exibirá se o código Trojan Source foi detectado. Para ter mais verbosidade e visualizar a linha perigosa adicione a flag -v.
Para ver melhor onde os Trojan Sources estavam, você pode ativar a saída colorida com a flag -c (também útil com varredura de diretório):
tsfinder -c -v <diretório>


Como mencionado por @ioah86 aqui, o trojan source também pode ser detectado com um one-liner usando grep.
A grande diferença está no formato de saída e no código de status de saída (tsfinder sai com código de status 0 se nenhum Trojan source for encontrado, 1 caso contrário; o oposto para grep)
Além disso, este one-liner não resolve o problema do homóglifo
| Objetivo | tsfinder | grep one-liner |
|---|
| Escanear todos os arquivos + mostrar linhas | tsfinder -v . | grep -arE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Escanear apenas arquivos legíveis por humanos | tsfinder -t . | grep -IrE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| Sair com código de status 1 se encontrado | padrão | [one-liner] && exit 1 || exit 0 |