### 漏洞概述 该漏洞涉及 `electerm` 项目中的 `parse-quick-connect.js` 文件。漏洞描述为“Deep link support prop check”,具体是在解析 URL 参数时,未对 `opts` 参数进行充分的安全检查,导致潜在的安全风险。 ### 影响范围 - **文件路径**:`src/app/common/parse-quick-connect.js` 和 `src/client/common/parse-quick-connect.js` - **受影响函数**:`parseQuickConnect` 函数 - **影响参数**:`opts` 参数 ### 修复方案 1. **添加 `OPTS_DENY_LIST`**:在 `parseQuickConnect` 函数中,新增一个 `OPTS_DENY_LIST` 数组,包含不允许通过 URL 参数覆盖的键(如 `type` 和 `host`)。 2. **过滤 `opts` 参数**:在解析 `opts` 参数时,使用 `OPTS_DENY_LIST` 过滤掉不允许的键,确保这些键不会被 URL 参数覆盖。 ### POC 代码 以下是修复前后的代码对比: #### 修复前 ```javascript const parseQuickConnect = (str) => { if (optsStr) { try { const extraOpts = JSON.parse(optsStr); Object.assign(opts, extraOpts); } catch (err) { console.error('Failed to parse opts:', err); } } }; ``` #### 修复后 ```javascript const OPTS_DENY_LIST = ['type', 'host']; const parseQuickConnect = (str) => { if (optsStr) { try { const extraOpts = JSON.parse(optsStr); OPTS_DENY_LIST.forEach(key => delete extraOpts[key]); Object.assign(opts, extraOpts); } catch (err) { console.error('Failed to parse opts:', err); } } }; ``` ### 总结 通过引入 `OPTS_DENY_LIST` 并在解析 `opts` 参数时进行过滤,可以有效防止通过 URL 参数覆盖关键配置项,从而提升安全性。