悟空云课堂 | 代码安全第十二期:LDAP注入漏洞
该栏目为中科天齐全新规划的悟空云课堂,旨在科普软件安全相关知识,助力企业有效防范软件安全漏洞,提升网络安全防护能力。本期主题为LDAP注入漏洞的相关介绍。
一、什么是LDAP注入漏洞?
LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,提供访问目录数据库方法的服务和协议,常用于与目录数据库组成目录服务。其中目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,不适于存储修改频繁的数据。
类似以下的信息适合储存在目录中:
· 企业员工信息,如姓名、电话、邮箱等;
· 公用证书和安全密钥;
· 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、购买时间等。
LDAP注入漏洞是指程序使用来自上游组件的受外部影响的输入来构造LDAP查询的全部或部分,没有过滤或不正确地过滤了输入字符串中含有的一些特殊字符,导致在将其发送到下游组件时修改了原本LDAP的查询结构。LDAP具有特定的查询结构,并具有特定的语法,来对特定目录进行遍历,LDAP注入攻击和SQL注入攻击类似,利用用户引入的参数生成LDAP查询,由于部分参数没有适当的过滤,因此攻击者可以注入恶意代码以造成恶意攻击。
二、LDAP注入漏洞的构成条件有哪些?
满足以下条件,就构成了一个LDAP注入的安全漏洞:
1、数据从不可靠来源(包括但不局限于不可靠用户的输入信息或是不可靠用户可能更改的文件)进入应用程序;
2、该数据未经过滤或不正确地过滤特殊字符后,直接使用进行LDAP查询。
三、LDAP注入漏洞会造成哪些后果?
关键词:执行未经授权的代码或命令; 读取应用数据; 修改应用数据
· 攻击者可能输入更改LDAP查询的恶意数据,从而允许执行非预期的命令或代码,允许读取或修改敏感数据,或导致其他非预期行为。
四、LDAP注入漏洞的防范和修补方法有哪些?
1、输入验证。
使用框架提供的功能来进行正确的验证,过滤或转义用户输入的数据。
五、LDAP注入漏洞样例:
用Wukong软件检测上述程序代码,则可以发现代码中存在着“LDAP注入”缺陷,从跟踪路径中可以分析出数据的污染源以及数据流向,如下图:
LDAP注入在CWE中被编号为CWE-90: Improper Neutralization of Special Elements used in an LDAPQuery ('LDAP Injection')