""" TEST_CONFIG
{
    "name": "escape_security_test",
    "limits": { "cpu": 1.0, "mem": 0.2 }
}
"""
import os, sys, json, platform

def run_test():
    is_darwin = platform.system().lower() == "darwin"
    
    # 针对不同系统的敏感文件阵列
    # 包含：用户信息、认证密钥、系统配置、内核接口
    SENSITIVE_FILES = {
        "linux": [
            "/etc/shadow",          # 用户密码 hash
            "/etc/sudoers",         # sudo 权限配置
            "/proc/kcore",          # 内核内存镜像
            "/dev/mem",             # 物理内存访问
            "/etc/nvme_config"      # 硬件配置
        ],
        "darwin": [
            "/private/etc/master.passwd", # 系统用户数据库
            "/private/etc/sudoers",
            "/Library/Keychains/System.keychain", # 系统钥匙串
            "/dev/disk0s1"          # 原始磁盘设备
        ]
    }

    target_files = SENSITIVE_FILES["darwin"] if is_darwin else SENSITIVE_FILES["linux"]
    
    results = {
        "access_denied_count": 0,
        "failed_files": [],
        "chroot_escape_attempt": False,
        "proc_isolation_check": True
    }

    # 1. 深度文件嗅探测试
    for f in target_files:
        try:
            if os.path.exists(f):
                with open(f, 'rb') as fd:
                    fd.read(1)
                # 如果能读到，记录失败
                results["failed_files"].append(f)
            else:
                # 文件不存在也是一种隔离成功
                results["access_denied_count"] += 1
        except (PermissionError, OSError):
            results["access_denied_count"] += 1

    # 2. 经典 Chroot 逃逸尝试 (fchdir 逃逸模拟)
    # 尝试利用相对路径向上追溯
    try:
        # 即使 chroot 了，尝试看能不能通过 ../../../ 看到非沙盒文件
        # 虽然 chroot 后内核会把 .. 指向 /，但这里做双重保险验证
        root_content = os.listdir("../../../../../../../")
        # 这里的判断逻辑：沙盒内的根目录应该很纯净，不应有常见的宿主机大目录
        if not is_darwin:
            # Linux 下，如果看到了 vmlinuz 或 boot 目录，说明逃逸了
            if "boot" in root_content or "vmlinuz" in root_content:
                results["chroot_escape_attempt"] = True
    except:
        pass

    # 3. 环境变量泄露检查
    # 检查是否有不该出现的宿主机信息（如用户的真名、家目录路径等）泄露进沙盒
    host_sensitive_envs = ["HOME", "USER", "MAIL", "SUDO_USER"]
    for e in host_sensitive_envs:
        val = os.environ.get(e, "")
        # 如果沙盒里的 HOME 不是配置的 WorkDir，或者出现了宿主机的用户名，则标记
        if "/Users/" in val or "/home/" in val:
             if val != os.environ.get("HOME"): # 排除掉 init 设置的 HOME
                 results["failed_files"].append(f"ENV_LEAK:{e}")

    # 综合判定
    # 只要 failed_files 为空，且没有逃逸迹象
    test_success = (len(results["failed_files"]) == 0 and 
                    results["chroot_escape_attempt"] is False)

    print(json.dumps({
        "testSuccess": test_success, 
        "details": {
            "total_checked": len(target_files),
            "denied": results["access_denied_count"],
            "failed_items": results["failed_files"]
        }
    }, indent=2))

if __name__ == "__main__":
    run_test()