【问题标题】:Insecure dependency with Inline::PythonInline::Python 的不安全依赖
【发布时间】:2014-05-30 19:28:06
【问题描述】:

-T 模式下运行Inline::Python 时,如何解释此编译时错误消息?

在 /usr/local/lib/perl/5.14.2/Inline/Python.pm 第 193 行使用 -T 开关运行时打开不安全的依赖项。

第 193 行是 Inline::Python 打开 $o->{API}{location} 的位置,我认为它是“内联目录”。

当然,我已经使用了所需的选项:

use constant _INLINE_DIR_ => '/var/myapp/inline';
use Inline Config => UNTAINT         => 1,
                     NO_UNTAINT_WARN => 1,
                     DIRECTORY       => _INLINE_DIR_;

我已经确保/var/myapp/inline 和其中的所有内容都可以被每个人写入,显然包括root 和应用程序在运行时被setuid'ed 的用户。

同样的脚本在我的计算机上运行没有问题,无论我是否以 root 身份启动它,运行 Inline 0.50 Inline::Python 0.43,但是当我尝试在使用相同的服务器上运行它时给我这个错误Inline::Python 的版本和 Inline 的 0.49 或 0.55 版本。

【问题讨论】:

  • 当你说 /var/myapp/inline 是每个人都可以写时,实际的权限是什么?如果它是世界(或者甚至只是组)可写的,Taint 可能会将其视为不安全的依赖项。

标签: perl taint


【解决方案1】:

由于这在不同的环境中有所不同,我敢打赌,InlineInline::Python 在执行UNTAINT 配置参数请求的步骤之前正在读取一个环境变量。

(与评论相反,我认为文件权限不会导致此消息,只是对命令行参数或环境变量的依赖不安全)

鉴于此,我将通过强制清除环境然后仅添加您知道需要的那些环境变量来启动您的脚本:

%ENV = ();
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin';  # Or whatever's appropriate
$ENV{'PYTHONPATH'} = '/usr/local/lib/python';   # Optional, if appropriate
# ... etc ...

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 2015-07-24
    • 1970-01-01
    • 2021-01-29
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    相关资源
    最近更新 更多