CN109992989B - 使用抽象语法树的用于查询注入检测的系统 - Google Patents
使用抽象语法树的用于查询注入检测的系统 Download PDFInfo
- Publication number
- CN109992989B CN109992989B CN201811150820.3A CN201811150820A CN109992989B CN 109992989 B CN109992989 B CN 109992989B CN 201811150820 A CN201811150820 A CN 201811150820A CN 109992989 B CN109992989 B CN 109992989B
- Authority
- CN
- China
- Prior art keywords
- abstract syntax
- query
- syntax tree
- list
- queries
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种设备可以包括:一个或多个存储器;以及一个或多个处理器,通信地耦合到一个或多个存储器,用于接收针对由数据库存储的数据的查询;基于查询来生成抽象语法树;确定抽象语法树是否与列表相匹配,其中列表标识与查询或查询类型相对应的一个或多个抽象语法树;以及基于抽象语法树是否与列表的条目相匹配,来选择性地执行动作。
Description
背景技术
随着计算机网络增长以及由这些网络互连的计算机和数据库上存储的数据量增长,因此具有获取对这些计算机和数据库的未授权访问的尝试。针对关系数据库(诸如结构化查询语言(SQL)数据库)的一种类别的攻击是注入攻击。在注入攻击中,攻击者将恶意的SQL查询序列注入到数据库服务器中,以在数据库服务器上实现代码注入或恶意动作。攻击可以通过被危害的web应用服务器来发起。注入攻击是关系数据库的显著漏洞,因为一些当前的系统可能无法检测到在序列中的数据库查询,该序列导致意外的或未授权的数据库访问。
附图说明
图1是本文描述的示例实施方式的概览的示图;
图2是本文描述的系统和/或方法可以实施在其中的示例环境的示图;
图3是图2的一个或多个设备的示例组件的示图;
图4是用于基于抽象语法树来处理关系数据库查询的示例过程的流程图;以及
图5图示了分析设备的示例实施例。
具体实施方式
示例实施方式的以下详细描述参考附图。不同附图中的相同参考标号可以标识相同或相似的元素。
关系数据库服务器(诸如SQL服务器)可能易受恶意攻击(诸如注入攻击)的危害。在注入攻击中,实体可能获取对数据库的访问,然后可以向数据库查询大量记录以期获得客户信息,诸如联系信息、财务信息、密码信息、和/或类似物。检测注入攻击以便防止敏感信息被盗可能是有益的。然而,归因于用来执行注入攻击的查询的结构、语法和内容上的细微差异,可能难以先验地定义用于检测注入攻击的有用规则。例如,这些细微差异可能使得有必要创建过于繁重的数目的规则,并且应用如此大量的规则可能创建显著的负荷。
本文描述的一些实施方式可以基于抽象语法树来提供对(例如,与注入攻击相关联的)恶意查询的检测。例如,本文描述的一些实施方式可以基于查询来生成抽象语法树,可以对照抽象语法树白名单来检查抽象语法树,并且当抽象语法树未由白名单标识时,可以执行动作。当确定查询不是恶意的时,查询可以被添加到白名单。以这种方式,抽象语法树被用来检测异常查询,其可以比用于检测异常查询的其他方法(诸如统计方法和/或类似物)更灵活且计算更有效率。此外,抽象语法树使得能够使用查询与白名单条目之间的基于阈值的相似性比较、查询与白名单条目之间的加权比较、和/或类似物,由此增加本文描述的实施方式的多功能性和有效性,并且基于与白名单的不精确匹配而减少误报(falsepositive)。
图1是本文描述的示例实施方式100的概览的示图。如所示出的,实施方式100包括分析设备110(例如,关于图2和图5更详细描述的分析设备220)和安全服务器120(例如,关于图2更详细描述的安全服务器210)。
如参考标号130示出的,分析设备110可以从客户端设备接收查询。例如,该查询可以包括SQL查询,但是该查询可以包括任何查询(例如,针对关系数据库的查询或另外类型的查询)。如参考标号140示出的,如本文其他地方更详细描述的,分析设备110可以生成抽象语法树。如参考标号150示出的,分析设备110可以将抽象语法树与白名单相比较。例如,白名单可以标识用于如下的查询的抽象语法树,这些查询被认为可允许用于存储设备的处理。在一些实施方式中,如下面更详细描述的,白名单可以在遇到可允许的查询时被填充。
如参考标号160示出的,如本文其他地方更详细描述的,分析设备110可以确定抽象语法树与白名单不匹配。如参考标号170示出的,基于抽象语法树与白名单不匹配,分析设备110可以执行一个或多个动作。例如,分析设备110可以通知与安全服务器120相关联的管理员。作为另一示例,分析设备110可以阻挡查询的源(例如,客户端设备240)。在一些实施方式中,如本文其他地方更详细描述的,分析设备110可以执行另外的动作。
以这种方式,分析设备110使用抽象语法树来检测异常查询,其可以比用于检测异常查询的其他方法(诸如统计方法和/或类似物)更灵活且计算更有效率。此外,抽象语法树使得能够使用查询与白名单条目之间的基于阈值的相似性比较、查询与白名单条目之间的加权比较、和/或类似物,由此增加本文描述的实施方式的多功能性和有效性,并且基于与白名单的不精确匹配而减少误报。
如上面指出的,图1被提供仅作为示例。其他示例是可能的并且可以不同于关于图1描述的示例。
图2是本文描述的系统和/或方法可以实施在其中的示例环境200的示图。如图2中示出的,环境200可以包括安全服务器210、分析设备220、存储设备230、客户端设备240和网络250。环境200的设备可以经由有线连接、无线连接、或者有线连接和无线连接的组合而互连。
安全服务器210包括一个或多个设备,该一个或多个设备能够接收、生成、存储、处理、和/或提供查询和与查询相关联的信息,诸如描述查询的抽象语法树、与查询相关联的抽象语法树的白名单、和/或类似信息。例如,安全服务器210可以包括网络设备(例如,防火墙、路由器、网关、交换机、集线器、网桥、反向代理、服务器(例如,代理服务器)、安全设备、入侵检测设备、负载平衡器、或类似设备)、服务器设备、和/或类似物。在一些实施方式中,安全服务器210可以包括与存储设备230的管理员相关联的一个或多个设备和/或与存储设备230相关联的数据库。例如,安全服务器210可以包括用户设备(例如,智能电话、膝上型计算机、平板计算机、手持式计算机、和/或类似物)或类似设备。
分析设备220包括一个或多个设备,该一个或多个设备能够收集、接收和/或分析在去往存储设备230途中的查询。例如,分析设备220可以包括网络设备(例如,防火墙、路由器、网关、交换机、集线器、网桥、反向代理、服务器(例如,代理服务器)、安全设备、入侵检测设备、负载平衡器、或类似设备)。在一些实施方式中,环境200可以包括多个不同的分析设备220。在一些实施方式中,分析设备220可以被包括在安全服务器210中,或安全服务器210可以被包括在分析设备220中。在一些实施方式中,如本文其他地方更详细描述的,分析设备220可以包括一个或多个收集器。
存储设备230包括存储设备,诸如服务器设备、用户设备(例如,个人计算机、膝上型计算机、和/或类似物)、或能够存储数据库(诸如关系数据库)的另外的设备。存储设备230可以存储数据库,并且可以基于从另一设备(例如,客户端设备240、安全服务器210等)接收的查询而从数据库提供数据。在一些实施方式中,环境200可以包括多个不同的存储设备230。
客户端设备240包括能够提交查询(诸如关系数据库查询)的一个或多个设备。例如,客户端设备240可以包括网络设备、用户设备(例如,智能电话、膝上型计算机、平板计算机、手持式计算机、和/或类似物)、服务器设备、僵尸网络、被劫持的设备、和/或类似物。
网络250包括一个或多个有线网络和/或无线网络。例如,网络250可以包括蜂窝网络(例如,长期演进(LTE)网络、码分多址(CDMA)网络、3G网络、4G网络、5G网络、另一类型的下一代网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如,公共交换电话网络(PSTN))、私有网络、自组织网络、内联网、互联网、基于光纤的网络、云计算网络、或类似物、和/或这些或其他类型的网络的组合。
图2中示出的设备和网络的数目和布置被提供作为示例。在实践中,与图2中示出的那些相比,可以存在另外的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者不同地布置的设备和/或网络。此外,图2中示出的两个或更多个设备可以被实施在单个设备中,或者图2中示出的单个设备可以被实施为多个分布式设备。另外地或替换地,环境200的设备集合(例如,一个或多个设备)可以执行被描述为由环境设备200的另一设备集合执行的一个或多个功能。
图3是设备300的示例组件的示图。设备300可以对应于安全服务器210、分析设备220、存储设备230和客户端设备240。在一些实施方式中,安全服务器210、分析设备220、存储设备230和/或客户端设备240可以包括一个或多个设备300和/或设备300的一个或多个组件。如图3中示出的,设备300可以包括总线310、处理器320、存储器330、存储组件340、输入组件350、输出组件360和通信接口370。
总线310包括允许设备300的组件之间的通信的组件。处理器320以硬件、固件、或硬件和软件的组合来实施。处理器320是中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或另外类型的处理组件。在一些实施方式中,处理器320包括能够被编程为执行功能的一个或多个处理器。存储器330包括随机访问存储器(RAM)、只读存储器(ROM)、和/或存储用于由处理器320使用的信息和/或指令的另外类型的动态或静态存储设备(例如,闪存、磁存储器、和/或光存储器)。
存储组件340存储与设备300的操作和使用有关的信息和/或软件。例如,存储组件340可以包括硬盘(例如,磁盘、光盘、磁光盘、和/或固态盘)、紧致盘(CD)、数字多功能盘(DVD)、软盘、盒式磁带、磁带、和/或另外类型的非暂态计算机可读介质、以及对应的驱动器。
输入组件350包括允许设备300接收信息的组件,诸如经由用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关、和/或麦克风)。另外地或替换地,输入组件350可以包括用于感测信息的传感器(例如,全球定位系统(GPS)组件、加速度计、陀螺仪、和/或致动器)。输出组件360包括从设备300提供输出信息的组件(例如,显示器、扬声器、和/或一个或多个发光二极管(LED))。
通信接口370包括类似收发器的组件(例如,收发器和/或分离的接收器和发射器),其使得设备300能够与其他设备通信,诸如经由有线连接、无线连接、或有线连接和无线连接的组合。通信接口370可以允许设备300从另一设备接收信息,和/或向另一设备提供信息。例如,通信接口370可以包括以太网接口、光学接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、Wi-Fi接口、蜂窝网络接口、或类似物。
设备300可以执行本文描述的一个或多个过程。设备300可以基于处理器320执行由非暂态计算机可读介质(诸如存储器330和/或存储组件340)存储的软件指令来执行这些过程。计算机可读介质在本文中被定义为非暂态存储器设备。存储器设备包括单个物理存储设备内的存储器空间或跨多个物理存储设备散布的存储器空间。
软件指令可以经由通信接口370从另一计算机可读介质或从另一设备被读取到存储器330和/或存储组件340中。当被执行时,存储器330和/或存储组件340中存储的软件指令可以使得处理器320执行本文描述的一个或多个过程。另外地或替换地,可以使用硬连线电路代替软件指令或与之组合,以执行本文描述的一个或多个过程。因此,本文描述的实施方式不限于硬件电路和软件的任何特定组合。
图3中示出的组件的数目和布置被提供作为示例。在实践中,设备300可以包括与图3中示出的那些相比另外的组件、更少的组件、不同的组件、或不同地布置的组件。另外地或替换地,设备300的组件集合(例如,一个或多个组件)可以执行被描述为由设备300的另一组件集合执行的一个或多个功能。
图4是用于基于抽象语法树来处理关系数据库查询的示例过程400的流程图。在一些实施方式中,图4的一个或多个过程框可以由分析设备220来执行。在一些实施方式中,图4的一个或多个过程框可以由与分析设备220分离或包括分析设备220的另一设备或一组设备(诸如安全服务器210、存储设备230、和/或客户端设备240)来执行。
如图4中示出的,过程400可以包括:接收针对由数据库存储的数据的查询(框410)。例如,分析设备220可以接收去往存储数据库的存储设备230途中的查询。在一些实施方式中,分析设备220可以从客户端设备240接收查询。例如,分析设备220可以接收(例如,拦截、检测等)在从客户端设备240到存储设备230途中的查询。
在一些实施方式中,查询可以包括关系数据库查询,诸如SQL查询或针对另一关系数据库语言的查询。然而,本文描述的实施方式不必然限于涉及针对关系数据库的查询的那些实施方式,并且可以被实施用于任何类型的查询。如下面更详细描述的,分析设备220可以接收查询以确定查询是否异常。例如,在一些情况下,恶意实体可以穿透一个或多个安全层以获取对存储设备230的访问。在这种情况下,恶意实体可能想要访问由存储设备230存储的记录。例如,恶意实体可能想要访问大量敏感信息、特定类型的信息(例如,联系信息、密码、密码哈希、银行信息、财务信息、医疗信息、选民记录等)、或由数据库存储的某种其他类型的信息。恶意实体可以提供查询以访问该信息。
如图4中进一步示出的,过程400可以包括:基于查询来生成抽象语法树(框420)。例如,分析设备220可以基于查询来生成抽象语法树。抽象语法树(有时缩写为AST)是代码的抽象语法结构的树表示。抽象语法树的每个节点可以标示在代码中出现的构造。这里,代码是由分析设备220接收的查询。在一些实施方式中,分析设备220可以能够有效地生成抽象语法树,因为生成抽象语法树已经是分析设备220可以针对查询执行的处理过程的一部分。因此,与检测异常查询的其他技术(诸如统计方法和/或类似物)相比,本文描述的实施方式可以不是计算繁重的。
在一些实施方式中,分析设备220可以确定是否要针对查询生成抽象语法树。例如,分析设备220可以基于查询的源来确定是否要生成抽象语法树(例如,可以基于查询来自特定源来确定要生成抽象语法树,或者可以基于查询来自特定源来确定不生成抽象语法树)。作为另一示例,分析设备220可以基于(例如,来自特定源或源集合的)特定数目的查询在阈值时间量中被接收,来确定是否要生成抽象语法树。例如,当特定数目的查询已经在阈值时间量中从特定源或源集合被接收时,分析设备220可以针对一个或多个查询生成抽象语法树。
由于各种原因,生成抽象语法树对于分析设备220可能是有益的。例如,并且如上面描述的,分析设备220在生成抽象语法树时可以是有效率的,因为分析设备220在处理查询时可能已经使用抽象语法树。这也意味着,不需要定义用于生成数据结构以标识异常查询的新过程或技术,这节省了分析设备220的开发时间和资源。此外,并且如下面更详细描述的,抽象语法树允许分析设备220在查询之间进行基于阈值的比较,从而与列入白名单的查询具有阈值相似性的查询可以容易地被标识。更进一步地,抽象语法树可以计入查询之间的细微差异,这些细微差异可能挫败(foil)基于规则的先验定义的异常查询检测系统。
如图4中进一步示出的,过程400可以包括:确定抽象语法树是否与列表相匹配(框430)。例如,分析设备220可以确定抽象语法树是否与列表的条目相匹配。列表可以标识抽象语法树。例如,列表可以是与可允许的查询相对应的抽象语法树的白名单。尽管本文描述的实施方式有时关于列表来描述,但是任何数据结构可以用来存储或标识与查询相对应的抽象语法树(例如,图形数据结构、关系数据结构等)。
在一些实施方式中,分析设备220可以存储列表。这可以节省网络资源,并且减少与检查由另一设备存储的列表相关联的时延。在一些实施方式中,另一设备(例如,安全服务器210、存储设备230等)可以存储列表。这可以节省分析设备220的本地存储资源。在一些实施方式中,安全服务器210可以存储列表,并且可以向分析设备220提供关于列表的定期更新。以这种方式,列表的中央存储库可以被维护,而使得能够添加与从许多不同的分析设备220接收的查询有关的列表条目。
在一些实施方式中,列表可以标识与白名单相关联的抽象语法树(例如,与可允许的查询相关联的抽象语法树)。使用白名单来标识抽象语法树查询可以允许随着遇到更多可允许的查询(例如,基于管理员批准查询)的对白名单的适应性更新。这可能比尝试使用先验规则来定义黑名单更有效率,因为语法中的变化可能会使黑名单失效。在一些实施方式中,列表可以标识与将被拒绝或标记用于通知的查询相关联的抽象语法树(例如,与黑名单或灰名单相关联的抽象语法树)。例如,黑名单可以标识如下的抽象语法树:对于该抽象语法树,客户端设备240(从其接收到列入黑名单的查询)应当被阻挡。在一些实施方式中,列表可以标识列入白名单的抽象语法树和列入黑名单或列入灰名单的抽象语法树。
在一些实施方式中,分析设备220可以基于阈值来确定抽象语法树是否与列表相匹配。例如,分析设备220可以将抽象语法树与列表的一个或多个抽象语法树相比较。当抽象语法树与一个或多个抽象语法树之间的相似性得分满足阈值时,分析设备220可以确定抽象语法树与列表相匹配。当相似性得分不满足阈值时,分析设备220可以确定抽象语法树与列表不匹配。使用阈值可以进一步改善异常查询的标识的鲁棒性,并且可以基于标识与白名单不精确匹配的查询而减少否则可能引发的处理器使用。
如图4中进一步示出的,过程400可以包括:基于抽象语法树是否与列表相匹配来选择性地执行动作(框440)。例如,分析设备220可以基于抽象语法树是否与列表(例如,列表的任何条目)相匹配来执行动作。作为示例,假定列表是白名单。在该情况下,当抽象语法树与列表相匹配时,分析设备220可以将查询转发到存储设备230,用于提供与查询相关联的数据。此外,当抽象语法树与列表不匹配时,分析设备220可以执行另一动作,诸如通知管理员,将查询提供给安全服务器210,标记查询用于(例如,由管理员)审核,阻挡从其接收到查询的客户端设备240,隔离存储设备230,和/或类似物。作为另一示例,假定列表是黑名单。当抽象语法树与列表相匹配时,分析设备220可以执行动作,诸如通知管理员,标记查询用于(例如,由管理员)审核,阻挡从其接收到查询的客户端设备240,隔离存储设备230,和/或类似物。在一些实施方式中,安全服务器210可以执行该动作。例如,分析设备220可以确定查询与白名单不匹配,并且可以将查询提供给安全服务器210用于确定要执行的动作。
在一些实施方式中,分析设备220可以更新列表和/或用于确定抽象语法树是否与列表相匹配的标准。例如,当列表是白名单时,并且当用于该查询的抽象语法树与列表不匹配且稍后(例如,由管理员)被批准为可允许时,分析设备220可以将用于该查询的抽象语法树添加到列表。另外地或替换地,分析设备220可以更新用来确定抽象语法树是否与列表相匹配的阈值。例如,如果基于特定查询(例如,抽象语法树)不满足阈值,特定查询(例如,抽象语法树)被确定为与白名单不匹配,并且稍后被确定为可允许,则分析设备220可以调整阈值。
在一些实施方式中,分析设备220可以基于使用机器学习技术确定的模型,来确定抽象语法树是否与列表相匹配,和/或可以确定要执行的动作。例如,分析设备220可以基于抽象语法树(例如,查询)和对应的分类(例如,可允许的或不可允许的)的训练集合,来确定和/或训练模型。在一些实施方式中,分析设备220可以基于抽象语法树(例如,查询)和关于抽象语法树要执行的对应动作,来训练模型。分析设备220可以使用模型来确定查询是否为可允许的,和/或关于查询要执行的动作。在一些实施方式中,分析设备220可以更新模型。例如,分析设备220可以接收反馈,该反馈有关于查询是否被正确分类和/或动作是否被正确标识。分析设备220可以基于反馈,使用机器学习技术来更新用来确定分类和/或动作的参数。以这种方式,机器学习技术可以用来确定分类和/或动作,这改善了分析设备220的鲁棒性,并且随着时间的推移提高了查询的分类的准确性。
在一些实施方式中,安全服务器210可以被配置为检测对数据库服务器的未授权访问。对于一种实施例,安全服务器210从一个或多个数据收集器(例如,分析设备220)接收被寻址到一个或多个数据库服务器的查询。数据收集器可以驻留在网络设备内或与网络设备处于通信中,网络设备诸如入侵防御系统(IPS)收集器、防火墙、互联网内容适配协议(ICAP)/Web缓存通信协议(WCCP)收集器、milter邮件插件收集器、交换机收集器、和/或接入点。在一些实施方式中,收集器和网络设备可以是两个单独的数字设备(例如,参见F/W收集器和IDS收集器)。对于各种实施例,如关于图2更详细描述的,数据收集器可以驻留在数据库服务器内。
对于一种实施例,数据收集器可以在通信网络内的一个或多个点处。数据收集器,其例如可以包括tap端口或span端口(例如,交换机处的span端口IDS收集器),被配置为拦截来自网络的网络数据。数据收集器可以被配置为检测去往数据库服务器的一个或多个查询。例如,数据收集器被配置为基于数据分组中的目的地地址、头部信息、或其他信息来检测一个或多个查询。对于一种实施例,数据收集器被配置为标记去往数据库服务器的一个或多个查询用于进一步处理。
根据一种实施例,数据收集器(例如,分析设备220)被配置为:在将一个或多个查询标记为可疑和/或将一个或多个查询提供给安全服务器之前,对一个或多个查询进行过滤。数据收集器被配置为:通过针对在注册阶段期间接收的每个查询生成抽象语法树,来对一个或多个查询进行过滤。数据收集器被配置为基于在注册阶段期间接收的每个查询来生成AST白名单。AST白名单包括AST集合,该AST集合包括针对在注册阶段期间接收的每个查询生成的AST。对于各种实施例,在注册阶段期间接收的所有请求被认为是合法请求。对于其他实施例,安全服务器被配置为:基于在注册阶段期间从一个或多个数据收集器接收的一个或多个查询,来生成AST白名单。
数据收集器可以被配置为在检测阶段中操作。在检测阶段期间,数据收集器被配置为对照AST白名单来分析查询。对于各种实施例,数据收集器被配置为:通过针对每个查询生成AST,并且将生成的AST与AST白名单中包括的AST进行匹配,来分析查询。如果用于该查询的AST与白名单中包括的AST中的至少一个AST不匹配,则查询被标记(例如,标记为可疑或异常)。对于各种实施例,由数据收集器标记的查询被传输到安全服务器用于分析。对于一些实施例,数据收集器隔离每个被标记的查询,直到从安全服务器508发送更新。
数据收集器可以被配置为:通过比较AST以找到AST的每个子树与AST白名单中包括的一个AST的精确匹配,来将所接收的查询的所生成的AST匹配到与AST白名单中的AST。对于一些实施例,数据收集器可以被配置为:通过比较所生成的AST以找到所生成的AST与AST白名单中包括的一个AST的部分匹配,来将所接收的查询的所生成的AST匹配到AST白名单中的AST。例如,如果AST的一个或多个子树完全匹配,而AST的其他子树可能要求部分匹配或者可以被忽略,则可以确定匹配。在一个示例中,如果生成的AST的子树的至少一部分与AST白名单中的AST匹配,则可以确定匹配。
对于各种实施例,数据收集器可以被配置为将查询划分为一个或多个类别,每个类别具有对应的AST白名单。部分匹配和类别的使用提供了跨不同应用检测更多具体异常的益处,这导致更好的异常检测。
查询类别的示例是SELECT查询。除了各种行选择条件之外,SELECT查询还包含要检索的列的列表。从安全性视角来看,列的列表中的改变可能是相关的,而行选择条件中的改变可能不相关,因为前者反映对查询的定性改变,而后者反映定量改变。因此,数据收集器可以被配置为,针对SELECT查询,匹配与列改变相对应的所生成的AST的部分。如果SELECT查询的一部分与SELECT查询类别中的AST白名单中的所生成的AST的一部分不匹配,则数据收集器可以被配置为标记查询和/或生成警报。然而,给出匹配的列集合的行选择条件中的不匹配可能不会导致数据收集器标记查询并且生成警报。
查询类别的另一示例是web应用查询。由于web应用包含固定数目的查询模式,所以AST白名单被生成以覆盖用于web应用的查询模式。该方法具有如下的益处:提供了检测在注册阶段期间未看到的定性地不同的查询的能力。该方法的另一益处是,不像用于确定异常的统计方法,如果查询仅导致定量差异(例如,查询中相同种类的数据的更多或更少的行),则该方法将不会生成误报。
对于各种实施例,数据收集器(或与数据收集器相关联的代理)可以被配置为从安全服务器508接收对AST白名单的更新。安全服务器508可以被配置为分析由数据收集器标记的一个或多个查询。如果由数据收集器标记的一个或多个查询被确定是值得信任的,也即,不是恶意的,则安全服务器被配置为向网络中的一个或多个数据收集器传输对AST白名单的更新。
网络设备包括被配置为通过网络来接收和提供数据的任何设备。网络设备的示例包括但不限于路由器、网桥、安全器具、防火墙、web服务器、邮件服务器、无线接入点(例如,热点)、以及交换机。
尽管图4示出了过程400的示例框,但是在一些实施方式中,过程400可以包括与图4中描绘的那些相比另外的框、更少的框、不同的框、或者不同地布置的框。另外地或替换地,过程400的框中的两个或更多个框可以并行执行。
图5图示了分析设备220的示例实施例。根据一种实施例,该系统包括一个或多个处理单元(处理器)504、一个或多个通信接口506、存储器508、以及用于互连这些组件的一个或多个通信总线510。系统502可以可选地包括用户接口或报告模块526,用户接口或报告模块526包括显示设备528、键盘530、触摸屏532、和/或其他输入/输出设备。存储器508可以包括高速随机访问存储器,并且还可以包括非易失性存储器,诸如一个或多个磁或光存储盘。存储器508可以包括远离处理器504定位的大容量存储装置。此外,存储器508或者替换地是存储器508内的一个或多个存储设备(例如,一个或多个非易失性存储设备)包括计算机可读存储介质。存储器508可以存储以下元件或这样的元件的子集或超集:操作系统512、网络通信模块514、收集模块516、数据标记模块518和报告模块520。操作系统512包括用于处理各种基本系统服务和用于执行硬件相关任务的过程。网络通信模块514(或指令)用于经由一个或多个通信接口506和一个或多个通信网络(诸如互联网、其他广域网、局域网、城域网、以及其他类型的网络)将系统连接到其他计算机、客户端、对等端、系统、数据库或设备。
收集模块516(或指令)使用包括本文描述的那些技术在内的技术,来检测对数据库的一个或多个查询、网络流量模式、实时观测、受危害实体的指示符、以及其他可疑数据。此外,收集模块516被配置为从一个或多个源接收网络数据(例如,潜在的可疑数据)。网络数据是在网络上从一个数字设备提供给另一数字设备的数据或网络流量。收集模块516可以使用包括本文描述的那些技术在内的技术,基于例如白名单、黑名单、启发式分析、统计分析、规则、或其他确定,来将查询标记为可疑数据。在一些实施例中,源包括被配置为接收网络数据(诸如对数据库的查询)的数据收集器。例如,防火墙、IPS、服务器、路由器、交换机、接入点和类似物可以,个体地或共同地,用作或包括数据收集器。数据收集器可以向收集模块516转发网络数据,诸如对数据库的查询。
对于一种实施例,数据收集器使用包括本文描述的那些技术在内的技术,在向收集模块516提供一个或多个查询之前,对一个或多个查询进行过滤。例如,数据收集器可以被配置为使用包括本文描述的那些技术在内的技术,来收集或拦截一个或多个查询。在一些实施例中,数据收集器可以被配置为遵循所配置的规则。例如,如果查询中的一个或多个查询被定向在两个已知且值得信任的源之间(例如,数据在白名单上的两个设备之间被传送),则数据收集器可以不收集该一个或多个查询。在各种实施例中,规则可以用来定义要分析的一个或多个查询类别。在一些实施例中,规则可以被配置为以攻击或有效载荷的类别为目标。在一些实施例中,该系统可以作出推荐(例如,经由报告模块526)和/或配置用于收集模块516和/或数据收集器的规则。本领域的技术人员将明白,数据收集器可以包括与何时收集数据或收集什么数据有关的任何数目的规则。
对于一种实施例,位于网络中的各种位置的数据收集器可以不执行与所收集的数据是可疑的还是值得信任的有关的任何评估或确定。例如,数据收集器可以收集所有接收到的查询,并且将收集的查询提供给收集模块516,收集模块516可以使用包括本文描述的那些技术在内的技术来执行分析和/或过滤。
数据标记模块518(或指令)可以使用包括本文描述的那些技术在内的技术来分析数据,和/或对由收集模块516和/或数据收集器接收到的所收集的一个或多个查询执行一个或多个评估,以确定拦截的一个或多个查询是否为对数据库的未授权访问。数据标记模块518可以使用包括本文描述的那些技术在内的技术、规则和其他分析技术来应用匹配抽象语法树,以确定所收集的一个或多个查询是否应当被标记为对数据库的未授权访问。
对于一种实施例,收集的查询可以初始地被标识为对数据库的未授权访问,直到以其他方式确定(例如,与白名单相关联)或启发法找不到一个或多个查询应当被标记的原因。数据标记模块518可以使用包括本文描述的那些技术在内的技术来执行分组分析,以查找头部、脚部(footer)、目的地IP、源IP、有效载荷、以及类似物中的可疑特性。本领域的技术人员将明白,数据标记模块518可以执行启发式分析、统计分析、和/或签名标识(例如,基于签名的检测涉及在所收集的数据的代码内搜索可疑数据的已知模式),以确定收集的一个或多个查询是否为对数据库的未授权访问。基于机器学习的分类模型也可以被应用于该确定。
数据标记模块518可以驻留在数据收集器处、在系统处、部分在数据收集器处、部分在安全服务器处、或者在网络设备上。例如,路由器可以包括数据收集器和数据标记模块518,其被配置为对收集的查询执行一个或多个启发式评估。软件定义网络(“SDN”)交换机是被配置为实施数据标记和对功能进行过滤的网络设备的示例。如果所收集的一个或多个查询被确定为是对数据库的未授权访问,则路由器可以将所收集的查询定向到安全服务器。
对于一种实施例,数据标记模块518可以被更新。在一个示例中,安全服务器可以提供用于抽象语法树白名单的条目、用于黑名单的条目、启发式算法、统计算法、更新的规则、和/或新签名,以帮助数据标记模块518确定查询是否为对数据库的未授权访问。抽象语法树白名单、用于白名单的条目、黑名单、用于黑名单的条目、启发式算法、统计算法、和/或新签名可以由一个或多个安全服务器生成(例如,经由报告模块520)。
报告模块520(或指令)被配置为基于例如从数据收集器接收的一个或多个警报,来生成抽象语法树白名单。此外,报告模块520被配置为生成如本文描述的对抽象语法树白名单的更新。
如上面指出的,图5被提供作为示例。其他示例是可能的并且可以不同于关于图5描述的示例。
以这种方式,分析设备220使用抽象语法树来检测异常查询,其可以比用于检测异常查询的其他方法(诸如统计方法和/或类似物)更灵活且计算更有效率。此外,抽象语法树使得能够使用查询与白名单条目之间的基于阈值的相似性比较、查询与白名单条目之间的加权比较、和/或类似物,由此增加本文描述的实施方式的多功能性和有效性,并且基于与白名单的不精确匹配而减少误报。
根据一些实施例,提供了一种设备,所述设备包括:一个或多个存储器;以及一个或多个处理器,通信地耦合到所述一个或多个存储器,用于:接收针对由数据库存储的数据的查询;基于所述查询来生成抽象语法树;确定所述抽象语法树是否与列表相匹配,其中所述列表标识与查询或查询类型相对应的一个或多个抽象语法树;以及基于所述抽象语法树是否与所述列表相匹配,来选择性地执行动作。
在一些实施例中,所述列表标识可允许的查询或查询类型。
在一些实施例中,所述一个或多个处理器在执行所述动作时用于:基于确定所述抽象语法树与所述列表相匹配,来提供所述查询用于与所述数据库一起使用。
在一些实施例中,所述一个或多个处理器在执行所述动作时用于:基于所述抽象语法树与所述列表不匹配,来通知管理员或阻挡从其接收到所述查询的客户端设备。
在一些实施例中,所述一个或多个处理器用于:接收关于所述查询的反馈;以及基于所述反馈来更新所述列表。
在一些实施例中,所述一个或多个处理器在确定所述抽象语法树是否与所述列表相匹配时用于:基于阈值来确定所述抽象语法树是否与所述列表相匹配,所述阈值基于所述抽象语法树与所述列表的一个或多个条目的比较。
在一些实施例中,所述一个或多个处理器进一步用于:确定所述抽象语法树是否将针对所述查询被生成;以及其中所述一个或多个处理器在基于所述查询来生成所述抽象语法树时用于:基于确定所述抽象语法树将针对所述查询被生成,来生成所述抽象语法树。
根据一些实施例,提供了一种存储指令的非暂态计算机可读介质,所述指令包括:一个或多个指令,所述一个或多个指令在由一个或多个处理器执行时,使得所述一个或多个处理器:接收针对由数据库存储的数据的查询;基于所述查询来生成抽象语法树;确定所述抽象语法树是否与列表相匹配,其中所述列表标识与可允许的查询或查询类型相对应的一个或多个抽象语法树;以及基于确定所述抽象语法树与所述列表相匹配来执行动作。
在一些实施例中,所述确定基于所述抽象语法树与所述列表的条目之间的部分匹配。
在一些实施例中,所述动作包括阻挡所述查询的源。
在一些实施例中,所述动作包括向设备提供通知。
在一些实施例中,所述通知包括所述查询。
在一些实施例中,所述一个或多个指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器:接收标识所述列表的信息,其中所述列表定期被更新。
在一些实施例中,所述动作包括使得存储所述数据库的设备被隔离。
根据一些实施例一种方法,所述方法包括:由设备接收针对由数据库存储的数据的查询;由所述设备基于所述查询来生成抽象语法树;由所述设备确定所述抽象语法树是否与列表相匹配,其中所述列表标识与查询或查询类型相对应的一个或多个抽象语法树;以及选择性地:当所述抽象语法树与所述列表相匹配时,提供所述查询用于所述数据的提供,或者当所述抽象语法树与所述列表不匹配时,通知另外的设备。
在一些实施例中,所述确定基于所述抽象语法树与所述一个或多个抽象语法树的相似性是否满足阈值。
在一些实施例中,所述方法进一步包括:基于反馈来调整所述阈值,所述反馈与所述抽象语法树是否与所述列表相匹配的所述确定有关。
在一些实施例中,所述查询包括结构化查询语言(SQL)查询。
在一些实施例中,所述方法进一步包括:基于确定所述抽象语法树与所述列表不匹配,来存储或阻挡一个或多个其他查询。
在一些实施例中,所述方法进一步包括:基于接收到指示所述查询是可允许的信息,来将所述抽象语法树添加到所述列表。
前述公开内容提供说明和描述,但并非旨在穷举或将实施方式限于所公开的精确形式。修改和变化鉴于上述公开内容而是可能的,或者可以从实施方式的实践中获取。
如本文使用的,术语“组件”旨在宽泛地解释为硬件、固件、或硬件和软件的组合。
本文关于阈值描述了一些实施方式。如本文使用的,满足阈值可以是指值大于阈值、多于阈值、高于阈值、大于或等于阈值、小于阈值、少于阈值、低于阈值、小于或等于阈值、等于阈值、或类似物。
将明显的是,本文描述的系统和/或方法可以被实施在不同形式的硬件、固件、或硬件和软件的组合中。用来实施这些系统和/或方法的实际专用的控制硬件或软件代码不是对实施方式的限制。因此,本文没有参考特定软件代码来描述系统和/或方法的操作和行为—被理解的是,软件和硬件可以被设计以基于本文的描述来实施系统和/或方法。
即使特定的特征组合在权利要求中记载和/或在说明书中公开,但是这些组合并不旨在限制可能的实施方式的公开。实际上,这些特征中的许多特征可以按照未在权利要求中具体记载和/或在说明书中公开的方式来组合。尽管下面列出的每个从属权利要求可能直接仅从属于一个权利要求,但是可能的实施方式的公开包括每个从属权利要求与权利要求集合中的每个其他权利要的组合。
本文使用的元件、动作或指令不应当被解释为是关键的或必要的,除非明确地如此描述。此外,如本文使用的,冠词“一种”和“一”旨在包括一个或多个项目,并且可以与“一个或多个”可互换地使用。再者,如本文使用的,术语“集合”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关项目和不相关项目的组合等),并且可以与“一个或多个”可互换地使用。在意图为仅一个项目的场合,使用术语“一个”或类似语言。此外,如本文使用的,术语“具有”、“带有”、“拥有”或类似物意图是开放式术语。进一步地,短语“基于”旨在意指“至少部分地基于”,除非另有明确陈述。
Claims (20)
1.一种使用抽象语法树的设备,包括:
用于接收针对由数据库存储的数据的查询的部件;
用于确定是否在阈值时间量中已经从特定源或源集合接收到特定数目的查询的部件;
用于基于所述查询,并且基于确定在所述阈值时间量中已经从所述特定源或源集合接收到所述特定数目的查询,来生成所述抽象语法树的部件;
用于确定所述抽象语法树是否与列表相匹配的部件,
其中所述列表标识与查询或查询类型相对应的一个或多个抽象语法树;以及
用于基于所述抽象语法树是否与所述列表相匹配来选择性地执行动作的部件。
2.根据权利要求1所述的设备,其中所述列表标识可允许的查询或查询类型。
3.根据权利要求1所述的设备,进一步包括:
用于基于确定所述抽象语法树与所述列表相匹配来提供所述查询用于与所述数据库一起使用的部件。
4.根据权利要求1所述的设备,进一步包括:
用于基于所述抽象语法树与所述列表不匹配来通知管理员或阻挡从其接收到所述查询的客户端设备的部件。
5.根据权利要求1所述的设备,进一步包括:
用于接收关于所述查询的反馈的部件;以及
用于基于所述反馈来更新所述列表的部件。
6.根据权利要求1所述的设备,进一步包括:
用于基于阈值来确定所述抽象语法树是否与所述列表相匹配的部件,所述阈值基于所述抽象语法树与所述列表的一个或多个条目的比较。
7.根据权利要求1所述的设备,进一步包括:
用于确定所述抽象语法树是否将针对所述查询被生成的部件;以及
其中用于生成所述抽象语法树的所述部件进一步包括:
用于基于确定所述抽象语法树将针对所述查询被生成来生成所述抽象语法树的部件。
8.一种存储指令的非暂态计算机可读介质,所述指令包括:
一个或多个指令,所述一个或多个指令在由一个或多个处理器执行时,使得所述一个或多个处理器:
接收针对由数据库存储的数据的查询;
确定是否在阈值时间量中已经从特定源或源集合接收到特定数目的查询;
基于所述查询,并且基于确定在所述阈值时间量中已经从所述特定源或源集合接收到所述特定数目的查询,来生成抽象语法树;
确定所述抽象语法树是否与列表相匹配,
其中所述列表标识与可允许的查询或查询类型相对应的一个或多个抽象语法树;以及
基于确定所述抽象语法树与所述列表相匹配来执行动作。
9.根据权利要求8所述的非暂态计算机可读介质,其中所述抽象语法树与所述列表相匹配的所述确定基于所述抽象语法树与所述列表的条目之间的部分匹配。
10.根据权利要求8所述的非暂态计算机可读介质,其中所述动作包括阻挡所述查询的源。
11.根据权利要求8所述的非暂态计算机可读介质,其中所述动作包括向设备提供通知。
12.根据权利要求11所述的非暂态计算机可读介质,其中所述通知包括所述查询。
13.根据权利要求8所述的非暂态计算机可读介质,其中所述一个或多个指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器:
接收标识所述列表的信息,其中所述列表定期被更新。
14.根据权利要求8所述的非暂态计算机可读介质,其中所述动作包括使得存储所述数据库的设备被隔离。
15.一种使用抽象语法树的方法,包括:
由设备接收针对由数据库存储的数据的查询;
由所述设备确定是否在阈值时间量中已经从特定源或源集合接收到特定数目的查询;
由所述设备基于所述查询,并且基于确定在所述阈值时间量中已经从所述特定源或源集合接收到所述特定数目的查询,来生成所述抽象语法树;
由所述设备确定所述抽象语法树是否与列表相匹配,
其中所述列表标识与查询或查询类型相对应的一个或多个抽象语法树;以及
选择性地:
当所述抽象语法树与所述列表相匹配时,提供所述查询用于所述数据的提供,或者
当所述抽象语法树与所述列表不匹配时,通知另外的设备。
16.根据权利要求15所述的方法,其中所述抽象语法树与所述列表相匹配的所述确定基于所述抽象语法树与所述一个或多个抽象语法树的相似性是否满足阈值。
17.根据权利要求16所述的方法,进一步包括:
基于反馈来调整所述阈值,所述反馈与所述抽象语法树是否与所述列表相匹配的所述确定有关。
18.根据权利要求15所述的方法,其中所述查询包括结构化查询语言(SQL)查询。
19.根据权利要求15所述的方法,进一步包括:
基于确定所述抽象语法树与所述列表不匹配,来存储或阻挡一个或多个其他查询。
20.根据权利要求15所述的方法,进一步包括:
基于接收到指示所述查询是可允许的信息,来将所述抽象语法树添加到所述列表。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/858,710 US10637887B2 (en) | 2017-12-29 | 2017-12-29 | System for query injection detection using abstract syntax trees |
US15/858,710 | 2017-12-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992989A CN109992989A (zh) | 2019-07-09 |
CN109992989B true CN109992989B (zh) | 2023-10-13 |
Family
ID=63722153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811150820.3A Active CN109992989B (zh) | 2017-12-29 | 2018-09-29 | 使用抽象语法树的用于查询注入检测的系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10637887B2 (zh) |
EP (1) | EP3506141B1 (zh) |
CN (1) | CN109992989B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10637887B2 (en) | 2017-12-29 | 2020-04-28 | Cyphort Inc. | System for query injection detection using abstract syntax trees |
US11455410B2 (en) | 2019-04-18 | 2022-09-27 | Microsoft Technology Licensing, Llc | Data privacy pipeline providing collaborative intelligence and constraint computing |
US11409904B2 (en) | 2019-04-18 | 2022-08-09 | Microsoft Technology Licensing, Llc | User interface for building a data privacy pipeline and contractual agreement to share data |
US11409897B2 (en) * | 2019-04-18 | 2022-08-09 | Microsoft Technology Licensing, Llc | Constraint querying for collaborative intelligence and constraint computing |
US11356456B2 (en) | 2019-04-18 | 2022-06-07 | Microsoft Technology Licensing, Llc | Multi-participant and cross-environment pipelines |
US11403299B2 (en) * | 2019-04-18 | 2022-08-02 | Microsoft Technology Licensing, Llc | Constraint manager for collaborative intelligence and constraint computing |
US10897397B2 (en) * | 2019-05-22 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Grammar for configuration validation |
CN110580170B (zh) * | 2019-09-12 | 2023-07-21 | 中国工商银行股份有限公司 | 软件性能风险的识别方法及装置 |
CN110581864B (zh) * | 2019-11-11 | 2020-02-21 | 北京安博通科技股份有限公司 | 一种sql注入攻击的检测方法及装置 |
CN111221804A (zh) * | 2019-12-27 | 2020-06-02 | 北京健康之家科技有限公司 | 基于抽象语法树的防数据越权方法、装置及存储介质 |
CN113139183B (zh) * | 2020-01-17 | 2023-12-29 | 深信服科技股份有限公司 | 一种检测方法、装置、设备及存储介质 |
WO2021149119A1 (ja) * | 2020-01-20 | 2021-07-29 | 日本電信電話株式会社 | 推定システム及び推定プログラム |
US11334569B2 (en) * | 2020-01-21 | 2022-05-17 | International Business Machines Corporation | Unique SQL query transfer for anomaly detection |
US11632380B2 (en) * | 2020-03-17 | 2023-04-18 | International Business Machines Corporation | Identifying large database transactions |
US11361106B2 (en) | 2020-09-01 | 2022-06-14 | Microsoft Technology Licensing, Llc | Chaining, triggering, and enforcing entitlements |
US11775681B2 (en) | 2020-09-01 | 2023-10-03 | Microsoft Technology Licensing, Llc | Enforcement flow for pipelines that include entitlements |
CN112416631B (zh) * | 2020-12-11 | 2024-09-13 | 广州伊智信息科技有限公司 | 一种消费端生成方法、装置、计算机设备以及存储介质 |
CN113553587B (zh) * | 2021-06-21 | 2024-02-23 | 深信服科技股份有限公司 | 一种文件检测方法、装置、设备及可读存储介质 |
US20230153420A1 (en) * | 2021-11-16 | 2023-05-18 | Saudi Arabian Oil Company | Sql proxy analyzer to detect and prevent unauthorized sql queries |
US20230185899A1 (en) * | 2021-12-15 | 2023-06-15 | Microsoft Technology Licensing, Llc | Code injection detection using syntactic deviation |
US11922145B2 (en) | 2022-03-01 | 2024-03-05 | Microsoft Technology Licensing, Llc | Initiating data privacy pipelines using reusable templates |
CN118152429B (zh) * | 2024-05-09 | 2024-09-03 | 上海森亿医疗科技有限公司 | 多源数据资产统一查询方法、系统、介质、产品及终端 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN101667190A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | 基于XQuery的查询引擎系统 |
CN102682047A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种混合的sql注入防护方法 |
EP2521049A1 (en) * | 2011-05-05 | 2012-11-07 | The Boeing Company | Methods and systems for validating input data |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN105447021A (zh) * | 2014-08-22 | 2016-03-30 | 国际商业机器公司 | 用于数据库查询的方法和系统 |
CN105808746A (zh) * | 2016-03-14 | 2016-07-27 | 中国科学院计算技术研究所 | 一种基于Hadoop体系的关系型大数据无缝接入方法及系统 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN107239710A (zh) * | 2016-03-29 | 2017-10-10 | 北京明略软件系统有限公司 | 一种数据库权限实现方法和系统 |
CN107292167A (zh) * | 2017-06-27 | 2017-10-24 | 北京计算机技术及应用研究所 | 基于精简语法树的sql语句安全检测方法 |
CN107403104A (zh) * | 2017-06-22 | 2017-11-28 | 努比亚技术有限公司 | 一种实现数据表查询限制的装置和方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895191B2 (en) * | 2003-04-09 | 2011-02-22 | International Business Machines Corporation | Improving performance of database queries |
US8635242B2 (en) * | 2006-10-11 | 2014-01-21 | International Business Machines Corporation | Processing queries on hierarchical markup data using shared hierarchical markup trees |
US7895192B2 (en) * | 2007-07-19 | 2011-02-22 | Hewlett-Packard Development Company, L.P. | Estimating the loaded execution runtime of a database query |
US20090125496A1 (en) * | 2007-11-13 | 2009-05-14 | B-Hive Networks, Inc | Network device and method for monitoring of backend transactions in data centers |
US20120084423A1 (en) * | 2010-10-04 | 2012-04-05 | Openwave Systems Inc. | Method and system for domain based dynamic traffic steering |
US8359305B1 (en) * | 2011-10-18 | 2013-01-22 | International Business Machines Corporation | Query metadata engine |
US9258321B2 (en) * | 2012-08-23 | 2016-02-09 | Raytheon Foreground Security, Inc. | Automated internet threat detection and mitigation system and associated methods |
US9239710B2 (en) * | 2013-03-15 | 2016-01-19 | ArtinSoft Corporation | Programming language transformations with abstract syntax tree extensions |
US9832646B2 (en) * | 2013-09-13 | 2017-11-28 | Network Kinetix, LLC | System and method for an automated system for continuous observation, audit and control of user activities as they occur within a mobile network |
US10482263B2 (en) * | 2015-04-01 | 2019-11-19 | Microsoft Technology Licensing, Llc | Computing on encrypted data using deferred evaluation |
US9736185B1 (en) * | 2015-04-21 | 2017-08-15 | Infoblox Inc. | DNS or network metadata policy for network control |
US9911001B2 (en) * | 2015-06-12 | 2018-03-06 | Pearson Education, Inc. | Automatic SQL query modification for data restriction |
US10127393B2 (en) * | 2015-07-20 | 2018-11-13 | The United States Of America, As Represented By The Secretary Of Commerce | Next generation access control system and process for controlling database access |
US9838422B2 (en) * | 2015-09-15 | 2017-12-05 | International Business Machines Corporation | Detecting denial-of-service attacks on graph databases |
US9940479B2 (en) * | 2015-10-20 | 2018-04-10 | International Business Machines Corporation | Identifying and tracking sensitive data |
US9916448B1 (en) * | 2016-01-21 | 2018-03-13 | Trend Micro Incorporated | Detection of malicious mobile apps |
EP3454230B1 (en) * | 2016-06-17 | 2020-07-01 | Nippon Telegraph And Telephone Corporation | Access classification device, access classification method, and access classification program |
US11281770B2 (en) * | 2016-08-11 | 2022-03-22 | Salesforce.Com, Inc. | Detection of structured query language (SQL) injection events using simple statistical analysis |
US10637887B2 (en) | 2017-12-29 | 2020-04-28 | Cyphort Inc. | System for query injection detection using abstract syntax trees |
-
2017
- 2017-12-29 US US15/858,710 patent/US10637887B2/en active Active
-
2018
- 2018-09-28 EP EP18197668.9A patent/EP3506141B1/en active Active
- 2018-09-29 CN CN201811150820.3A patent/CN109992989B/zh active Active
-
2020
- 2020-04-22 US US16/855,039 patent/US11558418B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN101667190A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | 基于XQuery的查询引擎系统 |
EP2521049A1 (en) * | 2011-05-05 | 2012-11-07 | The Boeing Company | Methods and systems for validating input data |
CN102682047A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种混合的sql注入防护方法 |
CN103761080A (zh) * | 2013-12-25 | 2014-04-30 | 中国农业大学 | 一种基于SQL的MapReduce作业生成方法及系统 |
CN105447021A (zh) * | 2014-08-22 | 2016-03-30 | 国际商业机器公司 | 用于数据库查询的方法和系统 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN105808746A (zh) * | 2016-03-14 | 2016-07-27 | 中国科学院计算技术研究所 | 一种基于Hadoop体系的关系型大数据无缝接入方法及系统 |
CN107239710A (zh) * | 2016-03-29 | 2017-10-10 | 北京明略软件系统有限公司 | 一种数据库权限实现方法和系统 |
CN107403104A (zh) * | 2017-06-22 | 2017-11-28 | 努比亚技术有限公司 | 一种实现数据表查询限制的装置和方法 |
CN107292167A (zh) * | 2017-06-27 | 2017-10-24 | 北京计算机技术及应用研究所 | 基于精简语法树的sql语句安全检测方法 |
Non-Patent Citations (3)
Title |
---|
Wang Lu 等.Design of code security detection system based on rule inspection.《2010 International Conference on Information, Networking and Automation (ICINA)》.2010,第2卷V2-346-V2-349. * |
崔娜.面向数据库性能的SQL语句解析与翻译.《现代电子技术》.2016,第39卷(第11期),第99-102、107页. * |
韩宸望 等.基于SQL语法树的SQL注入过滤方法研究.《网络与信息安全学报》.2016,第2卷(第11期),第70-77页. * |
Also Published As
Publication number | Publication date |
---|---|
US11558418B2 (en) | 2023-01-17 |
CN109992989A (zh) | 2019-07-09 |
EP3506141B1 (en) | 2021-02-17 |
US20190207974A1 (en) | 2019-07-04 |
US20200252427A1 (en) | 2020-08-06 |
US10637887B2 (en) | 2020-04-28 |
EP3506141A1 (en) | 2019-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109992989B (zh) | 使用抽象语法树的用于查询注入检测的系统 | |
Einy et al. | The anomaly‐and signature‐based IDS for network security using hybrid inference systems | |
US10237283B2 (en) | Malware domain detection using passive DNS | |
US10855700B1 (en) | Post-intrusion detection of cyber-attacks during lateral movement within networks | |
EP3430560B1 (en) | Using private threat intelligence in public cloud | |
EP1995929B1 (en) | Distributed system for the detection of eThreats | |
US10574681B2 (en) | Detection of known and unknown malicious domains | |
Jiang et al. | Identifying suspicious activities through dns failure graph analysis | |
US8516573B1 (en) | Method and apparatus for port scan detection in a network | |
US8260914B1 (en) | Detecting DNS fast-flux anomalies | |
US9032521B2 (en) | Adaptive cyber-security analytics | |
US10235521B2 (en) | Malware detection using clustering with malware source information | |
US20170118237A1 (en) | Modeling behavior in a network | |
CN114679329B (zh) | 用于基于赝象对恶意软件自动分组的系统 | |
US10642906B2 (en) | Detection of coordinated cyber-attacks | |
US20150082437A1 (en) | Method and apparatus for detecting irregularities on a device | |
Niu et al. | Identifying APT malware domain based on mobile DNS logging | |
Anumol | Use of machine learning algorithms with SIEM for attack prediction | |
CN116451215A (zh) | 关联分析方法及相关设备 | |
Suthar et al. | A signature-based botnet (emotet) detection mechanism | |
Chiou et al. | Network security management with traffic pattern clustering | |
EP4111660A1 (en) | Cyberattack identification in a network environment | |
Giacinto et al. | Alarm clustering for intrusion detection systems in computer networks | |
WO2022156293A1 (zh) | 处理告警日志的方法、装置及存储介质 | |
WO2016118153A1 (en) | Marking nodes for analysis based on domain name system resolution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |