【问题标题】:ruby exec command injection (protection!)ruby exec 命令注入(保护!)
【发布时间】:2014-07-31 02:53:42
【问题描述】:

我正在一个项目上运行刹车器 gem。它抱怨一些正在运行的 exec 命令。

当前代码:

Process.fork {exec "pdftk #{uncrypted_pdf_file} output #{pdf_file} owner_pw #{password} allow printing"}

Brakeman 抱怨说存在命令注入的可能性。例如,我尝试了几种不同的调用 exec 组合:

Process.fork {exec "pdftk", uncrypted_pdf_file, " output #{pdf_file} ", "owner_pw #{password}", "allow printing"}

但正如您所料,每个参数只是依次传递给 pdftk,因此它会失败。

有没有办法一次性调用命令并防止命令注入。在我们的特定情况下,无论如何我们控制所有变量都足够安全,但最好知道正确的方法。

【问题讨论】:

    标签: ruby security exec brakeman


    【解决方案1】:

    您需要分别传递每个参数:

    exec "pdftk", uncrypted_pdf_file, "output", pdf_file, "owner_pw", password, "allow", "printing"
    

    您可能还需要提供pdftk 的完整路径。

    【讨论】:

    • 谢谢,在我的情况下,我不需要到pdftk 的完整路径,尽管我猜这仅仅是因为它位于进程运行的用户路径中。无论如何,谢谢 Gumbo :)
    猜你喜欢
    • 2019-05-23
    • 2022-01-15
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2015-08-20
    • 2013-06-22
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多