OpenLDAP是一款开放源代码的轻量级目录访问协议(LDAP)实现。 OpenLDAP在处理Kerberos Bind请求时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。 OpenLDAP代码的servers/slapd/kerberos.c文件中的krbv4_ldap_auth函数存在缓冲区溢出漏洞,该函数处理指定了LDAP_AUTH_KRBV41认证方式的LDAP bind请求,cred变量包含有指向客户端所发送Kerberos认证数据的指针。由于在将其拷贝到栈上固定大小缓冲区之前没有检查数据长度,因此攻击者可以通过发送大于1250字节的bind请求触发溢出,导致执行任意指令。漏洞代码如下: krbv4_ldap_auth( Backend *be, struct berval *cred, AUTH_DAT *ad ) { KTEXT_ST k; KTEXT ktxt = &k; char instance[INST_SZ]; int err; Debug( LDAP_DEBUG_TRACE, "=> kerberosv4_ldap_auth\n", 0, 0, 0 ); AC_MEMCPY( ktxt->dat, cred->bv_val, cred->bv_len ); ktxt->length = cred->bv_len; 请注意必须以"--enable-kbind"选项编译了OpenLDAP才可能存在这个漏洞 OpenLDAP OpenLDAP <= 2.4.3 目前厂商还没有提供补丁或者升级程序 SEBUG建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href="http://www.openldap.org/" target="_blank">http://www.openldap.org/</a>
OpenLDAP是一款开放源代码的轻量级目录访问协议(LDAP)实现。 OpenLDAP在处理Kerberos Bind请求时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。 OpenLDAP代码的servers/slapd/kerberos.c文件中的krbv4_ldap_auth函数存在缓冲区溢出漏洞,该函数处理指定了LDAP_AUTH_KRBV41认证方式的LDAP bind请求,cred变量包含有指向客户端所发送Kerberos认证数据的指针。由于在将其拷贝到栈上固定大小缓冲区之前没有检查数据长度,因此攻击者可以通过发送大于1250字节的bind请求触发溢出,导致执行任意指令。漏洞代码如下: krbv4_ldap_auth( Backend *be, struct berval *cred, AUTH_DAT *ad ) { KTEXT_ST k; KTEXT ktxt = &k; char instance[INST_SZ]; int err; Debug( LDAP_DEBUG_TRACE, "=> kerberosv4_ldap_auth\n", 0, 0, 0 ); AC_MEMCPY( ktxt->dat, cred->bv_val, cred->bv_len ); ktxt->length = cred->bv_len; 请注意必须以"--enable-kbind"选项编译了OpenLDAP才可能存在这个漏洞 OpenLDAP OpenLDAP <= 2.4.3 目前厂商还没有提供补丁或者升级程序 SEBUG建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href="http://www.openldap.org/" target="_blank">http://www.openldap.org/</a>