CN106227812B - 一种数据库对象脚本安全风险的审计方法 - Google Patents
一种数据库对象脚本安全风险的审计方法 Download PDFInfo
- Publication number
- CN106227812B CN106227812B CN201610585672.2A CN201610585672A CN106227812B CN 106227812 B CN106227812 B CN 106227812B CN 201610585672 A CN201610585672 A CN 201610585672A CN 106227812 B CN106227812 B CN 106227812B
- Authority
- CN
- China
- Prior art keywords
- script
- parameter
- database
- execution route
- security risk
- 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
-
- 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/21—Design, administration or maintenance of databases
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及信息安全技术,旨在提供一种数据库对象脚本安全风险的审计方法。该种数据库对象脚本安全风险的审计方法包括下述步骤:扫描数据库的系统表,获取所有用户编写的数据库对象脚本;根据对象脚本构建执行路径树;在执行路径树跟踪参数变量,判断参数是否经过过滤,以及参数是否参与数据库操作;列出没有经过过滤,并且参与数据库操作的参数所在对象名、参数名和有风险的行号,形成扫描报告输出。本发明主要对脚本的入口参数进行分析,审计各个参数在执行过程中是否有过滤行为,能发现SQL注入等危害比较大的安全风险。
Description
技术领域
本发明是关于信息安全技术领域,特别涉及一种数据库对象脚本安全风险的审计方法。
背景技术
随着信息技术的发展,数据库成了很多企业的核心资产,特别是金融、互联网等企业,数据库一旦出现故障整个企业的业务立刻瘫痪,因此数据库安全越来越受到人们的重视。目前数据库系统越来越先进,功能也越来越强大,人们可以在数据库上开发各种对象供应用程序调用,比如各种存储过程、视图、触发器等,这方便了应用程序的开发,但同时也带来了各种安全问题。由于这些对象运行在数据库服务器上,能直接操作数据库,如果数据库对象开发人员开发时无意或有意的犯错,就可能会在数据库上留下后门或使数据库丢失数据,这些都会对数据库造成巨大的影响。因此对这些对象脚本的安全审计非常重要,但是很多时候由于审计人员经验欠缺或疏忽,这些对象脚本的安全风险不能被全部发现。而且很多时候由于没有审计人员,这些脚本直接写进了数据库。因此必须有方法能快速全面地发现脚本中的安全风险,降低脚本安全审计的难度。
目前常见的数据库安全扫描软件主要检测数据库系统配置风险和数据库软件本身的安全漏洞,分析的都是数据库系统的信息,没有对数据库对象脚本进行分析的功能。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种能够发现数据库对象脚本安全风险的方法。为解决上述技术问题,本发明的解决方案是:
提供一种数据库对象脚本安全风险的审计方法,具体包括下述步骤:
(1)扫描数据库的系统表,获取所有用户编写的数据库对象脚本;
(2)根据对象脚本构建执行路径树;具体包括下述子步骤:
步骤D:取步骤(1)返回的一个对象的脚本数据;
步骤E:根据语句分割符将脚本整理为语句列表;
步骤F:顺序解析语句列表,将每一条语句解析为操作符、涉及的变量和常量、下一步语句指针三部分;一条语句的三个部分就构成了执行路径树上的一个节点,各个节点通过指针连成一棵树,这棵树就是执行路径树;分支语句与循环语句的下一步指针有多个,通过变量条件判断执行哪一条;
(3)在执行路径树跟踪参数变量,判断参数是否经过过滤,以及参数是否参与数据库操作;具体包括下述子步骤:
步骤G:解析步骤D中所取的对象脚本,获得该脚本的传入参数列表;
步骤H:对步骤F中解析生成的执行路径树,从树上各个节点涉及的变量中,判断传入参数的起始节点,跟踪该传入参数在树中的执行路径,判断该参数是否有参与数据库操作的行为;
将有参与数据库操作的参数和执行路径记录下来(一个传入参数可能有多条参与数据库操作的执行路径),如果脚本有多个传入参数,则通过循环获得各个参与数据库操作的参数的执行路径;
步骤H主要用于过滤掉不参与数据库操作的传入参数;
步骤I:对步骤H获取的参数执行路径的各个节点进行判断是否有参数过滤行为,判断方法是节点的操作符是否包含在过滤关键字列表里;如果一条执行路径里的各个节点都没有参数过滤,那么这条执行路径就被判定是有问题的;
步骤J:循环执行步骤D、步骤E、步骤F、步骤G、步骤H、步骤I,直至完成对步骤(1)返回的所有对象脚本数据进行判断;
(4)列出没有经过过滤,并且参与数据库操作的参数所在对象名、参数名和有风险的行号,即将步骤J中得出的有问题的执行路径对应的参数列出,并显示参数所在的对象名称和参与数据库操作的行号,形成扫描报告输出。
在本发明中,所述步骤(1)具体包括下述子步骤:
步骤A:连接数据库;
步骤B:用SELECT语句获取数据库中各个对象的脚本(以Oracle数据库为例,获取数据库的系统视图All_SOURCE里各个对象的脚本),同时用WHERE语句排除系统的对象脚本,得到用户编写的对象脚本;
步骤C:将步骤B中获得的用户对象脚本列表按对象类型和所属用户区分排序后返回。
在本发明中,所述步骤(1)中,获取的对象脚本是指(包括存储过程、函数等)数据库系统中有调用参数的用户对象的脚本。
在本发明中,所述步骤H中,一个脚本参数的执行路径中,只要一条路径有安全风险就认为该参数有安全风险。
在本发明中,所述步骤I中用于判断参数是否经过过滤的关键字能用户自定义(数据库系统可能提供了过滤函数,用户也可能有自定义的过滤函数,都应该写到过滤关键字列表里)。
在本发明中,所述步骤(4)形成的扫描报告中,根据对象所属的用户定义有不同的危险等级,用于帮助用户更直观的了解脚本中的危险程度,从而优先修复高危的对象脚本(数据库对象由不同的用户创建,比如系统管理员创建的对象,它的权限可能就比一般用户创建的高,所以当系统管理员创建的对象有安全问题时,危害等级也应该比一般用户创建的大)。
与现有技术相比,本发明的有益效果是:
本发明主要对脚本的入口参数进行分析,审计各个参数在执行过程中是否有过滤行为,能发现SQL注入等危害比较大的安全风险。
本发明利用执行路径树构建以及参数变量跟踪识别技术降低漏报误报率,并且用户可以自定义过滤关键字识别变量是否经过过滤。
本发明能快速自动发现数据库中所有用户编写的脚本里的安全风险,并采用危险等级区分和脚本定位技术,使用户能快速定位需要及时处理的安全风险。
附图说明
图1为本发明的工作流程图。
图2为实施例中生成的执行路径树示意图。
具体实施方式
首先需要说明的是,本发明涉及数据库技术,是计算机技术在信息安全技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于:过滤关键字符表、脚本获取及分类模块、执行路径树生成模块、参数过滤判断模块、显示输出模块等,凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
下面结合附图与具体实施方式对本发明作进一步详细描述:
如图1所示,假设要对Oracle10g数据库进行对象脚本安全风险审计,具体包括下述步骤:
步骤A:连接数据库;
步骤B:用SELECT语句获取数据库的系统视图All_SOURCE里各个对象的脚本,同时用WHERE语句排除系统用户的对象脚本,得到用户编写的对象脚本;
步骤C:将步骤B中获得的用户对象脚本列表根据TYPE字段按对象类型排序和根据OWNER字段按所属用户区分排序后返回;
步骤D:取步骤C返回的一个对象的脚本数据,例如:
步骤E:根据语句分割符将脚本整理为语句列表,具体如表1所示;
表1语句列表
步骤F:顺序解析语句列表,将每一条语句解析为操作符、涉及的变量和常量、下一步语句指针三部分,具体如表2所示;
表2语句解析列表
节点号 | 操作符 | 涉及变量和常量 | 下一步语句指针 |
1 | Select count(*) | nCount,param1 | 2 |
2 | if | nCount,0 | 3、4 |
3 | dbms_output.put_line | nCount | 6 |
4 | elsif | nCount,0 | 5、6 |
5 | EXECUTE IMMEDIATE | param1,1 | 6 |
6 | end if |
生成的执行路径树如图2所示;
步骤G:解析对象脚本,获得该脚本的传入参数是param1。
步骤H:对步骤F中解析生成的执行路径树,从树上各个节点涉及的变量中,判断传入参数的起始节点,跟踪该传入参数在树中的执行路径,判断该参数是否有参与数据库操作的行为。param1在第1个和第5个节点中都有涉及,并且2个节点都参与了数据库操作。
步骤I:对步骤H获取的参数执行路径的各个节点进行判断是否有参数过滤行为,判断方法是节点的操作符是否包含在过滤关键字列表里。第1个节点操作符是Select是操作数据库而不是过滤用的,所以第1个节点符合安全风险定义。第5个节点的执行路径是1->2->4->5,第2、4、5个节点也没有过滤操作,所以也有安全问题。所以参数param1是有安全问题的。
步骤J:循环执行步骤D、步骤E、步骤F、步骤G、步骤H、步骤I,直至完成对步骤C返回的所有对象脚本数据进行判断。
将步骤J中得出的有问题的执行路径对应的参数列出,并显示参数所在的对象名称和参与数据库操作的行号,形成扫描报告提供给用户,具体可参考表3。
表3扫描报告
对象名 | 参数名 | 行号 |
test | param1 | 1、5 |
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (6)
1.一种数据库对象脚本安全风险的审计方法,其特征在于,具体包括下述步骤:
(1)扫描数据库的系统表,获取所有用户编写的数据库对象脚本;
(2)根据对象脚本构建执行路径树;具体包括下述子步骤:
步骤D:取步骤(1)返回的一个对象的脚本数据;
步骤E:根据语句分割符将脚本整理为语句列表;
步骤F:顺序解析语句列表,将每一条语句解析为操作符、涉及的变量和常量、下一步语句指针三部分;一条语句的三个部分就构成了执行路径树上的一个节点,各个节点通过指针连成一棵树,这棵树就是执行路径树;分支语句与循环语句的下一步指针有多个,通过变量条件判断执行哪一条;
(3)在执行路径树跟踪参数变量,判断参数是否经过过滤,以及参数是否参与数据库操作;具体包括下述子步骤:
步骤G:解析步骤D中所取的对象脚本,获得该脚本的传入参数列表;
步骤H:对步骤F中解析生成的执行路径树,从树上各个节点涉及的变量中,判断传入参数的起始节点,跟踪该传入参数在树中的执行路径,判断该参数是否有参与数据库操作的行为;
将有参与数据库操作的参数和执行路径记录下来,如果脚本有多个传入参数,则通过循环获得各个参与数据库操作的参数的执行路径;
步骤H主要用于过滤掉不参与数据库操作的传入参数;
步骤I:对步骤H获取的参数执行路径的各个节点进行判断是否有参数过滤行为,判断方法是节点的操作符是否包含在过滤关键字列表里;如果一条执行路径里的各个节点都没有参数过滤,那么这条执行路径就被判定是有问题的;
步骤J:循环执行步骤D、步骤E、步骤F、步骤G、步骤H、步骤I,直至完成对步骤(1)返回的所有对象脚本数据进行判断;
(4)列出没有经过过滤,并且参与数据库操作的参数所在对象名、参数名和有风险的行号,即将步骤J中得出的有问题的执行路径对应的参数列出,并显示参数所在的对象名称和参与数据库操作的行号,形成扫描报告输出。
2.根据权利要求1所述的一种数据库对象脚本安全风险的审计方法,其特征在于,所述步骤(1)具体包括下述子步骤:
步骤A:连接数据库;
步骤B:用SELECT语句获取数据库中各个对象的脚本,同时用WHERE语句排除系统对象的脚本,得到用户编写对象的脚本,即获得用户对象脚本列表;
步骤C:将步骤B中获得的用户对象脚本列表按对象类型和所属用户区分排序后返回。
3.根据权利要求1所述的一种数据库对象脚本安全风险的审计方法,其特征在于,所述步骤(1)中,获取的对象脚本是指数据库系统中有调用参数的用户对象的脚本。
4.根据权利要求1所述的一种数据库对象脚本安全风险的审计方法,其特征在于,所述步骤H中,一个脚本参数的执行路径中,只要一条路径有安全风险就认为该参数有安全风险。
5.根据权利要求1所述的一种数据库对象脚本安全风险的审计方法,其特征在于,所述步骤I中用于判断参数是否经过过滤的关键字能用户自定义。
6.根据权利要求1所述的一种数据库对象脚本安全风险的审计方法,其特征在于,所述步骤(4)形成的扫描报告中,根据对象所属的用户定义有不同的危险等级,用于帮助用户更直观的了解脚本中的危险程度,从而优先修复高危的对象脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610585672.2A CN106227812B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库对象脚本安全风险的审计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610585672.2A CN106227812B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库对象脚本安全风险的审计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227812A CN106227812A (zh) | 2016-12-14 |
CN106227812B true CN106227812B (zh) | 2019-06-21 |
Family
ID=57531363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610585672.2A Active CN106227812B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库对象脚本安全风险的审计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227812B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107437025A (zh) * | 2017-08-07 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种数据审计方法及装置 |
CN110110523A (zh) * | 2019-05-10 | 2019-08-09 | 极智(上海)企业管理咨询有限公司 | 一种提升规则代码扫描准确率的方法 |
CN114816558B (zh) * | 2022-03-07 | 2023-06-30 | 深圳市九州安域科技有限公司 | 一种脚本注入方法、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN104899147A (zh) * | 2015-06-19 | 2015-09-09 | 北京理工大学 | 一种面向安全检查的代码静态分析方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599934B2 (en) * | 2005-09-27 | 2009-10-06 | Microsoft Corporation | Server side filtering and sorting with field level security |
US20110213789A1 (en) * | 2010-02-26 | 2011-09-01 | Salesforce.Com, Inc. | System, method and computer program product for determining an amount of access to data, based on a role |
-
2016
- 2016-07-21 CN CN201610585672.2A patent/CN106227812B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN102185930A (zh) * | 2011-06-09 | 2011-09-14 | 北京理工大学 | 一种sql注入漏洞检测方法 |
CN104899147A (zh) * | 2015-06-19 | 2015-09-09 | 北京理工大学 | 一种面向安全检查的代码静态分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106227812A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hermans et al. | Data clone detection and visualization in spreadsheets | |
Weidlich et al. | Process compliance analysis based on behavioural profiles | |
Wang et al. | Cleaning structured event logs: A graph repair approach | |
Wang et al. | Formalizing and integrating the dynamic model within OMT | |
CN102804147A (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
CN110442847B (zh) | 基于代码仓库过程管理的代码相似性检测方法及装置 | |
CN106227812B (zh) | 一种数据库对象脚本安全风险的审计方法 | |
Wei et al. | Embedded functional dependencies and data-completeness tailored database design | |
US20140298286A1 (en) | Systems and Methods for Automatically Associating Software Elements and Automatic Gantt Chart Creation | |
Barros-Justo et al. | Software patterns and requirements engineering activities in real-world settings: A systematic mapping study | |
CN112765031B (zh) | 一种群智化漏洞挖掘任务的分解方法 | |
US9720685B2 (en) | Software development activity | |
Deufemia et al. | A visual language‐based system for extraction–transformation–loading development | |
Zaman et al. | Prefix imputation of orphan events in event stream processing | |
US20130290065A1 (en) | Method and System to Analyze Processes | |
CN106156348B (zh) | 一种数据库对象脚本危险操作的审计方法 | |
Kato et al. | A structural analysis method of oss development community evolution based on a semantic graph model | |
CN106250768B (zh) | 一种数据库对象脚本安全漏洞的行为检测方法 | |
Petnga | Graph‐based Assessment and Analysis of System Architecture Models | |
CN105740722B (zh) | 一种数据库敏感数据的伪装方法 | |
Antonino et al. | Automatic detection of incomplete and inconsistent safety requirements | |
Skeie | Does Limit on Work-In-Progress (WIP) in Software Development Matter? | |
Gadelha | An approach for traceability recovery between bug reports and test cases. | |
George et al. | Improving design quality by automatic verification of activity diagram syntax | |
Zahoransky et al. | Process Analysis as First Step towards Automated Business Security. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310051 No. 188 Lianhui Street, Xixing Street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Annan information technology Limited by Share Ltd Address before: 310051 15-storey Zhongcai Building, Tonghe Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: Dbappsecurity Co.,ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |