gvbytes/srm-secure-browser-vulnerabilities

GitHub: gvbytes/srm-secure-browser-vulnerabilities

针对 SRM Secure Browser 在线考试浏览器的安全审查报告,记录了 11 个影响考试完整性与学生隐私的架构和实现漏洞。

Stars: 11 | Forks: 0

# SRM Secure Browser 安全审查 我在审查了由 Eduswitch Solutions 分发的基于 Electron 的考试浏览器 `SRMUG-Secure-Browser v1.0.22` 之后,整理了这个代码仓库。这些笔记重点关注影响考试完整性、监考可靠性和学生隐私的设计与实现问题。 ## 范围 本次审查基于解压后的 `app.asar` bundle。我检查了可读的渲染器和预加载代码、内置的 JavaScript、原生辅助二进制文件、Firebase/WebRTC 的使用情况,以及可见的客户端考试/监考流程。 编译后的 `main.jsc` 文件未被完全反编译,因此在无法从源代码确认主进程行为的地方,报告中会指出这一局限性。 ## 关键发现 报告追踪了跨渲染器信任边界、暴露的配置、IPC/消息处理、考试状态设计、Electron 依赖版本以及隐私敏感数据收集等方面的 11 个问题。 严重程度概览: | 严重程度 | 数量 | 主要主题 | |---|---:|---| | Critical | 3 | 暴露的客户端密钥、未经身份验证的消息控制、答案泄露 | | High | 4 | 公开的特权全局变量、薄弱的 DevTools 限制、旧版 Electron、客户端可写的 Firebase 状态 | | Medium | 3 | 薄弱的虚拟机检测、已弃用的请求库、GPS 收集隐患 | | Low | 1 | 无效的 PrintScreen 处理 | ## 仓库内容 | 文件 / 文件夹 | 用途 | |---|---| | `SRM_Secure_Browser_Security_Review.md` | 完整的公开审查报告,已隐去可直接利用的密钥和绕过步骤 | | `README.md` | 仓库概述、范围、严重程度摘要和修复指南 | | `poc/` | 演示 postMessage 绕过的良性概念验证 | ## 负责任的披露处理 该报告的公开版本刻意避免发布看似有效的密钥或逐步的考试绕过说明。其目的是记录架构上的弱点,帮助维护者、研究人员或审查者了解需要修复的内容,同时避免使本报告成为操作性的滥用指南。 如果您正在维护类似的基于 Electron 的考试或 Kiosk 应用程序,请将渲染器视为不受信任的组件。敏感决策应由服务器或特权主进程执行,并在每个边界进行严格的验证。 ## 负责任披露证明 在将这些内容公开之前,我直接联系了 SRM。我将报告通过电子邮件发送给了多位大学联系人——考试主管、CSE HOD、招生办、COE 办公室和 DNC 团队——解释了我发现的所有问题,并提出可以指导他们查看 PoC,或者在一旦他们修复这些问题后协助验证。 截至今日,我尚未收到他们的任何回复。 以下是该电子邮件的截图作为证明: ![发送给 SRM 大学负责人的披露邮件](https://raw.githubusercontent.com/gvbytes/srm-secure-browser-vulnerabilities/main/disclosure-email.png) 该邮件附带了完整的漏洞报告(`srm_vuln_review.md`),涵盖了所有 11 个问题。未访问任何数据,未扰乱任何系统,且在此次披露尝试之前,未与任何其他人分享调查结果。 ## 推荐修复顺序 1. 将答案和评分逻辑完全移至服务器端。 2. 从渲染器代码中移除硬编码的密钥,并轮换已暴露的凭证。 3. 在确实需要加密的地方,将 AES-ECB 替换为现代认证加密。 4. 验证 `postMessage` 的来源、schema 和允许的操作。 5. 移除页面上下文中公开的特权全局变量,例如测试启动/停止控制。 6. 将 Firebase 规则锁定为按学生/按会话的权限,并在服务器端验证写入操作。 7. 升级 Electron 并移除已弃用的 `remote` 用法。 8. 重新设计隐私敏感流程(例如地理位置收集),加入明确的同意和保留规则。
标签:Electron, 数据可视化, 漏洞分析, 考试防作弊系统, 自定义脚本, 路径探测