悟空云課堂丨代碼安全第四十四期:使用硬編碼的密碼漏洞
中科天齊傾情打造《悟空云課堂》旨在科普軟件安全相關(guān)知識,助力企業(yè)有效防范軟件安全漏洞,提升網(wǎng)絡(luò)安全防護(hù)能力。本期主題為空指針解引用漏洞的相關(guān)介紹。
一、什么是使用硬編碼的密碼?
軟件包含一個硬編碼的密碼,該密碼用于自己的入站身份驗證或與外部組件的出站通信。
這種處理方式一方面不易于程序維護(hù),在代碼投入使用后,除非對軟件進(jìn)行修補(bǔ),否則無法修改密碼。另一方面會削弱系統(tǒng)安全性,硬編碼密碼意味著擁有代碼權(quán)限的人都可以查看到密碼,可以使用密碼訪問一些不具有權(quán)限的系統(tǒng),更嚴(yán)重的是如果攻擊者能夠訪問應(yīng)用程序的字節(jié)碼,利用一些反編譯工具就能閱讀到代碼,可以輕易獲得密碼。
二、使用硬編碼的密碼漏洞的構(gòu)成條件有哪些?
程序中采用硬編碼方式處理密碼。
三、使用硬編碼的密碼漏洞會造成哪些后果?
如果使用硬編碼的密碼,攻擊者將很可能通過該帳戶獲得訪問權(quán)限。
四、使用硬編碼的密碼漏洞的防范和修補(bǔ)方法有哪些?
對于入站身份驗證:對密碼應(yīng)用強(qiáng)單向散列,并將這些散列存儲在具有適當(dāng)訪問控制的配置文件或數(shù)據(jù)庫中。
對于出站身份驗證:將密碼存儲在代碼之外的一個經(jīng)過嚴(yán)格保護(hù)的、加密的配置文件或數(shù)據(jù)庫中,該配置文件或數(shù)據(jù)庫不會被所有外部人員訪問,包括同一系統(tǒng)上的其他本地用戶。
五、使用硬編碼的密碼漏洞的防范和修補(bǔ)方法有哪些?
以下代碼使用硬編碼的密碼連接到數(shù)據(jù)庫:
public static void main(String[] args)
{
CreateDB db = new CreateDB();
Connection connection = null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch (Exception e)
{
System.out.println("Failed to load DB driver");
e.printStackTrace();
}
try
{
connection = DriverManager
.getConnection("jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:/webgoat.mdb;PWD=webgoat","webgoat", "webgoat");
db.makeDB(connection);
}
catch (Exception e)
{
System.out.println("Driver Manager failed!");e.printStackTrace();
}
……
使用Wukong軟件代碼安全檢測修復(fù)系統(tǒng)檢測上述程序代碼,則可以發(fā)現(xiàn)代碼中存在著“使用硬編碼的密碼”的安全漏洞。請見下圖:
![]()
使用硬編碼的密碼在CWE中被編號為:CWE-259:Use of Hard-coded Password
關(guān)鍵詞標(biāo)簽:悟空云課堂 硬編碼密碼漏洞 身份驗證 代碼漏洞檢測 軟件安全測試
原文鏈接:https://www.woocoom.com/b021.html?id=e48cbcc167134db98f11878b2d957eae
