今天发布的PHP新版本5.3.4,从Changelog来看修补了不少安全漏洞。

其中最引人注意的是这一条:

    Paths with NULL in them (foo\0bar.txt) are now considered as invalid (CVE-2006-7243).

看到时被惊到了,PHP对于这种说不清是PHP的漏洞还是操作系统漏洞 -- 甚至根本只能算是特性的边缘问题 -- 向来都是修复及其缓慢的,而且极善于推卸责任。例如在80sec发的那篇FD继承的文章中提到的问题,03年PHP就收到bug报告了,但他就是硬撑着不肯用apache提供的安全文件操作api,而是自己写一套实现,还老是说这是apache的安全问题,死活拖了足足6年也不肯修复。还有那个php+fastcgi的解析问题也是同样如此,可见PHP是多么劣迹斑斑。
这次PHP也总算是有点动作了,解决了一个遗留的老大难问题(看看那个cve号的日期)。这一次PHP手脚很干净,对所有涉及到文件操作的PHP函数都做了检查,比对strlen(文件名)和收到的文件名变量长度是否一致,从而保证了文件名不会被截断。(参考base_functions.cfile.c
这意味着:从今晚后所有PHP文件操作中,文件名NULL字符截断的问题将被永久性解决了。什么上传截断啊、本地包含截断啊、读文件截断啊之类的统统干掉,因此非常推荐各位PHP用户升级5.3.4。
那么,是否还有其他办法来进行文件截断呢?这个,知者不具言,你懂得。

Comments
Write a Comment