我很难找到这个问题的权威答案。 Perl 5 解析器可以安全地解析任意代码吗?忽略运行或执行代码的影响,解析器本身是否安全?
解析器中允许执行任意代码的漏洞是否会被视为安全漏洞或错误?
似乎有一些票证被安全列表拒绝,并因解析器特定的错误而被推送到一般,
例如,a "Keeper of the Pumpkin" Tony Cook says,
I think in general we consider such issues as not a security concern, after all, if an attacker can provide code to the parser, you're already vulnerable.
具体来说,我试图澄清这两种威胁模型,
- Safe 假设 Perl 能够正确生成黑名单/白名单操作码树
- Perl (p5p) 假设所有解析都是通过任意代码执行的全部功能完成的,并且如果提供恶意代码,您“已经容易受到攻击”
问题
Would be interesting to know why you ask. Info on that could get you better answers.
如果 Perl 解析器无法安全地解析代码,那么我相信没有什么可以保护任意 Perl。因此,Safe.pm 和 OpCode.pm 的全部目的是没有意义的,因为您无法安全地生成要修剪的操作码树(黑名单操作码)。如果是这样,文档中的任何地方都不清楚,并且对此类事情保密是一个非常糟糕的主意。点名并开放软件进行利用将是危险的。
最佳答案
Is the Perl 5 Parser safe to parse arbitrary code?
没有。
BEGIN { print "This runs at parse time.\n" }
也无法禁用此行为,因为在解析时运行的代码可能会执行解析以下代码所需的操作,例如安装源过滤器或添加关键字。
关于security - Perl 解析器可以安全地解析任意代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932576/