关于 github 中的 workflow 可以随便执行的问题

2021-04-12 10:33:11 +08:00
 Drinker

这两天发生的,之前申请了个 360 E5 的账号,用 github 的 workflow 跑 API 来续期,然后这两天发现有个家伙提了个 pr, 就是此人 https://github.com/laksjduetryuism,然后再 actions 里面看看到对方提的 pr 可以直接再工作流里面执行, https://imgur.com/xyv9435, pr 我还没有合并, https://imgur.com/bAV9nqm, 就直接生效了?如果这样可以执行不是就可以获取我再项目里面设置的 id 和 secret ... 害怕。。。

2388 次点击
所在节点    GitHub
29 条回复
just1
2021-04-12 10:37:28 +08:00
...你的 workflow 的触发条件有 pr,不这样才奇怪呢。执行归执行除非在执行中输出了 secret,不然别人又看不到
Drinker
2021-04-12 10:49:07 +08:00
@just1 不知道是不是我理解错掉。如果 workflow 的触发条件有 pr,那执行的也是应该是我自己的 workflow,而不是 pr 里面的 workflow,他提过来的 pr 里面是一个 workflow 的 yml 定义文件,假设他再 yml 里面使用 curl 发送一个附带了 环境变量 ID_LIST 和 KEY_LIST 到他的服务器上,那不是就被盗了 id 和 secret ...
InternetExplorer
2021-04-12 10:54:10 +08:00
开源项目也没什么问题吧
2wex
2021-04-12 10:57:20 +08:00
PR 触发的 action 不能获取 secret

放心,只要你遵守 github actions 的规矩,它还是很安全的
coolcoffee
2021-04-12 11:08:16 +08:00
Pull Request Trigger 执行的你项目分支的,所以就算别人提交触发了你原有流程,也不会造成什么太大影响。secret 就算被误输出也会被打码掉。
baobao1270
2021-04-12 11:34:23 +08:00
好像听说最近有人拿 action 挖矿的,专门找小众 repo 提 pr
Drinker
2021-04-12 11:39:58 +08:00
@InternetExplorer 已经续期了三次,项目没问题。
Drinker
2021-04-12 11:41:27 +08:00
@2wex 如果提交的分支里面使用 curl 发送一个附带了 环境变量 ID 和 KEY 的请求到自己的服务器上不知道会不会被盗掉,等有时间我试试。
Drinker
2021-04-12 11:43:01 +08:00
@coolcoffee 如果分支里面使用 curl 发送请求,参数是环境变量里面的 secret,不知道会不会被发出去...
Drinker
2021-04-12 11:43:54 +08:00
@baobao1270 有可能,我看 yml 里面下了一个脚本,但是是再 win 上跑的,在我这没跑起来。
learningman
2021-04-12 12:09:24 +08:00
@Drinker 你没看懂人家在说什么吗。。。环境变量里根本就不会有 secret
dingwen07
2021-04-12 12:11:32 +08:00
触发器不包括 pr 应该就可以吧
顺便这个用户感觉很可疑,可能是滥用用户,准备报告一下
楼主的自动跑 API 的 yaml 能否分享一下
coolcoffee
2021-04-12 12:21:10 +08:00
@Drinker 只要你别把代码合并到你的 GitHub 仓库里面,它做仓库代码上的 action 就不可能在你的仓库上执行。

PR trigger 很常见的,像开源项目提交前会做好多规则检查。全部绿色通过以后才可以继续合并。
otakustay
2021-04-12 12:24:33 +08:00
workflow 触发条件是 PR 就是用来验证 PR 是否合格能否合并的,只触发你自己 PR 还有啥用
Drinker
2021-04-12 13:13:05 +08:00
Drinker
2021-04-12 13:15:30 +08:00
@learningman 我可能没搞清楚,因为看到这个
```
env:
ID_LIST: ${{ secrets.ID_LIST }} # secrets_id 提供
KEY_LIST: ${{ secrets.KEY_LIST }} # secrets_key 提供
ID_LIST2: ${{ secrets.ID_LIST2 }} # secrets_id 提供
KEY_LIST2: ${{ secrets.KEY_LIST2 }} # secrets_key 提供
run: |
echo $ID_LIST > idlist.txt
echo $KEY_LIST > keylist.txt
```
所以很奇怪。
Drinker
2021-04-12 13:22:16 +08:00
@coolcoffee 我没有合并 pr,但是的确在我的 aciton 里面有执行的情况,只不过 window 的 yml 无法执行,所以没有成功。
相同的受害者 https://github.com/hjdd777/AutoApiS/actions 。这个人和我一样,也被提交了 pr
Drinker
2021-04-12 13:24:44 +08:00
@otakustay 那是不是说有可能出现上面我说的那种情况,能获取得到我设置的 id 和 secret 。上面有个老哥说不行,我也不清楚。因为触发 api 的 yml 文件里面是获取了 id 和 secret 才触发的 api 。
hzcer
2021-04-12 13:30:58 +08:00
可以看看 repo 设置中 Actions - Actions permissions
Trim21
2021-04-12 13:35:06 +08:00
…他读不到你的 secrets

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX