悟空云課堂 | 代碼安全第十二期:LDAP注入漏洞

該欄目為中科天齊全新規(guī)劃的悟空云課堂,旨在科普軟件安全相關(guān)知識,助力企業(yè)有效防范軟件安全漏洞,提升網(wǎng)絡(luò)安全防護能力。本期主題為LDAP注入漏洞的相關(guān)介紹。
一、什么是LDAP注入漏洞?
LDAP是輕量目錄訪問協(xié)議(LightweightDirectory Access Protocol)的縮寫,提供訪問目錄數(shù)據(jù)庫方法的服務和協(xié)議,常用于與目錄數(shù)據(jù)庫組成目錄服務。其中目錄是一個為查詢、瀏覽和搜索而優(yōu)化的專業(yè)分布式數(shù)據(jù)庫,它呈樹狀結(jié)構(gòu)組織數(shù)據(jù),就好象Linux/Unix系統(tǒng)中的文件目錄一樣。目錄數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫不同,不適于存儲修改頻繁的數(shù)據(jù)。
類似以下的信息適合儲存在目錄中:
· 企業(yè)員工信息,如姓名、電話、郵箱等;
· 公用證書和安全密鑰;
· 公司的物理設(shè)備信息,如服務器,它的IP地址、存放位置、廠商、購買時間等。
LDAP注入漏洞是指程序使用來自上游組件的受外部影響的輸入來構(gòu)造LDAP查詢的全部或部分,沒有過濾或不正確地過濾了輸入字符串中含有的一些特殊字符,導致在將其發(fā)送到下游組件時修改了原本LDAP的查詢結(jié)構(gòu)。LDAP具有特定的查詢結(jié)構(gòu),并具有特定的語法,來對特定目錄進行遍歷,LDAP注入攻擊和SQL注入攻擊類似,利用用戶引入的參數(shù)生成LDAP查詢,由于部分參數(shù)沒有適當?shù)倪^濾,因此攻擊者可以注入惡意代碼以造成惡意攻擊。
二、LDAP注入漏洞的構(gòu)成條件有哪些?
滿足以下條件,就構(gòu)成了一個LDAP注入的安全漏洞:
1、數(shù)據(jù)從不可靠來源(包括但不局限于不可靠用戶的輸入信息或是不可靠用戶可能更改的文件)進入應用程序;
2、該數(shù)據(jù)未經(jīng)過濾或不正確地過濾特殊字符后,直接使用進行LDAP查詢。
三、LDAP注入漏洞會造成哪些后果?
關(guān)鍵詞:執(zhí)行未經(jīng)授權(quán)的代碼或命令; 讀取應用數(shù)據(jù); 修改應用數(shù)據(jù)
· 攻擊者可能輸入更改LDAP查詢的惡意數(shù)據(jù),從而允許執(zhí)行非預期的命令或代碼,允許讀取或修改敏感數(shù)據(jù),或?qū)е缕渌穷A期行為。
四、LDAP注入漏洞的防范和修補方法有哪些?
1、輸入驗證。
使用框架提供的功能來進行正確的驗證,過濾或轉(zhuǎn)義用戶輸入的數(shù)據(jù)。
五、LDAP注入漏洞樣例:

用Wukong軟件檢測上述程序代碼,則可以發(fā)現(xiàn)代碼中存在著“LDAP注入”缺陷,從跟蹤路徑中可以分析出數(shù)據(jù)的污染源以及數(shù)據(jù)流向,如下圖:

LDAP注入在CWE中被編號為CWE-90: Improper Neutralization of Special Elements used in an LDAPQuery ('LDAP Injection')
