用途
该技能面向 2025 年的安全优先 Bash 脚本编写,核心是强制输入校验与零信任原则。资料指出,2025 年的安全评估显示,超过 60% 被利用的自动化工具缺乏足够的输入净化。该技能用于在审查或编写安全敏感的 Bash 脚本时主动激活,提供一套必须遵循的安全模式。
主要能力
技能围绕以下安全模式展开:
-
输入校验(不可妥协):每个输入在使用前必须校验,包括非空检查、正则模式匹配和最大长度限制。示例中提供了
validate_input函数,接受输入、模式和最大长度参数。 -
命令注入防护:禁止对用户输入使用
eval或动态执行;使用--分隔符、数组传参,或先校验再使用。 -
路径穿越防护:提供
sanitize_path去除../、/../和前导/,以及is_safe_path通过readlink -f解析绝对路径并校验是否位于允许目录内。 -
安全临时文件:禁止使用可预测的临时文件名,改用
mktemp,设置chmod 600或chmod 700,并通过trap注册自动清理。 -
密钥管理:禁止硬编码密钥或通过环境变量暴露密钥;从安全文件读取、使用云密钥管理器(如 AWS Secrets Manager),或用
read -rsp无回显提示输入。 -
权限管理:遵循最小权限原则,拒绝以 root 运行,必要时降权,最小化 sudo 范围。
-
环境变量清理:取消
IFS、CDPATH、GLOBIGNORE,设置安全的PATH和IFS,并提供exec_clean在干净环境中执行命令。 -
绝对路径使用:使用绝对路径防止 PATH 劫持,或用
command -v验证命令位置。 -
历史文件保护:对凭据操作禁用历史记录,如设置
HISTFILE=/dev/null或HISTIGNORE,使用后清除变量。
使用方式
技能提供安全检查清单,要求每个脚本通过输入校验、命令安全、文件操作、密钥、权限、错误处理等检查项。同时提供自动化安全扫描方式:
- ShellCheck 集成:通过 GitHub Actions 工作流运行
shellcheck --severity=error --enable=all。 - 自定义安全 lint:提供
security-lint.sh脚本,检查eval、硬编码密钥、可预测临时文件、未加引号变量等问题。 - 安全脚本模板:提供完整的 2025 安全脚本模板,包含
set -euo pipefail、拒绝 root、清理环境、安全临时文件、输入校验、路径净化等。
适用场景
适用于审查或编写安全敏感的 Bash 脚本,尤其是涉及用户输入、文件路径、临时文件、密钥、权限提升等操作的自动化脚本。资料还提及合规标准,包括 CIS Benchmarks、NIST 指南(NIST SP 800-53)和 OWASP Top 10(A03 注入、A01 访问控制失效、A02 加密失败)。
限制
资料未提供该技能的安装命令、具体平台支持范围、收费或价格信息,这些内容暂未提供。资料中关于 Windows 文件路径的要求(在 Windows 上使用 Edit 或 Write 工具时必须使用反斜杠)属于该技能附带的通用指南,并非 Bash 脚本安全模式本身。