涉及程序: BitKeeper 3.0.x 描述: BitKeeper远程Shell 命令执行/本地缺陷。 详细: BitKeeper是一款源代码管理软件。BitKeeper中存在一个shell参数分析缺陷,能导致远程攻击者在BitKeeper系统上执行任意shell命令。 1.远程命令执行 当BitKeeper打开端口并接受到连接请求时,能在daemon模式下运行。BitKeeper允许远程用户通过Web界面访问项目资源。它调用外部diff二进制参数到shell -c选项,而这些参数容易受到shell metacharacter注入攻击。 2.本地开发竞争条件 第二个缺陷同样是在调用外部程序时,在临时文件内产生的。 strace输出的块: 20495 getpid() = 20495 20495 lstat(\"/tmp/foo.c-1.1-20495\", 0xbfffae9c) = -1 ENOENT (No such file or directory) 20495 lstat(\"/tmp\", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=16384, ...}) = 0 20495 open(\"/tmp/foo.c-1.1-20495\", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 8 在BitKeeper对文件进行stats操作和在文件打开之前产生竞争条件漏洞。 如果BitKeeper在daemon模式下运行,并接收到进入请求,远程攻击者便能够在系统上执行任意命令。本地攻击者能访问导致控制程序停止运行的临时文件。 攻击方法: 如果BitKeeper在stand-alone daemon模式下运行,链接: http://somehost.com:port/diffs/foo.c@%27;echo%20%3Eiwashere%27?nav=index.html|src/|hist/foo.c 将在root目录下创立文件名为“iwashere”的文件。 解决方案: 目前还没有厂商还没有提供补丁或者升级程序,建议用户随时关注厂商站点: http://www.bitkeeper.com/