ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Airgorah安全设计清单:Unix Socket权限、输入验证与提权边界的10道防线

Airgorah安全设计清单:Unix Socket权限、输入验证与提权边界的10道防线 Airgorah安全设计清单Unix Socket权限、输入验证与提权边界的10道防线【免费下载链接】airgorahA WiFi security auditing software项目地址: https://gitcode.com/gh_mirrors/ai/airgorahAirgorah是一款用 Rust 编写的开源 WiFi 安全审计工具可以捕获周边 WiFi 流量、发现连接到接入点的客户端、执行去认证攻击并捕获握手包。它的核心安全设计是「GUI 普通用户 airgorah-agent 特权代理」的双进程分离通过 Unix Socket 权限、内核级对端认证、白名单式输入验证和自动提权回收构建了 10 道防线确保 root 权限永远不会直接碰到不可信输入。架构速览提权边界的起点Airgorah 采用典型的最小权限拆分架构这也是全部 10 道防线的基础进程权限职责GUI 主进程普通用户界面展示、设置、握手解析、以普通用户身份写捕获文件特权代理airgorah-agentroot经 polkit 认证启动监控模式、扫描、去认证攻击、读取捕获数据只有当用户执行需要特权的操作时GUI 才通过pkexec启动 agentpolkit 弹窗认证一次见 client.rs若 GUI 本身以 root 运行启动时会被明确警告并提示这不建议在 Wayland 下使用所有高风险操作都收敛在 agent 一侧GUI 进程本身不持有 root 能力10道防线一览表#防线位置关键点1进程权限分离crates/gui/crates/agent只有 agent 提权GUI 保持普通用户2每实例独立 Socketipc.rs按 uid pid 隔离只接受单一连接3Socket 文件 0600 chownmain.rs仅启动用户可连接4SO_PEERCRED 对端认证server.rs内核提供的 uid 校验不符即拒绝50700 根专用捕获目录main.rs捕获数据对其他用户不可读6网卡名白名单验证validate.rs杜绝网卡名注入命令7MAC 地址格式验证validate.rs严格xx:xx:xx:xx:xx:xx十六进制8信道过滤器白名单channel.rs只收合法信道号拒绝重复与尾逗号9消息帧 64MB 上限ipc.rs防止伪造长度前缀引发内存耗尽10版本握手 自动清理server.rs版本不符即拒绝断开即还原网卡状态防线 1–5提权边界与 Unix Socket 权限1️⃣ 进程权限分离仅在需要时提权agent 启动时先检查自己是否真的以 root 运行否则直接退出main.rs。GUI 侧则刻意保持普通用户把「提权」变成一次性的、用户可见的 polkit 认证动作而不是常驻 root 进程。2️⃣ 每实例独立的 Unix SocketSocket 路径按「启动用户的 uid GUI 进程号」生成/run/airgorah/{uid}-{pid}.sock因此可以为每张无线网卡各开一个 GUI 实例而互不冲突。agent 侧用父进程号推导同一实例号两边无需传递敏感信息。更重要的是agent 只接受一个客户端——就是启动它的那个 GUI其余连接一律不被处理。3️⃣ Socket 文件权限 0600 chown 给启动用户绑定监听后agent 立刻把 socket 文件权限收紧为0600并chown给启动它的用户secure_socket。这样即使其他进程能枚举/run/airgorah也根本无法建立连接。4️⃣ SO_PEERCRED 内核级对端认证文件权限是第一层但真正的裁决来自内核agent 对每个已接受的连接读取SO_PEERCRED校验对端 uid 是否等于启动时通过PKEXEC_UID解析出的目标用户不符立即拒绝authorized。没有这一步本机任何用户都可能借道 socket 驱动去认证攻击等特权操作。5️⃣ 捕获目录设为 0700 根专用扫描与捕获的临时文件放在 root 拥有的0700目录中prepare_capture_dir其他用户既读不到进行中的捕获数据也无法篡改或替换捕获文件。防线 6–8提权边界上的白名单输入验证源码注释里写得很直白一旦提权边界存在GUI 就降级为低信任调用方——凡是会变成 root 命令行参数的字符串都在 agent 内再验证一次。这套验证逻辑是纯函数、两侧共享GUI 提前校验改善用户体验agent 复检兜底安全见 server.rs 中每个分支的前置校验。6️⃣ 网卡名白名单验证合法的网卡名必须满足长度不超过 15、只含 ASCII 字母数字及_.-、不以-开头、且不是.或..。这一条直接封死了通过网卡名拼接命令注入的可能。7️⃣ MAC 地址严格格式验证SetMac指定的 MAC、StartDeauth的客户端列表、目标 BSSID 都必须通过xx:xx:xx:xx:xx:xx六组两位十六进制校验任何一项不合格整个请求被拒。8️⃣ 信道过滤器白名单验证扫描信道过滤器是逗号分隔的信道号验证规则相当严格每个信道必须落在 2.4 GHz / 5 GHz 的已知信道白名单中信道必须属于用户勾选的频段2.4G 未开启时禁止信道 1不允许重复、不允许尾逗号、不允许空项完整规则与边界用例可参考 channel.rs 中的测试。防线 9–10消息协议与生命周期收尾9️⃣ 长度前缀消息帧 64MB 上限GUI 与 agent 之间的 IPC 采用「4 字节大端长度前缀 JSON」的帧格式。写入前和读取前都会把长度与MAX_MSG_LEN64 MB比较伪造或损坏的长度前缀会被立刻判为InvalidData拒绝防止恶意或错误帧触发巨型内存分配write_msg / read_msg。 版本握手与断开即清理连接建立后第一条消息是Helloagent 比对协议版本不一致立即报错终止同时顺带回报缺失的依赖工具依赖清单由 deps.rs 统一管理两侧各自在自己环境里检查。而生命周期收尾则是绝不留下烂摊子客户端断开socket EOF、收到Shutdown、甚至 SIGINT/SIGTERM都会触发同一套 app_cleanup——停止扫描、终止所有攻击、退出监控模式、恢复网络管理器、删除临时文件保证无线网卡永远不会被遗留在监控模式里。两个加分项细节攻击速率强制钳制去认证攻击的每秒轮次会被钳制在 1–1000 之间deauth.rs越界参数不会造成失控流量。root 从不写用户路径保存捕获文件时agent 只以有界分块GetCaptureChunk把数据流给 GUI由 GUI 以普通用户身份创建并写入用户自选路径save_captureroot 进程不落笔到用户目录。自检清单想复用这套设计如果你也在做带提权操作的工具可以对照检查高风险功能是否与常规 UI 分进程、按需提权polkit/pkexec特权 socket 是否同时用文件权限 SO_PEERCRED 双重限定单一 uid跨越提权边界的每个字符串是否都过白名单校验器消息协议是否有长度上限防止伪造长度前缀断开连接、崩溃、收到信号时是否都有保证执行的清理路径root 进程是否避免直接向用户指定路径写文件Airgorah 这 10 道防线并非某一项特别复杂而是把「谁拥有特权、谁能连上特权进程、哪些输入能变成命令、异常时谁来收拾」四个问题逐一封死——这正是安全工具自身值得被信任的关键。完整设计可对照 README 与 crates/agent/ 源码进一步阅读。【免费下载链接】airgorahA WiFi security auditing software项目地址: https://gitcode.com/gh_mirrors/ai/airgorah创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表