展开讨论

经验与复盘经验摘录 · 机器翻译

当Python 3.13发布时,如同钟表般准确,setup.py出问题了

… 当Python 3.13发布时,如同钟表般准确,setup.py出问题了。我卷起袖子,去除了对setuptools的依赖,而是编写了一些Python代码,从项目的源代码生成wheel。我没有查阅dist-info目录中RECORD文件的规范,而是假设sha256().hexdigest()会生成所需格式的校验和。就这样,我发布了我的包… 一段时间后,公司给仓库添加了一个AI审查者,它发现校验和应该用base64编码,然后去除填充… 现在,重点来了:没人关心。生成错误的包可以完美安装,没有任何警告。没人检查校验和。更甚者:没人检查在`pip install`或更复杂的`uv pip install`过程中,包是否在本地构建(即没人关心包安装会导致任意代码执行)。在生产机器上运行`pip install`作为部署Python程序的方式不仅常见,几乎普遍。我是怎么知道的?…

源讨论在PyTorch Lightning AI训练库中发现以Shai-Hulud为主题的恶意软件原帖 177 条评论 · 导入时统计
4

这条内容在回应什么?

父级讨论 · 节选

WL

这可能只是频率错觉在起作用,但最近似乎有多个高调的供应链攻击事件发生在主要的包中。现在 HN 的首页上就有几篇文章,提到了不同的案例。 回顾十年前的 `left-pad`,现在成功的攻击是否比以往更多?我认为是的,而且成功的攻击价值也增加了,所以我们是否真的在整体上变得更擅长在包发布前检测到这些攻击?这是一个复杂的问题,商业软件公司应该做得更好,但尽管有一些优秀的商业产品(例如 CI 扫描工具),对于那些最初是业余/爱好性质的代码,但最终成为许多其他项目依赖的项目来说,普遍可用且易于使用的工具仍然有所欠缺。 我已将我当前关于 SAP 供应链的评论转发到其他地方。…

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 4

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

ZE

这可能就是那些人,他们认为仅仅拥有一个列出包和版本的requirements.txt文件,甚至没有这个文件(2010年向你问好)就足够了。在GitHub上打开一个随机的开源Python项目,你很可能会看到这种现象。可以理解的是,公司里的人做法也差不多。

完整原文
JR

尽管现在看起来令人害怕,但这个系统已经存在了30年,现在才达到危机点,这多少让人感到一丝温暖。 我曾经维护过一个有数以万计下载量的开源项目(这些下载量 presumably 都是开发者的机器或者网络服务器,所以即使是很小的数量也很有价值),但我从未收到过恶意的pull request,或者有人试图用贿赂安装恶意软件,或者有足够努力的钓鱼尝试引起我的注意。 这告诉我,真正从事犯罪活动的人并不多。这就像你在酒吧的洗手间里掉了钱包,回来发现它还在那里。

完整原文
PX

> 不仅常见,几乎在所有情况下,人们都会通过在生产机器上运行`pip install`来部署Python程序。 这可能是一个Python文化问题;可能是Python作为“容易招聘的”,经理友好的,最低共同标准的blub语言的标志;可能是源于解释型语言的便利性带来的风险……但在当今这个时代,这真是令人遗憾。 实际上,做到更好并不难。如果你现在还在这么做,那么你在开发和生产环境中都错过了可重复的环境。至少自动生成一个Nix包吧!你甚至不需要发布任何制品,但至少可以确保这个东西在一个沙箱中构建,或者通过SSH将整个闭包扔过去。 从Python项目中获得一个Docker镜像也不是那么难。 整个开发团队只需要一个有平台意识的人就可以实现这一点。 Wha…

完整原文
IM

virtualenv默认情况下不是可移动的,那么你还有其他方式来部署Python项目吗? 你可以称之为懒惰,但Python生态系统从未真正解决过这个问题。唯一合理的答案就是使用Docker,这基本上等于承认Python社区什么都没做。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。