数据库安全防控综述

2021-03-08 02:05吕永国张永棠
新一代信息技术 2021年15期
关键词:数据库系统加密技术漏洞

吕永国,张永棠

(广东东软学院计算机学院,广东 佛山 528225)

0 引言

数据库在生产和生活中得到了广泛的应用,但是数据池面临着严重的安全威胁。目前,由于计算机网络的发展,技术漏洞等因素,数据库经常受到攻击。

随着数据和数据库功能的日益复杂,攻击者攻击方式的改变和技术的进步,传统的攻击方法已经不能满足实际需要。机器学习(ML)可以将顺序扫描转化为计算模型,将 DBA(数据库管理员)经验转化为预测模型,使入侵检测更加智能化和动态化,以适应快速的工作量变化[1-4]。现在计算能力可以满足机器学习的需要。因此,将机器学习应用于数据库安全威胁响应的文章越来越多,但很少有人对这些应对方法进行梳理,这反映了机器学习在处理某些威胁类型方面的优势。

主流数据库一般采用访问控制、信息流控制、密码控制和推理控制等方法来保障数据库安全性。访问控制机制能确保用户只有在授权的情况下,才能访问数据库资源。制定正确的信息流策略,对信息的收集、存储、传输和处理采用不同的安全等级,确保受保护的数据和不受保护的数据不相互干扰,能有效减低重要数据信息泄露或有缺陷的访问控制风险。数据库加密技术是另外一种常用的主动防御机制,基于对关键信息存储的加密,加强应用访问的安全性,可以有效防止突破防御界限的外部黑客攻击或者内部高权限用户的信息泄密,从根本上实现数据高度安全。运用数据库推理控制策略,分析用户行为,重要系统命令运行和系统资源异常等情况,再依据相关的监视信息,就能有效对异常情况进行及时的处理防范。

本文对数据库安全的研究进行了梳理,找出了与数据库安全密切相关的因素:数据、角色、防御系统、外部因素。因此,我们划分了四个主要的威胁来源:数据保护无效、用户异常、防御系统脆弱和外部攻击。数据可进一步分为三类:数据篡改、数据暴露、监测或收集的数据。用户异常被细分为:非法行为、未经授权的访问、弱安全性。

1 数据库的安全风险

数据库系统在正常的运行当中,可能会遭受软硬件攻击、组织管理体系漏洞和自然灾害等各种因素的影响,造成数据库数据损失或崩溃,影响数据库提供正常服务。数据库系统提供数据给应用程序,它出问题会影响整个计算机系统提供服务的可靠性和安全性,因此保证数据库安全非常重要。随着科技的不断进步,新攻击手段和方法持续增加,数据库安全性受到的挑战也愈严峻。本文将重点从数据库的安全属性及主要安全技术进行重点分析,探索实现数据库系统可靠安全性的策略。

数据库主要安全风险如图1所示。

图1 数据库主要安全风险Fig.1 main database security risks

1.1 权限管理漏洞

一般而言,数据库系统都提供对用户账号的权限控制。这些权限控制可以很好地限制用户访问权限以及数据库操作。部分数据库甚至还提供专门的用户资源控制文件,以限制用户对数据库资源的开销。例如Oracle数据库允许用户建立自己独特的概要文件,用于控制每个用户可以使用的资源数量,包括连接的会话数量以及CPU使用时间等[5]。

但是在实际情况中,经常会发生合法特权滥用问题。这种情况发生,往往是企事业单位对数据库用户职责梳理不到位。对部门、岗位角色和人员的分工、权利和职责划分不清晰明确,导致在数据库用户的角色和权限划分混乱。此情形下,用户使用自己拥有的访问权限,除了访问本身业务范围数据,也能访问超越其业务范围的资源数据,导致数据滥用。举一个普通企业信息管理系统为例,假设普通的数据库管理员,可以访问数据库所有记录,拥有修改销售和仓库的数据记录权限。这样的特权,会导致销售或仓库数据被误修改的风险。因此,不用用户拥有不一样的用户权限,去执行本身的任务。授权超出业务范围的权限,会给数据库带来数据安全危险。合法的特权滥用会带来另一个问题,是会间接引诱数据库用户进行非法不道德活动,导致客户敏感信息泄露。比如前段时间,国内部分酒店由于内部权限管理不到位,导致企业内部员工把过亿条酒店客户个人隐私数据放到网上非法销售。这些事件严重侵犯了客户权益,受影响酒店遭受巨大的经济损失和声誉下降。

其次是数据库特权提升的安全问题。由于数据库使用的时间较长,在运行的过程中,会出现部分用户由于岗位业务变更,或者职责的临时特殊要求,需要对这些用户进行业务权限的配置更改,或者对业务数据资源访问操作行为的变动。这种变化,会对初始规划的数据库用户角色权限进行变更。这些后期的权限改变,如果没有很好的权限管理机制,缺乏有效的安全审计,很容易产生特殊身份滥用,甚至冒用的情形。粗放式的特权提升,例如轻易授予普通用户管理员权限。会有权限过渡暴露的漏洞。这些漏洞一旦被攻击者利用,就会篡改权限。拥有特殊权限的恶意用户,可以对敏感信息进行肆意攻击。甚至利用漏洞,虚构账户,转移客户资金等操作,给数据库使用企业造成重大损失。

1.2 数据库平台漏洞

数据库系统的运行,需要有计算机操作系统的支持,主流操作系统有Windows、Linux、Unix和MacOS等。 底层的操作系统有各种漏洞,如DoS、权限管理不当、远程代码执行和凭证保护不充分等[6]。其次是数据库本身系统的漏洞,如数据信道漏洞等。这些漏洞,会导致数据库数据丢失或者损坏,严重会导致拒绝提供服务的情况。由于各类操作系统使用广泛,用户数据量基数大,因此出现相关的漏洞,会引起相当大的损失和危害。

以最常用的Linux和Windows操作系统为例,Linux是广受欢迎免费使用的操作系统,安装在全球众多的企业、组织的服务器以及个人电脑上,但是它的安全漏洞不少。以2020年为例,其主要的漏洞原因是内核技术开发人员失误,例如逻辑和类型转换错误,导致其内核经常会出现逻辑实现不正确,类型转换溢出等问题[7]。在此类问题上,Linux蓝牙模块和eBPF模块漏洞较严重。这两个模块可以实施本地提权和远程代码执行,利用寄存器范围错误,绕过检查,出现非常规的越界读写。由于上述模块在内核运行,漏洞技术难度低,常被黑客利用,且成功率高。Windows操作系统比较复杂,涵盖系统组件、驱动程序、应用程序等,每年都有大量的系统漏洞,微软公司为了应付众多的漏洞,每隔一段时间,就会发布系统补丁以供用户升级。微软持续的补丁升级,并没有有效抑制漏洞的数量和危险性。以2020年为例,Windows系统的高危险漏洞主要是协议漏洞,该漏洞导致各种畸形的数据包未能正确被解析,进入到错误的流程处理或者直接绕过处理。该漏洞容易被攻击者利用远程代码执行,变成极具危害和传播性的蠕虫攻击。

对数据库系统本身漏洞的攻击,是黑客惯用手段,例如SQL注入攻击。入侵者将未经授权的语句添加到存储过程或者 Web应用程序的参数中,然后这些额外语句被传入数据库中并执行。如果没有对应防御措施,入侵者使用这种技术,就可以轻易访问整个数据库的数据。SQL注入是正常的Web端口访问,表面上和其他正常的页面访问一致,故服务器的防火墙不会识别并抵御此类攻击。如果系统管理员工作不严谨到位,没有时常查看日志的习惯,有可能不知晓数据库系统被长期攻击,数据已经产生严重泄露的情形。

1.3 审计记录不足

很多主流数据库,提供审计功能,用于监控所有用户对数据库的各项操作。数据库会将监控的相关记录放在特定的文件中。数据库管理员可以根据相关查阅,跟踪记录进行审核,用于调查数据库可疑的异常活动,例如非正常删除表的操作或者连接数据库异常等。如果数据库审计策略缺陷,不能够自动记录必要的数据库异常或者敏感事务,将会对在用的数据库构成严重风险。审计机制是数据库防御机制的重要一环。如果黑客能够突破数据库其他的防御机制,成功攻击数据库。事后可跟踪审核记录,识别冲突,再确定特定用户和冲突的关联,以修复系统[8]。

数据库软件提供的审计功能本身存在不少弱点或者限制,使得审核功能失效。首先,数据库审计功能有缺陷,当启用审计机制,会消耗计算机资源,如CPU和硬盘,从而导致数据库服务性能下降。这种情形会导致不少数据库管理员减少或者不使用该功能。另一个问题是本身的审计记录细化度不够,记录信息不详尽,不足以支持攻击检测、分析与修复。例如不少审计机制没有记录数据库客户端的应用程序,IP地址等关键信息。这就不能提供充足的信息给后期的审核分析。其次,拥有数据库管理员权限的用户,进行恶意操作的时候,可以直接先关闭审计功能,使得事后的推理追责审核功能失效。还有,对于多种数据库混合的综合平台,审计流程存在不一致问题。常用的数据库,Oracle、SQL Server和DB2等,它们的日志各不相同,因此无法在数据库使用组织中,综合各个数据库,执行统一的审计流程[9]。

1.4 身份验证缺陷

身份验证是数据库安全防范的第一道防线。用户登录的身份,后续连接着访问数据库权限,可以明确该身份可以使用的功能及相关资源。因此攻击身份验证方案,获取登录数据库的凭证,从而获取合法数据库用户身份,成为攻击者常用的方法。数据库身份被不法分子获取的原因中,弱密码是最常见的。由于人天生的惰性或者记忆的限制,人们喜欢使用简单,容易记忆的密码,例如数字的连号,重复号等。部分数据库有密码规则的限制,比如要求使用大小写字母加数字的方式,以减轻弱密码的使用。但实际应用中,民众偏爱使用简单的密码。这类密码,较容易被破解,致使数据库身份被盗用。

用户缺乏安全意识,是密码经常泄露的另一种方式。不少用户直接把登录用户名与密码写在纸条上,或者粘贴到计算机的文本文件中。这给攻击者直接窃取用户凭证提供便利。还有恶意者,利用电话骗术,冒充专业人员,以系统故障,提供维护服务等编造出来的理由,非法获取受害人的登录凭证。

网络不法分子,常利用计算机技术非法获取用户凭证。比如采用自动化程序,不断尝试输入不同用户名和密码的组合,循环登录,直到获取正确的登录信息。这种暴力破解的方式,有时候会利用用户曾用密码做参考,加快效率,以缩短破解时间[10]。部分网络犯罪者采用网络钓鱼电子邮件的方式获取用户的敏感信息。他们使用各种犯罪心理技巧,引诱受害者进行交流,以索要相关数据。这种方式隐蔽可怕,很多受害人被骗以后,对信息泄露却全然不觉。

1.5 备份数据暴露

数据库存储的数据,是应用程序正常运行的基石,因此数据库备份工作是正常的安全管理要求。一旦发生意外,导致数据库数据丢失或系统崩溃,数据库管理员可使用备份数据库,迅速恢复其正常运作。但数据库外部存储介质,如磁带、DVD、或移动硬盘等备份的数据,如保管不善,也有暴露风险。不少公司发生备份数据暴露事件,其中一个主要原因是公司内部备份数据管理不到位,内部员工能轻易拷贝备份数据,外出泄露。这种行为,会给企业带来无法挽回的损失,如制造业企业的机密图纸或工艺流程等敏感数据流出。其次是数据库管理员安全意识不足,导致备份数据暴露。例如粗心的管理员错误将备份文件存放在网站目录下,外部的黑客就可以访问Web路径,技术破解文件名等方式,下载该备份数据文件,从而导致泄露事件。

2 数据库安全控制

数据库的使用过程中,面临各种风险等级不一的威胁。制定一个可靠的安全策略,并严格执行,能有效防范内外部人员对数据库恶意攻击,减轻所受威胁伤害。如何根据数据库面临不同攻击手段,采用不同的技术及标准,制定有效的数据安全机制,保护数据库信息安全,以下将分为四点,给以重点阐述。

2.1 访问控制

如果数据库用户拥有超过其职能范围的权限,就容易引起滥用权限的问题。这种问题的根源来自数据库管理员在权限初始规划的时候,没有对数据库全体用户权限业务和职能范围梳理到位,简单给用户或者其角色赋予更高的访问权限。解决该问题的方案是采用颗粒度小,细化的访问控制机制。根据不同用户,要求赋予其的权限不仅限定到最低要求的数据库DML(数据库操作语言)操作,而且数据控制到表的级别以下,细化到表里的字段。这种充分细化的控制手段,就可以有效避免超出职权范围的恶意操作带来的伤害。例如上文提及到超权限访问的数据问题就不会发生,用户查询相关数据,想恶意修改字段数据的时候,系统就警报该用户只有查询权限,没有修改该字段信息的权限。

用户私自使用合法的数据库权限,用于未经正规授权的活动,也会给数据库安全带来隐患。例如部分企业组织,由于数据库存放的敏感数据,会对查询记录数进行限制,并不允许复制相关数据。如果企业内部,存在恶意盗取数据的工作人员,就可以采用使用外部的客户端登录系统,规避监控获取信息数据,以供售卖获利。这些信息,也可能被临时存放在非法计算机设备。这些设备一旦受到黑客攻击,就有可能发生泄露。对此类风险,应建立数据库基于上下文的访问控制,通过存储用户客户端应用程序、访问时间、IP地址和端口数据等方式,匹配连接上下文。假若匹配信息不服,系统将会发出异常警报。

2.2 数据库平台安全

随着Windows与Linux等专业平台功能愈加强大,复杂,覆盖面越广,系统平台漏洞呈现出数据量逐年递增,高风险性同比增长的态势。这些系统所存在的缺陷,容易被黑客采用技术手段利用,攻击以获取电脑的控制权,非法获取其中的重要信息资料。防范此类风险,首先要加强组织的内部计算机服务器的应用软件安装和访问网站的控制。组织内部的机器,不能随意安装不明的应用程序,不要使用企业计算机随意浏览与业务无关的网站,以减少黑客通过网络植入木马和病毒的方式,攻击企业服务器的风险。其次是系统管理员应该及时更新软件程序。软件系统供应商不定期提供的补丁程序,能有效修补已经发现的各种平台漏洞,增强系统防御攻击的能力。

2.3 审核与问责机制

数据库系统提供的审计功能,可以很好监控用户数据库操作及其使用资源情况。但是由于系统的审计功能自身的缺陷,有时候会导致审计功能失效。要避免此类情况,企业组织要组建高性能的网络审计设备,审计的流程,交由专门的审计设备执行。数据库运行时,全程启动审计功能。这样就能有效避免审计功能消耗系统资源,引起数据库服务器性能下降的问题。对于有权限的管理员,私下关闭数据库审计功能,而导致审查跟踪失效的问题,可以采用审计责任与数据库管理权限相互独立的策略。网络审计设备的运行情况,不与数据库管理员权限挂钩。这种情况下,数据库用户没有权限去关闭审计功能,就避免了数据库用户对审计功能的攻击。对于上文提及的审计记录不足的问题,可以采用细化数据库事务的跟踪信息。在对应的日志里面,添加详细的跟踪项目信息,如源应用程序名称、源操作系统、源IP地址及其他关键数据。这些详细的数据,就可以供后期的事务分析和修复使用。

除了在技术手段上完善审核策略,还有在组织机构内部建立健全的问责机制,规范约束内部的操作以及失职行为的追究制度。从规章制度上面约束相关人员的误操作或恶意操作,杜绝人为的技术性和非技术性错误操作行为。为企业组织提供规范行为的依据,就能有效提高数据库系统审计功能,从而提升其抵抗恶意攻击的能力。

2.4 加密技术

加密是最常用的安全保密方法,运用特殊的算法改变原有的信息数据。加密后的信息,传送到目的地后,再采用技术手段还原到原始的信息。在信息传递的过程中非法获取其中加密数据,如果不能正确的解密,也无法获知其中的内容。为此,加密技术被广泛运用在数据库上,以保护其安全。现今的加密算法很多,其中三种数据库比较常用:对称加密、非对称加密和散列加密[11]。

对称加密要求发送方和接受方都有相同的密钥。发送方用密钥加密发送信息,接受方使用同样的密钥解密。这种加密方式加密和解密的速度较快,但需要双方都确保密钥的安全。对称加密方式适用于入侵风险较低的封闭系统。非对称加密在信息传输过程中,使用两个不同的密钥,公钥和私钥[12]。公钥用于加密在传送前加密的信息,为发送者拥有。私钥用于接收信息的解密,为接收者拥有。这种加密方法,在安全性方面比对称加密高,但是加密和解密的速度比前者低。散列加密,就是将数据信息通过哈希算法,生成一个固定长度的哈希值。散列加密的数据,难以被破译或者还原。上述的加密方法,经常使用在数据库敏感信息的保护中,比如用户账号及密码。

数据库在加密的颗粒度上,总共分为5个级别:数据库级、表级、记录级、字段级和数据项级。数据库级别的加密就是将整个数据库加密,读取数据库所在的物理块号进行加密。这种加密方式简单,但是效率比较低,对于数据库来说,每次常规的操作,例如读取数据,都要对数据库进行解密操作。表级加密类似数据库级别加密,就是对特定的表进行加密处理。相对之前加密方式,在灵活性和系统性能方面有提高,但是也可能加密非必要的额外信息,消耗系统资源。比如加密用户信息表中,可以加密名字,身份证号,联系方式等信息,但表中其他信息,如性别,年龄等信息则没有必要。记录级别是加密数据库表中的一条完整的信息,加密后各个字段都是密文。该加密方式颗粒度更小,灵活度更好,但是缺点是记录数比较大时,每条记录都对应一个密钥,解密的过程也是逐条解密,效率比较低。字段级加密是加密数据库表里面的某个字段。这种方式适合数据库对特定字段的高频率查询,查询效率高,系统开销也比较小。

数据库加密技术,历经多个阶段,一直在持续改进发展中。从加密的层次实现来看,如今主要有4个层次的5种加密方式(如图2所示):应用层的应用系统和专用数据库中间件、数据库系统层、操作系统层和存储设备层。这几个层次的加密方式都不相同,各有优劣[13]。

图2 数据库加密层Fig.2 database encryption layer

应用系统加密主要是应用程序对敏感数据进行加密后,将加密的数据存入数据库。数据检索的时候,先从数据库读出数据到客户端进行解密。这种方式的优点是加密实现灵活,可以根据业务选择不同的加密函数与密钥等。劣势也比较明显,因为存入数据库是密文信息,数据库系统原有对数据高效组织和检索等功能严重受损。应用系统因此额外承担数据库原有工作,如索引、查询分析、执行优化等,这极大增加应用程序的负担和程序的复杂度。

专用数据库中间件(前置代理加密技术)[14]在应用程序和数据库之间加一道安全代理服务。访问数据库服务前,先经过该代理服务,对数据库进行加解密工作,然后再通过数据库接口实现数据库存储。相比之前的技术,前置加密技术减轻客户端应用程序的压力,应用层更专注业务逻辑及其实现。但和前者应用系统加密一样,数据在存储到数据库前,已经是密文的形式,数据库因相同的原因,丢失本身的系统优势。

数据库系统层(后置代理加密技术)是在数据库内部对数据进行加密,应用系统对数据的处理过程完全透明[15]。用户不需要知道数据库相关加密操作,就如正常的执行SQL语句一样[16]。应用系统程序不需要做任何更改就能获得数据加密功能。后置加密技术是通过视图及触发器加外部调用实现加解密工作。这种透明加密的技术比较成熟,被应用在大型的商业数据库中,如 Oracle和SQL Server[17]。但技术也有缺陷,假如业务要求触发器运行机制对每条数据的多列读写都要外部调用,或者查询结果集中涉及加密数量比较大的时候,会导致数据库性能下降。

操作系统层(文件系统加密技术)是通过对操作系统中数据库文件进行加密的方式实现,与数据库系统类型无关[18]。因为数据库系统皆运行在计算机操作系统上,数据库就是存储在操作系统上面的一系列文件。对这些文件加密,也就实现对数据库的加密。对文件加密的方式有一个严重缺陷,就是每次对数据库的DML常规操作[19],都需要对整个数据库文件进行加解密,系统开销大,效率低。

存储设备层加密(磁盘加密技术)是通过存储设备物理结构实现加密,能发挥设备硬件能力优势,同时对应用层和数据库本身没有关联[20]。磁盘加密技术与文件加密技术类似,不具备数据库权限控制。但由于磁盘数据库加密相关技术还没有成熟,现今没有进入大规模实用化和产业化。

综上所述,数据库的加密技术,能够显著提高数据库安全性,有效减轻上文提及的身份验证缺陷和备份数据暴露的风险。数据库恶意攻击者,通过非法手段获取的加密数据,因不是明文方式,所以不清楚里面的具体内容而无法利用。

3 结论

数据信息已经成为企事业组织的重要财产。如何保护组织的敏感电子数据信息不被恶意攻击而导致损失是一个巨大挑战。本文重点分析了影响数据库安全运行的几个主要因素,并详细阐述数据库相关的安全控制策略,以降低受攻击的威胁,加强对数据的保护。随着数据库技术持续进步,版本不断更新,对数据库攻击手段亦发生变化。因此,应继续研究对数据库攻击方式方法,提高数据库持续的防御能力。

猜你喜欢
数据库系统加密技术漏洞
漏洞
运用数据加密技术维护网络安全的可靠性研究
基于selenium的SQL注入漏洞检测方法
Oracle数据库系统的性能优化研究
数据加密技术在计算机网络安全中应用研究
侦探推理游戏(二)
日本开发新型加密技术 号称量子计算机也难破解
对分布式数据库系统的安全分析
漏洞在哪儿
数据库系统在信息管理中的使用