已关闭
【oam-tools】asys profiling 输出路径拼入 shell 命令 #187
佳祺创建于  13 天前关闭于  4 小时前
佳祺
佳祺
13 天前 创建

【oam-tools】asys profiling 输出路径拼入 shell 命令

漏洞总结

  • 漏洞类型:命令注入(CWE-78)
  • 风险等级:高
  • 影响范围:asys profiling
  • 触发条件:攻击者可控制 --output 参数,且该路径包含 shell 元字符。
  • 漏洞描述:profiling 命令使用 f-string 组装 msprof --output=... 字符串,并通过 subprocess.run(..., shell=True) 执行。--output 是命令行参数,拼接前未加引号、未转义、未参数化。

漏洞源码

  • 相对路径:src/asys/profiling/asys_profiling.py
  • 漏洞代码行数:L88-L90L146
cmd = (f"msprof --output={self.output_path} --sys-period={str(self.period)} "
        f"--sys-devices={self.device_id} ")
...
ret = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8', env=os.environ)

源码说明:self.output_path 来自 ParamDict().get_arg("output"),之后只拼接时间戳目录名,没有进行 shell 参数隔离。

可能造成的影响

  • 执行 profiling 的用户权限下发生任意命令执行。
  • 窃取 profiling 主机上的系统信息、日志或访问凭据。
  • 造成 profiling 任务失败或写入非预期目录。

修复建议

  • 使用 subprocess.run(["msprof", f"--output={self.output_path}", f"--sys-period={self.period}", f"--sys-devices={self.device_id}", ...], shell=False)
  • 将每个 profiling 选项作为独立列表元素追加。
  • 对输出路径做规范化和权限校验,但不要依赖转义来保证安全。
likedislike
Jjinyingqi成员
13 天前 将 z296249221 设为负责人
jinyingqi成员
13 天前 评论:

✅ 此Issue为Msprof工具问题,分配给领域责任人 @z296249221,请及时处理。

建议您在24小时内反馈进展,在1天内闭环。
(类别:其他)

likedislike
starchen_成员
9 天前 评论:

计划解决时间:2026.8.20

likedislike
Sstarchen_成员
9 天前 移除了负责人 z296249221
Sstarchen_成员
9 天前 将 starchen_ 设为负责人
Sstarchen_成员
6 天前 添加了label:resolved
starchen_成员
6 天前 评论:

已修复

likedislike
jinyingqi成员
3 天前 评论:

🔔 @syaunfang您好,关联PR #516 已合并,请在2天内检视,超期将视为检视通过,Issue将自动关闭。

likedislike
Sstarchen_成员
3 天前 添加了label:wait-feedback
Sstarchen_成员
4 小时前 issue状态由 待办的 改变为 已完成
Sstarchen_成员
4 小时前 关闭了 issue