Shellshock Bash错误的根本原因

Shellshock Bash错误的根本原因,bash,shellshock-bash-bug,Bash,Shellshock Bash Bug,我不知道诸如CVE-2014-6271之类的shellshock的根本原因。 据我所知,如果应用程序数据包头中有恶意代码,就会发生shellshock 例如,如果HTTP头包含HTTP头[Cookie]=(){:;};ping 192.168.0.1然后ping到192.168.0.1 但是,HTTP头只需要设置一组字符串变量。为什么Apache会运行bash脚本 Apache HTTP头解析器是否由bash shell脚本组成? 谢谢!:) C的system()函数用于执行任意外部命令,将其参

我不知道诸如CVE-2014-6271之类的shellshock的根本原因。
据我所知,如果应用程序数据包头中有恶意代码,就会发生shellshock
例如,如果HTTP头包含HTTP头[Cookie]=(){:;};ping 192.168.0.1然后ping到192.168.0.1
但是,HTTP头只需要设置一组字符串变量。为什么Apache会运行bash脚本
Apache HTTP头解析器是否由bash shell脚本组成?
谢谢!:)

C的
system()
函数用于执行任意外部命令,将其参数传递给
/bin/sh
进行解析。(这由POSIX指定。)

在Linux系统上,
/bin/sh
通常是指向
/bin/bash
的符号链接


如果Apache通过
system()
调用任何外部程序,并且攻击者能够将恶意代码插入任何环境变量中,则该程序将被传递到
/bin/bash

bash会很高兴地计算任何看起来像导出函数的变量(以
(){
)作为函数导入。不会在函数定义的末尾停止。这意味着bash正确解析了头?好的,非常感谢:)@JohnDoyle:What“header”?Bash解析某些环境变量的内容。@KeithThompson好的,所以apache将解析HTTP头,然后通过Bash设置环境。我明白了