内容提要
2024年6月28日,Python软件基金会收到了一份关于泄露的GitHub个人访问令牌的报告。令牌已撤销,未发现恶意活动。开发人员在本地文件中添加了访问令牌以解决GitHub API速率限制问题。提醒设置API令牌过期日期,将.pyc文件视为源代码。
延伸解读
本地开发中的令牌硬编码风险
开发者为了绕过GitHub API的匿名速率限制,在本地代码中硬编码了个人访问令牌。这种图方便的做法虽然未打算提交到远程仓库,但令牌仍可能通过其他途径泄露。文章提醒,即使是在本地环境中,也不应随意硬编码敏感凭证,因为构建或共享过程可能意外暴露它们。
构建过程中.pyc文件的泄露隐患
由于应用在共享卷上运行,包含未提交更改的.pyc文件被保留下来。构建时,.dockerignore未排除__pycache__或*.pyc文件,导致这些编译文件被打包进镜像并推送到公共注册表。这揭示了.pyc文件可能包含源代码中的敏感信息,应被视为源代码一样进行安全处理。
缓解措施:自托管与令牌管理
事件后,cabotage-app改为完全自托管,构建不再使用公共注册表,且从干净源代码进行。开发者撤销了唯一的GitHub访问令牌,并决定未来避免创建长期令牌,必须使用时确保设置到期日期。这些措施降低了本地修改进入生产构建的风险,并减少了令牌泄露的可能。
社区协作在开源安全中的作用
JFrog团队在Docker Hub上扫描发现了泄露的令牌并报告给Python软件基金会。文章感谢了安全研究社区的努力,强调PyPI依赖社区检测恶意软件和泄露凭证。这种合作有助于提升开源生态的整体安全性,表明安全维护需要多方共同参与。
Q&A
GitHub个人访问令牌泄露的事件是什么时候发生的?
事件发生在2024年6月28日。
此次令牌泄露是否导致了恶意活动?
未发现恶意活动。
开发人员是如何泄露GitHub访问令牌的?
开发人员在本地文件中硬编码了访问令牌,未考虑到.pyc文件的安全性。
为了防止未来的令牌泄露,开发者采取了哪些措施?
开发者现在完全自托管应用程序,并确保令牌有到期日期。
为什么开发者没有考虑.pyc文件的安全性?
开发者认为.pyc文件是编译后的字节码,不会泄露敏感信息。
这次事件对开源社区有什么启示?
强调了设置API令牌到期日期和将.pyc文件视为源代码的重要性。