特洛伊木马源漏洞允许攻击者让恶意代码看起来无害。
通常,攻击者通过将代码伪装成注释(视觉上)来诱骗受害者。这是一个严重的威胁,因为它影响许多语言。包含多个"不可信"来源的项目可能受到影响。
检测恶意 🔎
·
追踪恶意 👀
·
特洛伊木马源 ❓
go> 通过 go install
go install github.com/ariary/TrojanSourceFinder/cmd/tsfinder@latest
确保 $GOPATH 在 $PATH 中
> 从源码编译
git clone https://github.com/ariary/TrojanSourceFinder
cd TrojanSourceFinder
make before.build
make build.tsfinder
如果命令 make build.tsfinder 失败,请尝试:
env GOOS=目标操作系统 GOARCH=目标架构
go build -o tsfinder cmd/main.go
curl> 从发行版下载
curl -lO -L https://github.com/ariary/TrojanSourceFinder/releases/latest/download/tsfinder && chmod +x tsfinder
> 帮助检测特洛伊木马源,用于手动代码审查或 CI/CD 流水线(Unicode 双向字符)
检测文件或目录 <path> 中的特洛伊木马源:
tsfinder [path]
> 源代码文件通常是文本文件。在扫描中排除二进制文件有助于减少误报
tsfinder -t [path]
添加 -v 参数可查看扫描跳过了哪些文件。
特洛伊木马源并非新问题,也不是唯一的危险。另一个危险是*"同形字"。(这是什么?*)
tsfinder 使用 homoglyph 命令帮助检测它们:
tsfinder homoglyph [filename] [flags]
你可以使用 --sibling 标志查看在 path 中找到的同形字是否存在"孪生"(即具有相同"骨架"的单词):
tsfinder homoglyph [filename] --sibling [path]
该功能正在开发中,主要依赖其他项目
> 可视化代码如何被机器/编译器真正解释
tsfinder 故意不提供过多冗余信息。默认情况下,它只会在检测到特洛伊木马源时输出。要获得更多详细信息并可视化危险行,请添加标志 -v。
为了更好地查看特洛伊木马源的位置,你可以使用 -c 标志启用彩色输出(也适用于目录扫描):
tsfinder -c -v <目录>


正如 @ioah86 在此处提到的,特洛伊木马源也可以使用 grep 的一行命令检测。
主要区别在于输出格式和退出状态码(tsfinder 在未发现特洛伊木马源时退出状态码为 0,否则为 1;grep 则相反)
此外,这个一行命令无法解决同形字问题
| 目标 | tsfinder | grep 一行命令 |
|---|
| 扫描所有文件 + 显示行 | tsfinder -v . | grep -arE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| 仅扫描人类可读文件 | tsfinder -t . | grep -IrE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| 找到时以状态码 1 退出 | 默认 | [一行命令] && exit 1 || exit 0 |