Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
bidi_char_detector — 检查您的文件中是否存在 Unicode BIDI 字符,这些字符可能被滥用于供应链攻击。参见 CVE-2021-42574。 | Kitploit
工具/GitHubGitHub/maweil/bidi_char_detector
静态分析漏洞分析代码分析秘密检测供应链安全错误配置Archived
GitHubmaweil/bidi_char_detector

bidi_char_detector

检查您的文件中是否存在 Unicode BIDI 字符,这些字符可能被滥用于供应链攻击。参见 CVE-2021-42574。

查看仓库
633年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BIDI 字符检测器

此工具用于检查你的文件中是否存在可能被滥用于供应链攻击的 Unicode BIDI 字符,以缓解 CVE-2021-42574。 该工具使用 Rust 编写,并以一个小于 3MB 的、兼容 docker 的小型容器形式分发,以便快速、轻松地使用。

有关该攻击的详细说明,请参阅 GitHub 的博客文章 或 该攻击发表的原始论文。

安装

此软件包主要设计为通过其 docker 容器使用。当然,也可以进行本地安装。 编译至少需要 Rust 1.56.0,因为它使用了 Rust 2021 Edition。 克隆此仓库并运行 cargo install --path . 即可为当前用户安装二进制文件。之后,你就可以调用 bidi_detector 命令了。

用法

通过官方 docker 容器运行该工具可能是开始使用的最简单方式。 要通过 docker 运行它,以下命令可以扫描当前工作目录中的所有文件:

root@kitploit:~
docker run --rm -it -v $(pwd):/data ghcr.io/maweil/bidi_char_detector:latest

根据你的系统,你可能需要稍微调整此命令。例如,如果你使用 podman 且启用了 SELinux,请尝试以下命令:

root@kitploit:~
podman run --rm -it -v $(pwd):/data:Z ghcr.io/maweil/bidi_char_detector:latest

配置

默认情况下,将检查所有文件。如果当前目录中包含二进制文件,命令将会失败,因为它无法解码非 UTF-8 编码的文件。 要根据你的需求调整命令,请在项目根目录中放置一个名为 bidi_config.toml 的文件。 你可以在此仓库中找到相应的示例,示例如下。各选项将在示例下方详细说明:

root@kitploit:~
[general]
includes = [ 
    "src/**/*",
    "**/*.patch",
    "**/*.json",
    "**/Dockerfile",
    "test/*.js"
]
excludes = [
    ".git/*",
    "target/*"
]

[display]
show_details = true

通用设置

此部分包含两个数组(includes 和 excludes),你可以在此指定要扫描(或从扫描中排除)的文件模式。 请确保你的模式匹配的是目录内的文件,而不是目录名称本身,否则你的文件将不会被扫描。 如果你想扫描所有文件,仅排除例如你的 .git 目录,以下配置即可实现:

root@kitploit:~
[general]
includes = [ 
    "**/*"
]
excludes = [
    ".git/*",
]

[display]
show_details = true

如果你想改为显式定义包含源文件的文件夹,以下配置示例将扫描 src 目录中的所有文件(不忽略任何内容):

root@kitploit:~
[general]
includes = [ 
    "src/**/*"
]
excludes = [
]

[display]
show_details = true

显示设置

此部分提供以下设置:

示例: show_details = true,verbose = true

root@kitploit:~
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:4:3
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:7
Found character PDI (Pop Directional Isolate), test/example-commenting-out.js:4:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:22
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:6:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:6:24
Found 6 potentially dangerous Unicode BIDI characters!

示例: show_details = false,verbose = true

root@kitploit:~
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!

示例: show_details = false,verbose = false

root@kitploit:~
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!

致谢

检测该攻击(包括相关 BIDI 字符列表)的所有功劳归于相应论文的原始作者。 如果在他们的工作基础之上进行构建,请引用他们的原始论文。

本仓库中的 test/example-commenting-out.js 文件是其原始仓库中 commenting-out.js 的副本。其许可遵循 原始仓库(MIT 许可证)。 此处仅将其用于测试目的。

root@kitploit:~
@article{boucher_trojansource_2021,
    title = {Trojan {Source}: {Invisible} {Vulnerabilities}},
    author = {Nicholas Boucher and Ross Anderson},
    year = {2021},
    journal = {Preprint},
    eprint = {2111.00169},
    archivePrefix = {arXiv},
    primaryClass = {cs.CR},
    url = {https://arxiv.org/abs/2111.00169}
}
下载工具
设置说明可选默认值引入版本
show_details决定在检测到 BIDI 字符时是否打印其行/位置和类型(见下方示例)否-v0.1.1
ignore_invalid_data是否在检测到二进制/非 UTF-8 文件时打印错误信息是truev0.1.2
verbose即使未发现可疑字符,是否也打印文件名是truev0.1.2