针对今日全网大规模报道的全国30省市社保用户信息泄露事件,安华金和对乌云历史报道的社保行业相关漏洞进行集中分析,得出的结论为:大量的信息泄露主要由软件中存在的SQL注入漏洞引起,而且由外部黑客入侵引起。
实际上根据安华金和对社保行业的掌握情况,不仅仅是外部黑客,同时社保内部的运维人员、第三方的开发人员、甚至社保系统的业务人员都可以通过直连到数据库,查看或修改相关信息,从而引起社保数据的批量泄露或篡改。
这些问题的解决需要一个系统化的方法,包括管理制度上的改善、安全意识的增强、更严谨的应用代码、更为安全的网络体系结构;但从专业的数据库安全厂商角度来看,社保的数据库安全本身就存在极大的漏洞,特别是社保信息在提供外网访问时,更是容易被拖库。
数据泄露类的安全问题的分析如下:
(1)外部黑客攻击者进行社保信息窃取
黑客攻击者一般有两种手段进行数据的窃取:
一是入侵到网络后,能够直接访问数据库服务器,进行刷库直接拷贝数据文件,再进行异地的数据还原。
二是利用应用系统的漏洞,通过sql注入,完成对社保人员信息的批量下载,这种方式是当前暴漏出来的案例中的主要方式。
(2)系统维护或第三方开发人员权限过高
负责数据库的维护管理,直接掌握数据库DBA用户的口令。DBA 既负责各项系统维护管理工作,又可以随时查询数据库中的一切敏感信息;这些人员被他人利用,完全可以随时登陆数据库,任意进行社保信息的访问。
而社保系统的第三方开发人员,由于对系统的熟悉度更高,往往可以通过程序中的后门程序或直接访问数据库的机会获得数据。
陕西移动1300万的数据泄露,就是开发方人员联创的人员种植的后门程序,引起的信息泄露。
(3)数据库文件采用明文存储,拷贝到数据文件后引起整体泄露
当前的主流数据库中,数据文件都是以明文形式进行存储的。内部人员或外部黑客入侵者很容易利用这一漏洞,拿到社保数据库的数据文件或备份文件,进行异地还原或使用专门的数据解析工具,获得全部社保信息。
近年,有诸多典型的泄密事件,都是通过直接利用文件层的存储漏洞窃取数据;例如小米论坛800万用户信息泄密是由于黑客进行刷库拿到数据文件、CSDN1000多万客户信息泄密,是由于备份磁盘被人拿到后利用。
数据篡改类的安全问题的分析如下:
(1) 非法高权限维护人员的违规篡改
在社保数据库系统维护过程中,有大量的维护人员账户,以及第三方人员使用的账户。为了使用方便,DBA在给这些账户分配权限时,往往简化处理,直接给予DBA角色的权限,或者能随时访问敏感社保信息的高权限角色。
掌握这些账户口令的人员,一旦出于经济利益或其他原因被人利用,便随时可以进行参保人员的工资、账户余额等经济数据信息的篡改。
(2) 利用合法维护人员的身份进行违规篡改
合法的维护人员由于工作需要,本来就应该具备修改工资、账户余额的权限。一旦这些人员被人利用,或者其他人掌握了合法维护人员的口令后,仍然可以任意进行敏感社保数据的篡改。
且现有的机制无法准确追踪到操作者具体是谁,只能知道使用哪个数据库账户进行了数据修改操作。
(3) 合法维护人员的误操作
合法维护人员由于种种原因,也有可能产生社保数据修改的误操作,导致修改结果不正确。
现有机制也无法准确审计到合法维护人员每次修改行为的详细过程,比如修改前的值,修改后的值等,一旦发生误操作可能无法还原及修正。
安华金和作为一家专业的数据库安全厂商,;在社保行业问题频频暴露的过程中,已经就其中问题与社保行业的用户和厂商进行过多次沟通,根据双方的共同讨论,形成了一些具体的解决方案,并在一些省市开始应用;如下是一个典型的地市的解决方案:
其中外网区域,安华金和提出主要通过部署数据库防火墙和数据库加密系统提供防护;通过数据库防火墙可以防止sql注入、防止批量下载和防止后门程序;通过数据库加密,使存储在外网的数据库中的关键信息在存储层是密文状态,从而防止文件层的拖库。
数据库防火墙,不同于传统的防火墙,传统的防火墙无法防止SQL注入等共计手段;数据库防火墙也不同于web防火墙,web防火墙实际上有很多的应用限制,有很多的sql注入绕开手段,web防火墙也无法做到防止批量下载和后门程序。
而数据库防火墙可以对数据库的通讯过程进行精确的解析和控制;对于sql注入本身比web防火墙可以拦截的更为彻底;同时可以对社保应用建立应用特征模型,建立社保正常访问语句的抽象表达,对每种语句的返回总量进行控制;从而防止批量下载和后门程序。
而数据库加密产品,不同于磁盘加密和文件加密;后两种技术,在数据库启动后,完全无法防止用户的拖库行为。
对于维护域,安华金和提出部署数据库防火墙和数据库审计;数据库防火墙主要对于运维侧的人员(包括运维或开发人员)的行为进行管控,通过金库模式等方法在运维侧人员批量访问敏感表,或进行特殊表的数据变更时,引入审批控制流程。而数据库审计可以记录下来所有人员的数据库访问行为;可以突破应用层限制,将SQL语句与业务人员身份有效关联,在发生安全事件后,形成有效追踪。