已开启
【安全】【威胁分析】标签操作静默吞错,删除成功但添加失败时 PR 丢失标签且无强告警 #13
liudongfang创建于  27 天前
liudongfang成员
27 天前 创建

问题

GitHub / Gitee 标签客户端在清理旧标签时单次删除失败被空 catch 忽略,添加失败也仅静默返回:

  • src/platform/github/github-label-client.ts:53-63:逐个 DELETE 清理标签,catch { /* 单个删除失败不阻断 */ }
  • src/platform/github/github-label-client.ts:65-78:添加失败返回 { label: null }
  • src/platform/gitee/gitee-label-client.ts:42-53、55-67:同样的静默吞错模式

若清理标签成功、添加目标标签失败,PR 会丢失全部相关标签却无 warning 级以上告警,状态判定(成功/失败标签)失去依据(CWE-754)。

影响

PR 标签状态不一致且难以追溯,同步状态展示与实际不符。Tier 3(纵深防御),CVSS 4.0 约 4.7。

建议修法

  • 对「删除成功但添加失败」的组合输出明确 warning(含失败原因)
  • 删除失败时至少记录被跳过的标签名
  • LabelUpdateResult 中区分「删除失败」「添加失败」两种失败归因

完整分析见《威胁建模分析报告(STRIDE-A)》,对应发现 FIND-SYNC-06。

likedislike
Lliudongfang成员
23 天前 修改标题为 “【安全】【威胁分析】标签操作静默吞错,删除成功但添加失败时 PR 丢失标签且无强告警”,原标题为“【安全】【可靠性】标签操作静默吞错,删除成功但添加失败时 PR 丢失标签且无强告警”
崔世英
崔世英成员
15 天前 评论:

已修复(分支 security-issues)。

修复方法:GitHub / Gitee 标签客户端(github-label-client.ts / gitee-label-client.ts):

  • 单个标签删除失败:由空 catch 改为 core.warning 强警告(含标签名、PR、错误详情),不阻断;
  • 目标标签添加失败(非 2xx / 异常):同样输出强警告后按失败返回。

PR 标签丢失不再静默。

likedislike
崔世英崔世英成员
9 天前 关联了pull request:fix(security): 修复敏感信息泄露与供应链安全问题
崔世英崔世英成员
6 天前 issue状态由 待修复 改变为 待验收