GitHub 令牌泄漏, Python 核心资源库面临潜在攻击

TheHackerNews网站消息,软件供应链安全公司 JFrog 的网络安全研究人员称,他们发现了一个意外泄露的 GitHub 令牌,可授予 Python 语言 GitHub 存储库、Python 软件包索引(PyPI)和 Python 软件基金会(PSF)存储库的高级访问权限。

该令牌属于 Python 软件基金会的基础设施主管,并且意外地包含在一个编译的二进制文件中,该文件作为容器镜像的一部分发布在 Docker Hub 上。

JFrog 的研究人员在一份报告中写道:"这次的情况比较特殊,如果令牌落入不法分子之手,他们可能向 PyPI 软件包甚至 Python 语言本身注入恶意代码(类似于用恶意软件包替换所有 Python 软件包),其潜在后果难以估量。"

因此,理论上攻击者可以利用管理员权限,通过毒化与 Python 编程语言核心或 PyPI 软件包管理器相关的源代码,策划大规模的供应链攻击。

这一事件表明,仅从源代码中清除访问令牌(某些开发工具会自动这样做)不足以防止潜在的安全漏洞。由于自动构建过程和开发人员的失误,敏感凭据也可能被包含在环境变量、配置文件甚至二进制文件中。

令牌泄漏

PyPI 管理员兼 Python 软件基金会 (PSF) 基础设施主管 Ee Durbin 撰写了一份事件报告,解释了泄露事件发生的原因。该事件涉及 Durbin 自己账户的访问令牌,由于他在组织中的角色,该账户拥有管理权限。

2023 年初,Durbin 正在开发 cabotage-app,这是 PSF 开发的一款基于 Docker 的工具,用于在 Kubernetes 集群上部署 PyPI 和相关服务。在开发代码库的构建部分时,他不断遇到 GitHub 对匿名访问实施的 API 速率限制。

在Durbin 所谓的 "偷懒行为 "中,他决定在本地修改源代码,为自己的账户添加一个访问令牌,以绕过默认的速率限制,更快地完成工作。这是一个快速解决方案,是配置本地主机 GitHub 应用程序来完成构建而不是使用 GitHub API 的替代方案。

Durbin 知道在源代码中添加个人访问令牌 (PAT) 并不安全,但这种更改只是针对他的本地代码库副本,从未打算远程推送。事实上,自动构建和部署脚本应该恢复本地变更,从而清除令牌。

但 Durbin 没有意识到的是,作为构建过程的一部分而生成的 .pyc(Python 编译字节码)文件中也包含了令牌,而这些存储在 pycache 文件夹中的文件并未配置为从上传到 Docker Hub 的最终 Docker 镜像中排除。

PyPI 安全团队在 6 月下旬收到 JFrog 的通知后,撤销了该令牌,并审查了所有 GitHub 审计日志和账户活动,以查找该令牌可能被恶意使用的迹象。目前,没有发现恶意使用的证据。包含令牌的 cabotage-app 版本于 2023 年 3 月 3 日发布在 Docker Hub 上,并于 2024 年 6 月 21 日(即 15 个月后)被移除。

Durbin 写道:" Cabotage 现在完全是自托管的,这意味着 cabotage-app 的构建不再使用公共注册表,部署构建仅从源代码的清洁检查中启动。这减少了本地编辑进入开发环境之外的镜像构建的情况,同时也消除了发布到公共注册表的需要。"

Durbin 表示,除非万不得已,他今后将避免为自己的账户创建个人访问令牌。除了这一案例之外,这种长效令牌并没有在其他任何情况发挥作用。

关于此次事件,Durbin 认为这是一个很好的提醒,要为 API 令牌设置严格的过期日期(如果需要的话),像对待源代码一样对待 .pyc 文件,并在自动化系统上只从干净的源代码执行构建。

参考来源:

https://www.csoonline.com/article/2515722/python-github-token-leak-shows-binary-files-can-burn-developers-too.html

https://thehackernews.com/2024/07/github-token-leak-exposes-pythons-core.html

相关推荐
m0_55576290几秒前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
wuk99839 分钟前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
浪裡遊1 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
烛阴2 小时前
简单入门Python装饰器
前端·python
lzb_kkk2 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼2 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开2 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式
ai小鬼头2 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
简佐义的博客2 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
天天扭码3 小时前
从图片到语音:我是如何用两大模型API打造沉浸式英语学习工具的
前端·人工智能·github