如何安全地将GitHub应用程序安装ID与集成GitHub应用程序的网站帐户关联?

6
我正在建立一个围绕我的GitHub应用程序集成的网站。
该网站有自己的用户(来自Google oAuth),他们可以通过安装我的GitHub应用程序将其帐户连接到其GitHub帐户。
在GitHub应用程序安装过程中,有一件事情我无法理解:
当用户在GitHub上安装了我的应用程序后:
- 他们的浏览器会重定向到一个URL(“Post install Setup URL”),其中包含安装ID。 - GitHub调用我的Webhook以声明此安装。
安装ID是敏感信息,因为如果我的网站的恶意用户(攻击者)可以欺骗我的网站将其帐户与其他人(受害者)的GitHub安装ID关联起来,那么我的网站将代表攻击者对受害者的GitHub API进行操作(这很糟糕!)。
现在,我的目标是将此安装ID安全地绑定到我的网站用户。安全绑定指的是,我的网站不可能授予攻击者在我的应用程序的受害者GitHub安装上的权限。
使用“Post install Setup URL”中提供的GitHub安装ID将此安装与我的网站帐户绑定是不安全的,因为我无法验证此安装ID是否“属于”我的网站用户,因为该URL可以由知道受害者的有效安装ID的攻击者伪造。
不完美的缓解措施:
- 断言安装ID未绑定到我的网站任何其他用户帐户 - 与在Webhook上收到的GitHub API事件一起使用
以上两种方法都有漏洞,是否存在App授权模型的缺陷?
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接