悟空云课堂丨代码安全第四十四期:使用硬编码的密码漏洞

261 阅读3分钟

  中科天齐倾情打造《悟空云课堂》旨在科普软件安全相关知识,助力企业有效防范软件安全漏洞,提升网络安全防护能力。本期主题为空指针解引用漏洞的相关介绍。

一、什么是使用硬编码的密码?

  软件包含一个硬编码的密码,该密码用于自己的入站身份验证或与外部组件的出站通信。

  这种处理方式一方面不易于程序维护,在代码投入使用后,除非对软件进行修补,否则无法修改密码。另一方面会削弱系统安全性,硬编码密码意味着拥有代码权限的人都可以查看到密码,可以使用密码访问一些不具有权限的系统,更严重的是如果攻击者能够访问应用程序的字节码,利用一些反编译工具就能阅读到代码,可以轻易获得密码。

二、使用硬编码的密码漏洞的构成条件有哪些?

  程序中采用硬编码方式处理密码。

三、使用硬编码的密码漏洞会造成哪些后果?

  如果使用硬编码的密码,攻击者将很可能通过该帐户获得访问权限。

四、使用硬编码的密码漏洞的防范和修补方法有哪些?

  对于入站身份验证:对密码应用强单向散列,并将这些散列存储在具有适当访问控制的配置文件或数据库中。

  对于出站身份验证:将密码存储在代码之外的一个经过严格保护的、加密的配置文件或数据库中,该配置文件或数据库不会被所有外部人员访问,包括同一系统上的其他本地用户。

五、使用硬编码的密码漏洞的防范和修补方法有哪些?

  以下代码使用硬编码的密码连接到数据库:

  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软件代码安全检测修复系统检测上述程序代码,则可以发现代码中存在着“使用硬编码的密码”的安全漏洞。请见下图:

3.jpg

  使用硬编码的密码在CWE中被编号为:CWE-259:Use of Hard-coded Password

2.jpg

  软件安全 网络安全的最后一道防线

  中科天齐公司是在中科院计算技术研究所的大力推动下

  以中科院计算所国际领先的自主研究成果

  “软件代码漏洞检测修复平台(Wukong悟空)

  为基础组建的高新技术企业

  关键词标签:悟空云课堂 硬编码密码漏洞 身份验证 代码漏洞检测 软件安全测试

  原文链接:www.woocoom.com/b021.html?i…