fix(aibox/skills): Batch M 波次2 路径边界收口(S2/S3/S6/S9/S10/S11/S12/S13)
- gitclient: delete 限工作区内 .git 仓库(S2);分支名白名单防选项注入(S3) - camera/screenshot: --filename 拒绝分隔符/绝对路径/父目录引用(S9/S10) - facerec: person_name 白名单(兼容中文)接入 add/remove/get-info(S11) - vision: 图片魔数白名单校验,data URL MIME 按实测类型(S12) - sftp-transfer: listdir 条目名双向过滤防恶意服务端目录逃逸(S6) - test-auto-appimage: exec_name 白名单防 sed 替换注入(S13) 测试 493 passed / 4 failed(既有平台环境项)/ 1 skipped,零回归
This commit is contained in:
1 parent
5dc5ec9af2
commit
9064750f33
8 files changed
+133
-5
No files matched your search
@@ -51,7 +51,14 @@ create_apprun() {
|
||||
local app_dir="$1"
|
||||
local exec_name="$2"
|
||||
local terminal="$3"
|
||||
|
||||
|
||||
# S13(审计 2026-08-20):exec_name 进入 sed 替换串,含 / & 等字符会注入或破坏
|
||||
# 替换表达式(如 "a/x" 使 s///g 错位、"&" 展开为匹配串)。白名单拦截,拒绝即退出。
|
||||
if [[ ! "$exec_name" =~ ^[A-Za-z0-9._+-]+$ ]]; then
|
||||
echo -e "${RED}错误: 可执行文件名含非法字符(仅允许 A-Za-z0-9._+-): $exec_name${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat > "$app_dir/AppRun" << 'EOF'
|
||||
#!/bin/bash
|
||||
HERE="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
Reference in new issue
Block a user