Command Injection

未关闭
#548 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
macos, swift

调研方向

首先,沿着 issue 中描述的参考文件处理和代理模式入口点追踪 filepath 参数,然后在安全的测试项目中使用提供的 filename 重现该行为。当通过 Copilot 打开或使用被引用的文件时,恶意 filename 不再能够导致命令执行,即表示完成。

由索引模型根据 Issue 内容生成。

描述

Description

An attacker can execute arbitrary commands on the user's machine.

Version: 0.43.0

Technical Impact

An attacker can create a project containing a maliciously crafted file name. If a user opens the project in Xcode and interacts with the file using the Copilot extension, the command will be executed on the system.

Code Review

Image

The filepath parameter is used directly while opening the reference file in the code, leading to command injection.

Steps to reproduce

  1. Create a file with the following payload

main.swift";cat>xxd -r -p <<< 2f746d702f68657861616161;".swift

Image
  1. The file will be automatically attached to the Xcode chat editor.
  2. Send any message to interact with Copilot.
  3. Click on the referenced file. Command mentioned in the filename will be executed.
Image

I reported this to GitHub Security in version 0.31.0 but did not receive a response. I also reported the issue to the developer of the intitni repository, and they fixed it in the below commit

Image

https://github.com/intitni/CopilotForXcode/commit/9340275e615197fd7cd3ee8b2ed992893119b38d

Now I see that the vulnerable code is also used for agent mode. Since the issue is already public, I am sharing the details.

Image
主要语言
Swift
星标
6.3k
派生
2k
平均合并
3 天 21 小时
30 天内合并 PR
2

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/CopilotForXcode 的其他 Issue

查看 github/CopilotForXcode 的全部 Issue

相似的 Issue

更多 Swift Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。