假冒包下载大约5000次从官方的Python库包含秘密被感染的机器上安装cryptomining软件的代码,安全研究人员发现。
恶意包,PyPI上可用存储库,在许多情况下使用名字经常模仿合法和广泛使用的包可用,Ax沙玛,安全公司Sonatype研究员报道。所谓受害攻击成功时目标不小心误输入一个名称,如输入“mplatlib”或“maratlib”而不是合法的和受欢迎的包matplotlib。
Sharma说,他发现六包安装cryptomining软件,会使用被感染的计算机的资源开采cryptocurrency和存款在攻击者的钱包。所有六个被某人使用PyPI用户名发表nedog123早在4月,在某些情况下。包,下载数字是:
- maratlib: 2371
- maratlib1: 379
- matplatlib-plus: 913
- mllearnlib: 305
- mplatlib: 318
- learninglib: 626
中包含的恶意代码的设置。py文件每个包的。它会导致被感染的电脑使用ubqminer或霸王龙cryptominer矿山数字硬币和存款在以下地址:0 x510aec7f266557b7de753231820571b13eb31b57。
PyPI一直一个经常虐待 存储库自2016年大学生骗17000程序员粗略的脚本运行他。不是PyPI滥用任何超过其他存储库是最后一年,包下载了成千上万次RubyGems安装恶意软件,它试图拦截比特币支付。两年之前,有人后门NPM主办的200万用户代码库。Sonatype已经跟踪超过12000恶意NPM包自2019年以来。
人们很容易认为,相当多的下载数在这些事件是自动完成,从不导致电脑被感染,但上面的大学生的实验与认为否则。他假冒Python模块执行了超过45000次超过17000个独立的领域,一些属于我们政府和军事组织。这种滥交从来不是一个好主意,但它应该是严格禁止的。
76年读者评论
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
不被人发现的缺陷检查代码?它更像是:时间可能不适合你的日程安排。
确实。我一直使用OSS持续集成工具,考虑到企业版。我注意到主要的回购,从源代码编译时,将在几十个上游项目。所以,我坦率地问他们是如何验证的安全缓解供应链的上游回购的攻击。他们没有回答电话和他们头上开发商尚未发出响应。
他们的商业模式一直处于,出售。
不被人发现的缺陷检查代码?它更像是:时间可能不适合你的日程安排。
随机微笑你不认识的人是令人毛骨悚然的。
但我的观点是,开源本身没有任何意义是与任何一致性审查,任何超过一个可以假定封闭源代码审查。这是一个人的坏习惯,假设开源是神奇地安全纯粹由于可用的代码检查,使假设很多人实际上是在做杂务。
微笑是人类最基本的非言语线索之一。它通常的意思是“我没有敌对意图”。
你的更广泛的观点是有道理的,但细微差别消失在原来的总结,我只是打电话。
我陈述显而易见的事实,但更有可能的是开源软件正在检查,因为代码提供给更多的人,但是多长时间,以及如何严格做的是未定义的,正如你指出的那样,你不能假设它是更安全或可靠的因为这个原因。
这个问题看起来将变得越来越迫切需要解决。
真的,但考虑到攻击(在输错的包),更好的问题是你是否检查了开源包吗?
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
我同意你的现状的总结,尤其是作为一个维护者PyPI上一些比较流行的包,缺乏企业花钱支持他们的供应链,但我认为你的结论是有点宿命论的。我们不会解决这个问题与当前模型,但我们可以改变游戏大大:Python包装社区已经调查需要更换什么设置。py和不可执行(如pyproject.toml),我们可以得到很多里程沙盒和检查,有不同程度的疼痛。
例如,它会有趣的探索为包有不同的安装需求,使用exec, ctypes或子流程,使用沙盒或类似的框架在MacOS, Windows, Linux等所以你可以“pip安装foo”任何不想访问任意文件,但需要一些额外的批准允许文件系统访问以外的项目目录或运行其他进程。我想知道是否会有一些类型的污染机制,基本上你需要声明在包清单所需的特权和使用沙箱政策声明只允许访问,与一些社会努力迁移现有的包。
我绝对不是说很容易,但我想离开这的唯一方式是改变模型减少不平衡。它就像我们没有如何减少汽车事故,告诉大家小心开车,而是立法安全玻璃时,更好的刹车,安全气囊等。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
我希望有更多的标准库。c++、Java和有良好的和丰富的。它违反了javascript精神但是它会帮助(我认为)。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
完全正确。我参与了公司的销售的代码到财富500强公司。iirc,大公司雇佣了一家保安公司来审计我们每使用图书馆。所以我列出了每一个图书馆,递归地,在我们的代码库。原来我们有大约100库直接相关,但递归数超过了10000。作为一个创业公司没有办法我们会看,或支付人,看这一切。你需要丰富的公司(买方信贷做作为最佳实践)。
但是每个人都说“检查每一个图书馆”实际上从未试图这样做,或者他们在投资公司工作。并不是每个人都编码在这种情况下。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
我同意你的现状的总结,尤其是作为一个维护者PyPI上一些比较流行的包,缺乏企业花钱支持他们的供应链,但我认为你的结论是有点宿命论的。我们不会解决这个问题与当前模型,但我们可以改变游戏大大:Python包装社区已经调查需要更换什么设置。py和不可执行(如pyproject.toml),我们可以得到很多里程沙盒和检查,有不同程度的疼痛。
例如,它会有趣的探索为包有不同的安装需求,使用exec, ctypes或子流程,使用沙盒或类似的框架在MacOS, Windows, Linux等所以你可以“pip安装foo”任何不想访问任意文件,但需要一些额外的批准允许文件系统访问以外的项目目录或运行其他进程。我想知道是否会有一些类型的污染机制,基本上你需要声明在包清单所需的特权和使用沙箱政策声明只允许访问,与一些社会努力迁移现有的包。
我绝对不是说很容易,但我想离开这的唯一方式是改变模型减少不平衡。它就像我们没有如何减少汽车事故,告诉大家小心开车,而是立法安全玻璃时,更好的刹车,安全气囊等。
,这将有助于确定但它仍然使代码库本身容易受到太阳风风格的攻击。如果开发人员安装一个有毒的图书馆和推进到生产网络服务器,它仍然是一个巨大的问题,即使是沙箱的代码。它会有http访问和连接到数据库服务器。游戏结束。这将是伟大的阻止更多的驱动器加密攻击但我不确定我们如何真正解决这个问题没有严重的生产力。
也许有些批准和审查白名单的库和版本好吗?这很棘手和不愉快。
随机微笑你不认识的人是令人毛骨悚然的。
经过他们的雷达下的东西的机会是相当高的,因为他们不能调查每个配方改变或小的东西,小版本后,大部分的食谱与上游(这引入了另一个问题,如无关。整个gentoo崩溃)。
我想最终会有一个积极的* nix“杀毒”由于复杂的工具链周围包及其来源。
编辑:我喜欢另一个程序系统中引入更多的漏洞,但正如上面所讨论的,向量像毒库是非常难以管理,需要主动抵御他们的东西。
是的,这是一个经常评论我的那些经常传教一块特定的开源软件和妖魔化另一个,因为它的闭源。
没有人完全检查所有运行的代码。只是没有时间。所以大多数,你以为别人——软件通常有一个“有人问题吧”字段。闭源,通过设计的假设有人在公司负责通过代码,公司负责(以某种方式)如果很严重。与开源,你只是假设别人了。问题是大多数人都认为它,所以它通常不看着,除了那些积极contrinuting,可糟糕的演员(见这个故事从4月当两个大学的研究人员试图故意恶意代码提交的一篇论文)。
结果是,一些非常大的重要的代码库别读了许多来源——heartbleed了有多久?(26个月!)
谁的钩吗?没有一个人。因为在很多情况下并不容易知道如果是故意或意外的,或在某些情况下贡献代码。没有人负责,除了你自己,这意味着你必须阅读所有的代码,和没有人有时间。
不被人发现的缺陷检查代码?它更像是:时间可能不适合你的日程安排。
完全正确。这就是为什么药用药需要一段时间(或拒绝)批准。
标记的特定版本由[名字]“审查”,在[名字]是一位著名的代码检查器的名字仔细检查最后的审查以后做的所有更改。
好检查员将最终建立声誉,甚至可能职业生涯。
这句话是意想不到的。你提议的法律处罚吗?消费者对黑客或包?
或者你只是说应该有组织的政策反对使用OSS的包回购?或者每一行代码的包需要检查吗?
你的意思是,“没有人愿意花时间去做它”。这里的“一”将是您或您的组织,等等。我觉得这是与现代软件开发的一大缺陷。每个人都是赛车获得最小可行产品的尽快出门。然后投降冲击漏洞不断出现。
我现在就打老人牌。我把我的牙齿在c / c++ / asm的一天。如果你想重用代码必须在手动输入或剪切/粘贴。我想给你一个更强烈的代码中发生了什么。类似于如何更好地抓住一个问题如果你写出来,而不是让它在你的脑海中。但我理解,那些日子已经的马和马车。我承认我有一点文化冲击几年前在一个Android开发类,我们展示了如何使用依赖注入(要求)。我完全被惊呆了;看都没看就自动从互联网抓取代码,编译成我的项目吗? !疯了。 I can only assume that kind of use of third party code is a big part of the modern day CS teaching.
就本文而言,这些都是由于拼写错误。这似乎只能治愈人类层面上缺乏某种智能感知表明正确的回购。
例和点,我知道C体面但如果有人做了类似的东西 http://www.underhanded-c.org/ 我相信我不会抓一些恶意与任何粗略的检查。在一些例子,我知道必须在那里,因为它是一个比赛,但是我没有弄明白,直到他们解释道。
恶意代码嵌入到文件中setup . py很多人会跳过或者只是快速浏览如果他们检查什么代码。这几乎是400行设置的东西。什么有趣的。事实上,恶意代码可能是几行导入语句。谁有时间看看这些?对任何人来说都很难捕捉它在做代码评审。
几年前,Perl的CPAN库被发现有一个积极的利用。利用不在模块代码,但在测试代码运行安装。疯狂的是,测试代码并没有改变,但测试代码下载一个文件从一个远程服务器。最初,该文件不是一个利用。然而,谁接管服务器更改该文件做开发。
只不过是“开源”,每个人都可以看到代码不够好。不是所有的开发人员都能花时间和费用检查行代码。
不被人发现的缺陷检查代码?它更像是:时间可能不适合你的日程安排。
审计已经在这里——他们只是不均匀分布?
官方的存储库的维护者可能不允许来自不受信任的程序员。不可信的程序员可能导致另一个高风险的存储库。
程序员如何成为值得信赖的,我把读者作为练习,原则上这看起来简单,但如果违反开源精神。
在我看来像Python是一种足够高风险,广泛使用的语言,毫无理由,任何旧雅虎应该能够受害后包。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
我同意你的现状的总结,尤其是作为一个维护者PyPI上一些比较流行的包,缺乏企业花钱支持他们的供应链,但我认为你的结论是有点宿命论的。我们不会解决这个问题与当前模型,但我们可以改变游戏大大:Python包装社区已经调查需要更换什么设置。py和不可执行(如pyproject.toml),我们可以得到很多里程沙盒和检查,有不同程度的疼痛。
例如,它会有趣的探索为包有不同的安装需求,使用exec, ctypes或子流程,使用沙盒或类似的框架在MacOS, Windows, Linux等所以你可以“pip安装foo”任何不想访问任意文件,但需要一些额外的批准允许文件系统访问以外的项目目录或运行其他进程。我想知道是否会有一些类型的污染机制,基本上你需要声明在包清单所需的特权和使用沙箱政策声明只允许访问,与一些社会努力迁移现有的包。
我绝对不是说很容易,但我想离开这的唯一方式是改变模型减少不平衡。它就像我们没有如何减少汽车事故,告诉大家小心开车,而是立法安全玻璃时,更好的刹车,安全气囊等。
,这将有助于确定但它仍然使代码库本身容易受到太阳风风格的攻击。如果开发人员安装一个有毒的图书馆和推进到生产网络服务器,它仍然是一个巨大的问题,即使是沙箱的代码。它会有http访问和连接到数据库服务器。游戏结束。这将是伟大的阻止更多的驱动器加密攻击但我不确定我们如何真正解决这个问题没有严重的生产力。
也许有些批准和审查白名单的库和版本好吗?这很棘手和不愉快。
肯定不是完美,但是会使它更容易为后卫如果,例如,每一个库安装有一个清单说是否需要网络或文件系统访问,如何广泛所以你更多地关注那些能做,特别是回顾图书馆改变时的访问级别要求作为新版本的一部分。即使过程本身需要网络请求,这并不一定意味着在这个过程中使用的所有100库。它会特别有趣如果你能下来范围水平,它可以被用来产生更多微妙的系统级沙盒工具或代理政策(“我需要网络访问但只有端口443 * .googleapis.com”或“我需要文件系统访问,但只有阅读x509 CA存储和配置文件”)。
SolarWinds几乎是最难防御的情况下,因为它完全破坏和所需的软件类异常广泛的级别的访问。我肯定会想考虑你如何停止,但我认为还是有很多有价值的措施可能不会阻止,但更容易抓住而阻塞容易像云凭证/加密钱包驾车袭击。
如何?这些包的名字有点迟钝。和他们都是托管在一个“可信的”库网站。
什么功能我可以让我的客户将从下载这些腐败包“禁止”?他们是无符号吗?(有多少合法包签署吗?)严重,如何配置我的电脑(或π)所以这内容不是不小心推倒?
我需要一个苹果控制图书馆“商店”?:- p
在VS(代码)我使用诸如/ nuget /下载库和有时附件(代码)。我读了出版商和看是否签署声明。我倾向于相信那些来自微软和Newtonsoft——但其他人我从来没听说过(esp扩展)的代码。
和NPM,我下载一个“看似可信”包。但这可能之后添加一个新的依赖。npm安装婴儿。可以拉下,我甚至不知道(是的,我们经常审查npm审计的结果)。
真的吗?因为我认为它看起来更像Visual Basic !
免费公共包经理是一件好事,但是他们有风险的企业,像任何其他软件你从网上下载,需要照顾。
真的吗?因为我认为它看起来更像Visual Basic !
我想知道为什么1不能被一个质数。',排除1的定义似乎是相当武断的。
编辑:维基百科确实有在这个节!
最早期的希腊人甚至不认为1是一个数字,[36][37],这样他们可以不考虑其根本。一些数学家从这次也被认为是质数是奇数的细分,所以他们还没有考虑2 '。然而,欧几里得和大多数其他的希腊数学家认为2 '。中世纪伊斯兰数学家主要跟随希腊人在观看1不是一个数字。[36]在中世纪和文艺复兴时期的数学家开始治疗1作为一个数字,其中包括第一个质数。[38]在18世纪中叶基督教哥德巴赫上市1与欧拉'在他的信件;然而,欧拉自己没有考虑1 '。[39]在19世纪许多数学家们仍然认为1 '[40]和列表的质数,包括1继续在最近的1956年出版。[41][42]
如果素数的定义改为叫1 ',许多语句涉及质数需要改更尴尬。例如,算术基本定理需要描述的分解成素数大于1,因为每一个数字都可以分解成多个具有不同拷贝数1。该方法[40]同样,埃拉托斯特尼筛法不会正常工作,如果处理1 ',因为这将消除所有1的倍数(也就是说,所有其他数字)和输出只有单一的1号。[42]其他更多的技术属性的质数也不持有数1:例如,欧拉totient函数的公式或因子之和函数是不同的素数比为1。[43]到了20世纪初,数学家开始同意,1不应列为',而是在自己的特殊类别为“单位”[40]。
我们只使用特定的版本号和主机自己重要的事情在我们的构建系统。真的,它不会阻止恶意代码进入供应链,但是如果我们总是一年在断开连接的副本,我们不太可能被病人零。
这听起来像一个很好的理由为某人开始一个开源的审计小组。
人会认为的更高的预算和更长的时间框架开发的一个项目,当一个企业也占所有内部的仔细检查和第三方组件。
但是这个想法是错的。
我们只使用特定的版本号和主机自己重要的事情在我们的构建系统。真的,它不会阻止恶意代码进入供应链,但是如果我们总是一年在断开连接的副本,我们不太可能被病人零。
我直言“任何依赖自动下载并运行它,因为它要求”,而不是“失败对美元的依赖不是安装在本地环境”或者“失败在本地网络不依赖美元回购”。这里发生了什么,对吧?耶稣看起来懒惰和愚蠢的。
至少你可以有一个短绒进口白名单什么的,对吧?
我知道即使是我自己,有时候我想做一个实验,看看如果可以工作,我需要做的很快,我不会需要天审查代码只是为了一个30分钟的努力是否会做我想做的事。
这种类型的问题是目前结构不会消失。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
我同意你的现状的总结,尤其是作为一个维护者PyPI上一些比较流行的包,缺乏企业花钱支持他们的供应链,但我认为你的结论是有点宿命论的。我们不会解决这个问题与当前模型,但我们可以改变游戏大大:Python包装社区已经调查需要更换什么设置。py和不可执行(如pyproject.toml),我们可以得到很多里程沙盒和检查,有不同程度的疼痛。
例如,它会有趣的探索为包有不同的安装需求,使用exec, ctypes或子流程,使用沙盒或类似的框架在MacOS, Windows, Linux等所以你可以“pip安装foo”任何不想访问任意文件,但需要一些额外的批准允许文件系统访问以外的项目目录或运行其他进程。我想知道是否会有一些类型的污染机制,基本上你需要声明在包清单所需的特权和使用沙箱政策声明只允许访问,与一些社会努力迁移现有的包。
我绝对不是说很容易,但我想离开这的唯一方式是改变模型减少不平衡。它就像我们没有如何减少汽车事故,告诉大家小心开车,而是立法安全玻璃时,更好的刹车,安全气囊等。
让我们不要忘记库不引用一个依赖另一个图书馆,而是一起包在自己的图书馆。
pypi至少应该有两个单独的存储库:一个限于建立包,和一个开放的,用户安装包在自己的风险。默认模式应该访问代码建立了回购,与安装需要一个特定的标志,允许从打开的包库的依赖关系。它不解决问题,但是至少让问题更容易为以盈利组织和为行业创造激励捐赠基金来帮助确保pypi。
短版:我们不会解决这个问题,不是因为我们不知道(审核第三方代码将在您的项目之前,主机而不是你自己的版本,升级时重复),而是因为这样做太大的难度和费用对于大多数组织。
老实说,有多少dev商店,人才,和资源审计他们的第三方代码供应链,尤其是一旦你玩chase-the-dependnecy一路下来吗?我敢打赌,答案是足够接近零,承认没有区别。
第二最好的——从有信誉的销售渠道获取代码,检查你的签名,控制你的版本,只有升级当有理由这样做可以实现的,但除非某人,某个地方,是执行“审计代码”的步骤,你被困在这样的事情发生了。
这听起来像是我们需要一个部门代码的数字公共卫生检查员像目前的公共卫生部门的食品安全,x光设备,和其他人员!
你必须登录或创建一个帐户置评。