rpPH4kQocMjkm2Ve/verify-lib
GitHub: rpPH4kQocMjkm2Ve/verify-lib
一个用于在 source 前验证 shell 库文件安全性的编译工具,通过多重检查防范符号链接逃逸、文件替换和目录劫持等攻击。
Stars: 1 | Forks: 0
# verify-lib
[](https://github.com/rpPH4kQocMjkm2Ve/verify-lib/actions/workflows/ci.yml)

在 source 之前验证 shell 库文件。编译后的二进制文件 —— 解决了从 shell 中验证 shell 库的引导问题。
## 安装
### 使用 gitpkg
```
gitpkg install verify-lib
```
### AUR
```
yay -S verify-lib
```
### 手动安装
```
make build
sudo make install
```
## 用法
```
verify-lib /usr/lib/gitpkg/common.sh /usr/lib/gitpkg/
verify-lib /usr/lib/atomic/common.sh /usr/lib/atomic/
verify-lib /usr/lib/foo/bar.sh
```
成功时返回 0 并打印解析后的路径。
失败时返回 1 并将诊断信息输出到 stderr。
在脚本中:
```
_src() { local p; p=$(verify-lib "$1" "$2") && source "$p" || exit 1; }
_src /usr/lib/gitpkg/common.sh /usr/lib/gitpkg/
```
省略时默认前缀为 `/usr/lib/`。
## 检查项
| 检查项 | 威胁 |
|-------|--------|
| `realpath` 解析 | 符号链接逃逸 |
| 路径前缀匹配 | source 预期目录之外的文件 |
| 常规文件测试 | 设备/fifo/socket 替换 |
| `0:0` 所有权 | 非特权文件替换 |
| 无组/其他写入权限 | 未授权修改 |
| 目录链所有权 | 父目录劫持 |
| 世界可写目录上的粘滞位 | `/tmp` 类型的竞态攻击 |
## 依赖
- `gcc`, `make`
## 许可证
AGPL-3.0-or-later
标签:AUR, Bash, Cutter, DevSecOps, Git, Shell, Shell 脚本安全, Web报告查看器, 上游代理, 二进制发布, 子域名枚举, 完整性检查, 库文件验证, 开源工具, 引导程序问题, 提权防护, 文件系统安全, 权限检查, 竞态条件, 符号链接攻击, 系统安全, 编译型工具, 路径遍历防护, 软件识别