从2款源代码安全审计工具看Hash+Salt的密码保护

原创 2015年02月08日 11:54:19

       信息系统的密码(password)安全总是成为吸引你注意力的网络安全事件,如:某车票网上订票系统的密码被碰库了,从而有几十万人的个人信息被泄露。再如日前网络上由安全分析专家统计的密码使用习惯,“123456”等密码成为人们常用的系统密码。那这些密码为什么能轻易被统计和碰库,还有更加严重的脱库呢?这其中一个原因是软件工程师设计的信息系统的密码存储使用明文,或者是使用不安全的密码保护方式。那如何来保存我们的密码,是加密吗还是杂凑(Hash)?如何更好使用Hash算法呢?那么看一下信息安全通用漏洞类型定义的2个密码存储保护漏洞类型,一个是CWE-759: Use of a One-Way Hash without a Salt,另一个是CWE-760: Use of a One-Way Hash with a Predictable Salt,通过网上查阅这个2个类型漏洞都使用Hash保护密码password的安全漏洞,未使用Salt和使用可预测Salt都会使暴力破解密码更加容易,尤其当Hash算法为低安全算法时(如:MD5),使用Rainbow table可轻易破解密码。
       那用户每日使用的网络信息系统,无论是邮件系统还是论坛,以及电子商务甚至是电子支付系统的密码存储保护如何呢?这个也许只有系统的开发可能会更加清楚,但不断爆出的碰库或者是脱库事件告诉我们,这些系统设计可不一定安全,在使用时你一定要切记不同系统设置不相同的密码,这样安全策略,你才有可能避免不相关系统的密码泄露,而造成你个人数据泄露和丢失。之所以这样说,那就回到标题的2款源代码安全审计工具来看看我们软件系统中的密码保护如何。使用源代码安全审计工具来分析系统系统密码保护,是因为源代码安全审计工具是分析源代码中的安全漏洞,如CWE-759和CWE-760是工具能够分析和查找的漏洞之一,工具能查出的其他系统代码中的漏洞,那它们自己的设计如何?这是作者比较感兴趣的一点,也促使我进行分析。那就请出这2款工具吧,其中一款是Fortify,另一款是Checkmarx。那故事还要回到几年前说起了。
       首先是Fortify。时间回到2009年,在一个应用系统开发项目中有幸采购和使用了大名鼎鼎的源代码分析工具Fortify SCA,当时还是独立公司,还未被HP收购,也让我第一次领略到软件漏洞工具使用和问题分析方法(专业的商业软件,而非开源的工具),Fortify工具有个360的服务端软件,有个管理界面,并需要密码登陆使用。做完系统配置,我从对密码保护和处理的一种敏感,我当着当时那个技术支持面,导出数据库生成的密码数据,通过使用工具计算和分析,真是令我惊喜,虽然安全规则中定义了Hash+Salt的密码保护规则,但工具本身只是使用SHA1处理的密码,没有不可预测Salt的出现,那个技术支持当时有点茫然,好在这个不是使用源代码工具的重点。这末多年过去,也许现在HP的Fortify修改了这一漏洞吧。
       其次是Checkmarx。无独有偶,时间回到2014年,在工具采购和测试分析,我又有幸试用了另外一款源代码分析工具Checkmarx,同样问题又发生一次,这个工具完全需要使用一个服务端管理工具,用户通过密码认证登录系统,我也用相同的方法导出了用户的密码数据,使用工具计算和分析,又是一次喜悦,这个工具也是简单使用了SHA1做的密码保护处理。可这次的技术支持确是满面从容,也好这个同样不是工具使用的重点了,这个属于安全策略问题。然而,差不多有5,6个月过去了,时间走进了2015年,这次是正式的系统安装和配置,Checkmarx升级了新版本,系统安装部署之后,我又顺便分析下密码,惊奇的发现,Checkmarx升级了密码存储保护机制,使用的是SHA256+Salt,同样让我另一次惊喜,看来密码安全问题已经会让越来越多的系统开发者所重视,同我们相伴的系统信息系统也许真的让你更加值得信任了!
       说到如此,你可能知道了密码保护的重要,无论是传输、存储还有处理都要保护,依赖密码来认证用户有效性还是目前信息时代的主流,像FIDO这样宣称password-less概念的技术还是同我们的常用系统相聚甚远。同时对关心密码保护系统开发者,如果需要交流和讨论密码存储保护和相关设计实现的话,可随时找作者交流。也不具体透露是什么具体的系统,几年前作者为某某重要的网上系统设计和实现强计算的密码保护方案,从用户输入到传输,再到存储的方案,并成功实现了几千万级用户的密码迁移方案,那个系统早已上线了,此时回顾往事除了一种满足感的同时,还有一种伤感染上心头,因为作者已离开那个奋斗过多年的领域了,但知识依在,技术依在,方案依在。
      最后实例化一下Checkmarx升级版本和老版本的数据密码保护格式如下,感兴趣的大拿们可以破解下密码明文:
      老版本SHA1:            32E6BF92DB00F2E0080912B9D520CEB305E4794B
      新版本SHA256+Salt:PMsdZn1WhzJN1FmSxuDfZ/9vPXXArbl0uS2KKKbABSE=   U0jdfkiWDASaRCuwA599LQ==

      最后声明:作者并无对Fortify和Checkmarx这2款产品谁好谁坏的任何观点和评价,无论是那款源代码分析工具(SCA)都是作者在应用安全开发生命周期活动中,碰到过的、使用过的、最优秀的一类安全测试工具。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

基于Github的源码白盒扫描工具Raptor

Raptor(猛禽)是一款基于WEB界面的github源代码扫描器。你只需要给它一个Github repository的URL地址,它就能进行自动扫描。 简单介绍 你也可以在Raptor设...

gradle和maven有什么区别?

一种观点 gradle由于maven Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构...

Auditd - Linux 服务器安全审计工具

首先,Linux中国祝贺读者 2015羊年春节快乐,万事如意! 。下面开始这个新年版审计工具的介绍。 安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多...

Auditd - Linux 服务器安全审计工具

安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。 我们知道Linux系统上有一个叫 auditd 的审计工具。这个工具在大多数L...

无线安全审计工具aircrack-ng详解

无线渗透试的工具有很多,在windows下和Linux下的工具各有千秋,因在windows下的工具基本都是图形界面,操作起来比较直观易懂,在此就不再做过多介绍,本方重点介绍在linux下的一种通用的方...

linux安全审计和加固工具-lynis

0x00前言       lynis是一款开源的unix-based平台的审计工具。可以帮助审计员扫描unix系统以及可用的软件。程序主要探测,系统上安装的程序包,配置上的错误,以及安全问题和系统信息...

Linux服务器安全审计工具与流程完全指南

当今许多Linux服务器都不是刚刚部署完毕的新机器,有专业的Linux系统管理员进行定期维护,IT技术人员往往需要为自己所使用的服务器在安全性方面负全责.如果大家的服务器遭到侵入,不仅所有的敏感信息很...
  • dipolar
  • dipolar
  • 2014年08月22日 17:00
  • 636

lynis—*nix安全审计工具

一、介绍 Lynis是一款*nix(我在mac os x10.8.3,ubuntu 10.04, Debian 2.6上都测试过,能正常运行)上的开源的系统安全审计功能工具,该工具由一系列的shel...
  • god_7z1
  • god_7z1
  • 2013年04月21日 00:35
  • 849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从2款源代码安全审计工具看Hash+Salt的密码保护
举报原因:
原因补充:

(最多只允许输入30个字)