新增: 信任所有目录扩展至敏感目录放行
开关语义升级为完全放行,含 .ssh/.aws 等黑名单目录(产品拍板体验优先,用户知情选择) validate_path 与 is_authorized 双拦截点经进程级标志同源放行,audit 层每轮工具执行前刷新 设置页开启时二次确认,正文明示敏感凭据可进对话上下文风险自担;对话区常驻放行横幅既有 测试以串行闸防并行互踩进程级标志
This commit is contained in:
@@ -206,11 +206,32 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_validate_path_rejects_sensitive_system_dirs() {
|
||||
// 依赖全局黑名单放行标志为关,持串行闸防与改写标志的并行测试互踩
|
||||
let _guard = crate::commands::ai::audit::BLACKLIST_BYPASS_TEST_LOCK
|
||||
.lock()
|
||||
.unwrap_or_else(|e| e.into_inner());
|
||||
// .ssh / .aws / .gnupg 等敏感目录被拒(走 is_in_system_blacklist)
|
||||
assert!(validate_path("/root/.ssh/id_rsa").is_err());
|
||||
assert!(validate_path("C:\\Users\\x\\.aws\\credentials").is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_validate_path_bypass_allows_sensitive_dirs() {
|
||||
// 总开关开启:黑名单放行(validate_path 层),.. 遍历检查保留(路径合法性校验,非权限边界)。
|
||||
// 先取结果再复位再断言,防 panic 泄漏标志污染其他测试。
|
||||
let _guard = crate::commands::ai::audit::BLACKLIST_BYPASS_TEST_LOCK
|
||||
.lock()
|
||||
.unwrap_or_else(|e| e.into_inner());
|
||||
crate::commands::ai::audit::set_blacklist_bypass(true);
|
||||
let ssh_ok = validate_path("/root/.ssh/id_rsa").is_ok();
|
||||
let aws_ok = validate_path("C:\\Users\\x\\.aws\\credentials").is_ok();
|
||||
let traversal_still_denied = validate_path("/root/.ssh/../.gnupg/x").is_err();
|
||||
crate::commands::ai::audit::set_blacklist_bypass(false);
|
||||
assert!(ssh_ok, "bypass 开时 .ssh 路径应通过 validate_path");
|
||||
assert!(aws_ok, "bypass 开时 .aws 路径应通过 validate_path");
|
||||
assert!(traversal_still_denied, "bypass 开时 .. 遍历检查应保留");
|
||||
}
|
||||
|
||||
// ── handler 参数边界 ──
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in New Issue
Block a user