NishantIyer/CVE-2020-15215-Discord-POC

GitHub: NishantIyer/CVE-2020-15215-Discord-POC

针对 Discord 桌面端 Electron 架构的防御性安全研究工具,建模并验证上下文隔离绕过与导航保护失效场景下的进程边界强度。

Stars: 17 | Forks: 14

# Discord Electron ISO 边界验证 PoC ## 范围 本仓库是一个针对 Discord 风格桌面架构中 Electron 边界强化的概念验证测试工具。它对渲染器/主进程分离、预加载桥接策略、IPC 通道暴露、导航控制和运行时监控进行建模,以研究错误配置如何削弱应用程序的隔离保证。 参考案例详情追踪于: [https://bugbounty.com/211356433](https://bugbounty.com/211356433) ## 漏洞背景 本案例研究基于 2020 年 Discord 桌面应用程序的漏洞链,涉及 Electron CVE-2020-15215(上下文隔离绕过)和 CVE-2020-15174(导航 / framebusting 保护失效),并结合了嵌入式第三方内容 [web:5][web:19][web:20] 中的上游 XSS 条件。 该测试工具重点关注以下与安全相关的条件: - 渲染器到主进程的命令路由 - 预加载桥接暴露与策略执行 - IPC 允许/拒绝映射 - 导航和顶层框架转换处理 - 随机工作负载下的会话状态转换 - 运行时队列调度与进程监控 - 特定平台的集成路径 ## 仓库拓扑 ### 核心运行时 - `src/main/` - 生命周期构建 - 窗口偏好设置合成 - 进程监控状态 - 电源事件转换 - `src/runtime/` - 作业注册表 - 优先级队列建模 - tick 调度器流程 ### IPC 与权限边界 - `src/ipc/` - 通道注册 - 路由解析 - `src/preload/` - 桥接面映射 - 桥接策略评估 - `src/security/guards/` - 调用过滤 - payload 整形 - `src/security/policies/` - 窗口策略组合 ### 网络与协议 - `src/network/rest/` - REST 路由构建与请求结构辅助工具 - `src/network/gateway/` - gateway 事件状态转换 - `src/network/rpc/` - RPC 帧构建与进行中跟踪 ### 领域状态模块 - `src/modules/guilds/`, `src/modules/channels/`, `src/modules/voice/` - `src/modules/auth/`, `src/modules/presence/`, `src/modules/experiments/` - `src/cache/`, `src/database/`, `src/commands/`, `src/sessions/`, `src/state/` ### 扩展子系统 - `src/rendering/` 用于布局/主题/画布表面 - `src/media/` 用于音频/图像/视频 pipeline 阶段 - `src/search/` 用于索引/查询/排名存储 - `src/ml/` 用于特征/推理/pipeline 图 - `src/billing/` 用于计划/发票/账本路径 - `src/moderation/` 用于过滤/报告/操作 - `src/compliance/` 用于策略目录和审计追踪 - `src/bots/` 用于 bot 运行时/存储/gateway 状态 - `src/platform/` 用于 linux/windows/mac 适配器 ## 验证功能 该 PoC 为边界分析验证提供了确定性和随机性路径: 1. 具有角色分离的作者元数据和时间线进展的 Git 日期历史模拟 (`scripts/simulate-history.ps1`)。 2. 用于重复对象标识种子设定的 Fixture 生成 (`scripts/generate-fixture.js`)。 3. 通道注册以及授权映射解析和查找。 4. 用于权限路径分析的窗口策略和预加载策略耦合。 5. 针对高频变动命令工作负载的 Reducer 链和会话注册表转换。 6. 在序列化状态快照下的队列/作业/调度器生命周期移动。 7. 结构化的模块导出,将每个有状态子系统隔离为纯函数表面。 ## 构建与执行 ### 环境要求 - Node.js 18+ - npm 9+ - Git 2.30+ - PowerShell 7+ (用于时间线模拟脚本) ### 安装 ``` npm install ``` ### 生成 Fixture Payload ``` node scripts/generate-fixture.js ``` ### 验证整个源代码树的模块加载 ``` node -e "const fs=require('fs');const path=require('path');function walk(d){for(const e of fs.readdirSync(d)){const p=path.join(d,e);const s=fs.statSync(p);if(s.isDirectory())walk(p);else if(p.endsWith('.js')) require('./'+p);}} walk('src'); console.log('ok');" ``` ### 可选的分支/引导 ``` git checkout -B main node scripts/generate-fixture.js > fixtures/generated.json ``` ## 工程说明 - 所有模块均围绕 `create*`、`set*`、`get*` 和分阶段的 worker 转换进行结构化,以简化跨子系统边界的差异跟踪。 - 文件布局保持严格的领域分割,使得每个表面的检测变得简单直接。 - IPC、预加载、安全、运行时和网络层保持正交,以便可以在不发生跨域修改的情况下启用检测。 - 本 README 有意记录了一个防御性的复现测试工具,而不是一个有效的漏洞利用链。 ## 贡献者 Nishant 作者: - Arjun Mehta - Sofia Alvarez
标签:AI合规, Bug Bounty, CVE-2020-15174, CVE-2020-15215, Discord, Electron, Go语言工具, IPC安全, MITM代理, PoC, Web报告查看器, XSS, 上下文隔离绕过, 可自定义解析器, 安全策略, 客户端安全, 导航控制, 提示词设计, 数据可视化, 暴力破解, 桌面应用安全, 漏洞情报, 漏洞验证框架, 网络安全, 自定义脚本, 足迹探测, 进程间通信, 隐私保护, 隔离边界验证, 预加载桥接