NoSQL注入的分析和缓解
《NoSQL注入的分析和缓解》要点: 本文要点:
本篇文章已经在IEEE Software 杂志上首发.IEEE Software 就今天的战略性技术问题提供了可靠的、经专家评审过的信息.IT管理者和技术领导应依靠新先进解决方案的IT专业人员,以迎接运行可靠的、灵活的企业这一挑战. 数据库安全是信息安全的一个重要内容.访问企业数据库授权攻击者能够充分控制关键性数据.例如,SQL注入攻击把恶意代码插入到应用向数据库层发送的语句中.这使攻击者几乎能对数据做任何操作,包括访问未授权的数据,以及修改、删除和插入数据.尽管由于框架更安全、人们意识更强,SQL注入这种手段的利用率近几年来已经稳步下降,但它仍然是个高危的系统漏洞.例如,Web应用每月受到四次或更多次Web攻击活动,而SQL注入仍然是攻击零售商最流行的方式1.此外,SQL注入漏洞对32%的Web应用都有影响. NoSQL(不仅仅是SQL)是数据存储的一个流行趋势;它泛指依赖于不同存储机制的非关系型数据库,这些存储机制包括文档存储、键值对存储和图.这些数据库的广泛应用是由现代大型应用推动起来的,比如Facebook、Amazon和Twitter,它们需要把数据分布到许多的服务器上.传统关系型数据库不满足这种扩展性需求,它们需要一个单独的数据库节点去执行同一事务的所有操作. 于是,发展出一批分布式的、NoSQL键值对存储来满足这些大型应用的扩展性需求.这些数据存储包括像MongoDB和Cassandra之类的NoSQL数据库,也有像Redis和Memcached这样的内存和缓存存储.确实,NoSQL的受欢迎程度在过去几年来一直在稳定上升,其中MongoDB在10个最流行的数据库中排到了第四位,如图1所示. 图1 ?db-engines.com 2015年8月流行度排名中前十个最受欢迎的数据库.其中NoSQL数据库有MongoDB、Cassandra和Redis.这三款的受欢迎程度仍在上升. 在本文中,我们将分析NoSQL的威胁和技术,以及它们的缓解机制. NoSQL 漏洞几乎就像每种新技术一样,NoSQL数据库在刚出现时还不够安全3–5.它们当初缺乏加密、适当的认证、角色管理和细粒度的授权等6.此外,它们还会出现危险的风险暴露和拒绝服务攻击3.如今,情况已经好转了,流行的数据库已经引入了内置的保护机制7. NoSQL数据库使用不同的查询语言,这使传统的SQL注入技术已经无效了.但这是否意味着NoSQL系统对注入免疫呢?我们的研究表明,尽管这个查询语言及其驱动的安全性已经大型提升,但仍然存在着注入恶意查询的手段.已经有人整理出了NoSQL注入技术的列表1,3,4.有些初步应用扫描项目已经涌现出来了(例如nosqlproject.com),而且开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)已经公布了检查NoSQL注入代码的建议.然而,这些还仅仅是初步成果,这些问题尚未得到充分的研究,并且未得到应有的关注. NoSQL攻击途径Web应用和服务通常使用NoSQL数据库去保存客户数据.图2展示了一个典型的架构,在此NoSQL用于保存通过Web应用来存取的数据.通过一个驱动程序来进行这个数据库的访问,即一个存取协议包装器,它为多种编程语言编写的数据库客户端提供类库.尽管该驱动程序自身可能不易受到攻击,但有时它们提供了不安全的API,当应用开发人员错误地使用它们时,就会给该应用引入漏洞了,这些漏洞会被人利用对数据库进行任意操作.如图2所示,攻击者可以伪造一个带有注入代码的Web访问请求,当数据库客户端或协议包装器进行处理时,将会执行预期的非法数据库操作. 图2 典型Web应用架构.NoSQL用于保存通过Web应用来存取的数据.通过一个驱动程序来进行这个数据库的访问,就会给该应用引入漏洞了. NoSQL相关的SQL攻击主要机制可以大致分为以下五类:
|