CN104508672B - 程序执行装置以及程序分析装置 - Google Patents

程序执行装置以及程序分析装置 Download PDF

Info

Publication number
CN104508672B
CN104508672B CN201380039842.1A CN201380039842A CN104508672B CN 104508672 B CN104508672 B CN 104508672B CN 201380039842 A CN201380039842 A CN 201380039842A CN 104508672 B CN104508672 B CN 104508672B
Authority
CN
China
Prior art keywords
vulnerability
built
function
countermeasure
processing unit
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.)
Expired - Fee Related
Application number
CN201380039842.1A
Other languages
English (en)
Other versions
CN104508672A (zh
Inventor
植田武
樱井钟治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of CN104508672A publication Critical patent/CN104508672A/zh
Application granted granted Critical
Publication of CN104508672B publication Critical patent/CN104508672B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明能够在瞄准脆弱性的攻击被实施以前可靠地执行针对脆弱性的对策处理。脆弱性对策处理部(1233)执行针对脆弱性库函数的脆弱性的对策处理,该脆弱性库函数是通用库(1230)包含的通用库函数中具有脆弱性的通用库函数。当在执行Web应用(1220)时被请求调用脆弱性库函数的情况下,对策选择部(1232)使脆弱性对策处理部(1233)执行针对脆弱性库函数的脆弱性的对策处理,在由脆弱性对策处理部(1233)执行了对策处理后,调用脆弱性库函数。

Description

程序执行装置以及程序分析装置
技术领域
本发明涉及进行针对程序的脆弱性的对策处理的技术。
背景技术
过去,通过攻击OS(Operating System:操作系统)和应用程序(以下简称作“应用”)等中存在的安全上的脆弱性,产生数据和程序的篡改、计算机和应用的强制停止、对计算机的非法入侵和非法操作等危害。
近年来,对在Web服务器上运行的Web应用的攻击不断增加,机密信息和个人信息的外漏和篡改、服务的非法利用等成为社会问题。
对Web应用的攻击是通过在作为针对Web应用的来自客户端的输入数据的HTTP(Hyper Text Transfer Protocol:超文本传输协议)的请求中混入非法数据而进行的。
Web应用的脆弱性根据利用输入数据的处理内容而不同,公知有跨站点脚本攻击和SQL注入等多种类型。
例如,跨站点脚本攻击是利用在动态地生成HTML(Hyper Text Markup Language:超文本标记语言)数据的处理中的脆弱性的攻击,由于该脆弱性导致允许脚本混入HTML数据中。
另外,SQL注入是利用发行SQL语句的处理的脆弱性的攻击,该SQL语句用于进行关系数据库的数据操作,由于该脆弱性导致允许应用执行未假定的SQL语句。
用于攻击脆弱性的非法数据根据脆弱性的类型而不同,其对策方法也不同。
例如,作为用于进行跨站点脚本攻击的方法之一,有将<SCRIPT>标签作为非法数据包含在请求中的方法。
作为跨站点脚本攻击的对策,按照HTML语法进行无害化处理,使得在生成的HTML中不将<SCRIPT>标签解释成<SCRIPT>标签。
另外,在SQL注入中有这样的方法,通过混入用于将字符串括起来的“’”来终结字符串,然后混入任意的SQL语句。
这种针对SQL注入的对策是按照SQL的语法进行无害化处理,使得输入数据中包含的“’”不表示将字符串括起来的记号。
过去,为了防护对Web应用的脆弱性的攻击,主要采用以下两种对策。
一种方法是验证产生各种脆弱性的输入数据,将使非法数据无害化的安全功能,按照可能产生脆弱性的处理内容编入Web应用自身。
第二种防护方法是在到达Web应用之前检查对Web应用的HTTP请求,并利用进行有可能产生攻击的HTTP请求的阻挡或无害化的Web应用防火墙。
关于第一种防护方法,公开有OWASP(The Open Web Application SecurityProject:打开Web应用程序安全性项目)等组织编入的安全功能等的指南。
另外,作为支持安全功能编入的方法,还公知有通过分析程序的源代码来检测有可能产生脆弱性的部位的方法(例如,专利文献1)。
关于第二种防护方法的Web应用防火墙,通常的方法是验证是否包含事前登记的非法数据的模式,在HTTP请求中包含非法数据的模式的情况下,进行通信的切断和数据的无害化等(例如,非专利文献1)。
另外,还有使用实施各种脆弱性对策的程序库的方法(例如,专利文献2)。
在该方法中,读取记述有是否需要针对研发者生成的请求的各参数的各种脆弱性对策的设定文件,利用按照设定文件的内容在接收HTTP请求时实施对每个参数指定的脆弱性对策的程序库,能够高效地实施Web应用的脆弱性对策。
现有技术文献
专利文献
专利文献1:日本特开2007-52625号公报
专利文献2:日本特开2007-47884号公报
非专利文献
非专利文献1:ModSecurity<URL:http://www.modsecurity.org/>
发明内容
发明要解决的问题
过去静态地分析Web应用内的源代码的方法(专利文献1)存在如下问题,虽然检测有可能产生脆弱性的部位,但是针对脆弱性的对策方法的研究和修正必须由Web应用的研发者独立进行。
另外,利用Web应用防火墙采取对策的方法(非专利文献1)没有考虑Web应用进行的处理内容。
因此,在特定类型的脆弱性根据Web应用的处理内容不成问题的情况下、已在Web应用中实施了脆弱性对策的情况下,导致虽然属于非法数据的模式但是没有危害的数据也被误检测成非法数据。
因此,存在如下问题:在Web应用中切断实质上没有问题的通信,由于无害化处理而产生可正常处理的数据被变换的不良影响。
另外,对请求的每个参数采取对策的方法(专利文献2),需要由研发者对每个参数设定设定文件,存在花费功夫的问题。
另外,由于设定错误等,有可能导致脆弱性的对策遗漏或选择不必要的对策。
另外,被指定的脆弱性对策与Web应用防火墙同样是在接收HTTP请求时一并进行的,还存在已实施的脆弱性对策对其它有可能存在脆弱性的处理带来不良影响的问题。
本发明将解决上述问题作为主要目的,其主要目的在于,得到能够在瞄准脆弱性的攻击被实施以前可靠地执行针对脆弱性的对策处理,防止对策遗漏,避免基于不必要的对策处理的不良影响的结构。
用于解决问题的手段
本发明的程序执行装置执行使用库函数的程序,其特征在于,该程序执行装置具有:
脆弱性对策处理部,其执行针对脆弱性库函数的脆弱性的对策处理,该脆弱性库函数是在所述程序中使用的库函数中具有脆弱性的库函数;以及
脆弱性对策控制部,当在执行所述程序时被请求调用所述脆弱性库函数的情况下,该脆弱性对策控制部使所述脆弱性对策处理部执行针对所述脆弱性库函数的脆弱性的对策处理,在由所述脆弱性对策处理部执行了对策处理后,调用所述脆弱性库函数。
发明效果
根据本发明,当在执行程序时被请求调用脆弱性库函数的情况下,执行针对该脆弱性库函数的脆弱性的对策处理,因而能够在瞄准脆弱性的攻击被实施以前可靠地执行针对脆弱性的对策处理,能够防止对策遗漏,避免基于不必要的对策处理的不良影响。
附图说明
图1是表示实施方式1的系统结构例的图。
图2是表示实施方式1的Web应用脆弱性对策系统的结构例的图。
图3是表示实施方式1的开发环境中的动作例的流程图。
图4是表示实施方式1的执行环境中的动作例的流程图。
图5是表示实施方式2的Web应用脆弱性对策系统的结构例的图。
图6是表示实施方式2的开发环境中的动作例的流程图。
图7是表示实施方式3的Web应用脆弱性对策系统的结构例的图。
图8是表示实施方式3的开发环境中的动作例的流程图。
图9是表示实施方式1~3的Web应用脆弱性对策系统的硬件结构例的图。
具体实施方式
实施方式1
在本实施方式及以后的实施方式中说明的Web应用脆弱性对策系统,能够自动选择充分必要的Web应用的安全对策,防止对策遗漏和避免基于脆弱性对策的不良影响。
图1是包含本实施方式的Web应用脆弱性对策系统的系统结构图。
如图1所示,本实施方式的系统由Web应用脆弱性对策系统1000、客户终端2000、网络3000(因特网等网络)构成。
Web应用脆弱性对策系统1000和多个客户终端2000通过网络300连接。
另外,图2是本实施方式的Web应用脆弱性对策系统1000的结构图。
另外,在图2中,Web应用脆弱性对策系统1000具有CPU(Central ProcessingUnit:中央处理单元)、存储器、二次存储装置等硬件资源,但省略图示。
并且,在二次存储装置中存储有实现以下说明的功能的程序,在执行程序时,将程序从二次存储装置下载到存储器,CPU执行下载到存储器的程序。
在图2中,Web应用脆弱性对策系统1000由开发环境1100和执行环境1200构成。
开发环境1100是用于研发者安装Web应用进行试验的环境。
执行环境1200是用于执行已开始运行的Web应用的环境。
执行环境1200相当于程序执行装置的示例。
开发环境1100具有静态代码分析部1120。
静态代码分析部1120读取Web应用的源代码或者执行代码(记作“Web应用的源/执行代码1110”),对Web应用的源/执行代码1110进行静态分析,并输出脆弱性对策用的动作设定文件1130。
另外,静态代码分析部1120由Web应用输入部1121、通用库利用验证部1122、外部输入数据分析部1123和动作设定文件输出部1124构成。
Web应用输入部1121读取Web应用的源/执行代码1110。
通用库利用验证部1122根据对Web应用的源/执行代码1110的静态代码分析,调查正在调用通用库函数的代码位置和通用库接口1231的类型,并验证通用库函数的利用方法是否正确。
外部输入数据分析部1123根据静态代码分析来分析来自Web应用外部的输入数据(外部输入数据)的数据流,并分析利用该外部输入数据的代码位置和可取的值(数据的值和数据的类型)。
动作设定文件输出部1124根据通用库利用验证部1122和外部输入数据分析部1123的分析结果,输出用于决定在执行通用库时的动作的动作设定文件1130。
另外,在动作设定文件1130中记述有具有脆弱性的通用库函数(以下称作“脆弱性库函数”)、在利用脆弱性库函数进行处理时可能发生异常的参数的名称和该参数中的非法值、以及调用脆弱性库函数的代码位置中可能发生异常的代码位置。
动作设定文件1130相当于脆弱性信息的示例。
另外,执行环境1200由Web服务器程序1210、Web应用1220、通用库1230、动作设定文件存储部1240构成。
Web服务器程序1210是用于执行Web应用1220的程序。
Web应用1220调用通用库函数,并得到通用库函数的执行结果。
通用库1230提供用于进行以下处理的功能:HTTP请求的发送接收、HTML输出处理、对数据库的访问、文件的读写等在普通的Web应用中进行的处理。
动作设定文件存储部1240存储从开发环境1100的静态代码分析部1120输出的动作设定文件1130。
动作设定文件存储部1240相当于脆弱性信息存储部的示例。
通用库1230由通用库接口(接口)1231、对策选择部1232、脆弱性对策处理部1233、通用库处理部1234构成。
通用库接口1231提供用于Web应用1220利用通用库1230的程序接口。
另外,通用库接口1231是按照HTML输出处理和数据库访问等处理的每个分类而准备的。
脆弱性对策处理部1233进行针对Web应用的脆弱性的对策处理。
另外,按照脆弱性的每种对策准备多个脆弱性对策处理部1233。
即,脆弱性对策处理部1233是按照HTML输出处理和数据库访问等处理的每个分类而准备的。
通用库处理部1234进行通用库1230提供的处理(HTML输出处理和数据库访问等)。
通用库处理部1234相当于通用库函数。
另外,按照处理内容准备多个通用库处理部1234。
对策选择部1232读取动作设定文件1130,判定在通用库1230内部是否需要脆弱性的对策处理。
更具体地讲,在Web应用1220请求调用通用库函数的情况下,即在被请求调用通用库处理部1234的情况下,对策选择部1232根据动作设定文件1130的内容,判定是否需要脆弱性的对策处理。
另外,在需要脆弱性的对策处理的情况下,对策选择部1232首先使脆弱性对策处理部1233进行脆弱性的对策处理,在由脆弱性对策处理部1233进行了对策处理后,调用作为对象的通用库处理部1234。
对策选择部1232相当于脆弱性对策控制部的示例。
下面,说明在Web应用脆弱性对策系统1000中进行的动作。
在Web应用脆弱性对策系统1000中,首先由开发环境1100的静态代码分析部1120对Web应用的源/执行代码1110进行静态代码分析,并生成动作设定文件1130。
然后,对Web应用的源/执行代码1110进行编译而使其能够执行,将Web应用1220配置在执行环境1200中,并且将动作设定文件1130配置在执行环境1200中,Web应用1220的运行开始。
使用图3说明在开发环境1100中的动作例。
在开发环境1100中,Web应用输入部1121读取Web应用的源/执行代码1110(S101)。
然后,通用库利用验证部1122调查正在调用Web应用的源/执行代码1110利用的通用库函数的代码位置(行数等)、被调用的通用库函数的类型(HTML输出、数据库访问等),然后验证对通用库函数提供的数据和使用方式是否恰当(S102)。
在判定为通用库函数被恰当地利用的情况下(S102:是),外部输入数据分析部1123确定存储来自外部的输入数据的变量(外部输入数据),调查外部输入数据的数据流,并调查利用外部输入数据的一系列的代码位置和各代码中的外部输入数据可取的值的范围(S103)。
在判定为通用库函数未被恰当地利用的情况下(S102:否),输出消息并结束处理,该消息包含未被恰当地利用的通用库函数的类型、代码上的位置、判定为未被恰当地利用的理由等(S104)。
在S103之后,动作设定文件输出部1124根据在S102中分析出的正在调用通用库函数的代码位置和被调用的通用库函数的类型、以及在S103中分析出的利用外部输入数据的一系列的代码位置和各代码中的外部输入数据可取的值的结果,输出动作设定文件1130(S105)。
该动作设定文件1130是用于选择对策的文件,包含调用有可能由于外部输入数据可取的值而产生脆弱性的通用库函数的代码位置。
对S105的处理进行更具体的说明,提取在S102中分析出的正在调用通用库函数的代码位置中、在S103中分析出的利用外部输入数据的一系列的代码位置中包含的代码位置,按照外部输入数据的每个值,判定在向该代码位置的代码正在调用的通用库函数输入了在S103中分析出的外部输入数据可取的值的范围时脆弱性是否成为问题(是否发生异常)。
并且,在判定为脆弱性成为问题的情况下,动作设定文件输出部1124生成动作设定文件1130,在动作设定文件1130中记述有具有脆弱性的通用库函数(脆弱性库函数)的名称、调用脆弱性库函数的代码位置、外部输入数据的类型(变量的名称)、外部输入数据的非法值(发生异常的值)。
并且,将生成的动作设定文件1130输出到动作设定文件存储部1240,并存储在动作设定文件存储部1240中。
下面,使用图4说明在执行环境1200中的动作例。
首先,Web服务器程序1210接收来自客户终端2000的HTTP请求(S201)。
Web服务器程序1210将接收到的HTTP请求转发给Web应用1220(S202)。
Web应用1220调用通用库接口1231,在被请求调用通用库函数的情况下(S203:是),被调用的通用库接口1231调用对策选择部1232(S204)。
对策选择部1232读取动作设定文件1130,从动作设定文件1130取得有可能混入使脆弱性明显化的外部输入数据的通用库函数(脆弱性库函数)的调用代码位置的信息(S205)。
然后,对策选择部1232根据堆栈轨迹等执行信息取得在S203中调用通用库接口1231以前执行的代码位置的信息(S206)。
然后,对策选择部1232判定是否需要执行脆弱性对策处理部1233(S207)。
具体而言,如果在S205中取得的代码位置中存在与在S206中取得的代码位置一致的代码位置,则从动作设定文件1130取得和与在S206中取得的代码位置一致的代码位置对应起来的脆弱性库函数的名称、外部输入数据的类型、外部输入数据的非法值。
然后,对策选择部1232核对已取得的脆弱性库函数的名称和外部输入数据的类型和外部输入数据的非法值、与Web应用1220将要调用的通用库函数的名称和在该通用库函数中将要处理的外部输入数据的类型和外部输入数据的值,在3个要素全部一致的情况下,判定为需要执行脆弱性对策处理部1233。
另一方面,在3个要素中至少一个不一致的情况下,判定为不需要执行脆弱性对策处理部1233。
另外,对策选择部1232将与Web应用1220将要调用的脆弱性库函数对应的脆弱性对策处理部1233指定为调用的对象。
对策选择部1232在判定为需要调用脆弱性对策处理部1233的情况下(S207:是),在进行通用库处理部1234的调用之前,进行脆弱性对策处理部1233的调用,使脆弱性对策处理部1233执行使得通用库处理部1234不处理外部输入数据的非法值的对策处理(S208)。
具体而言,使脆弱性对策处理部1233执行外部输入数据的无害化等对策处理。
在脆弱性对策处理部1233执行的对策处理结束后,对策选择部1232调用通用库处理部1234(S209)。
在判定为不需要调用脆弱性对策处理部1233的情况下(S207:否),对策选择部1232不进行脆弱性对策处理部1233的调用而进行通用库处理部1234的调用(S209)。
每当在Web服务器程序1210向客户终端2000发送响应之前通用库接口1231被调用时,执行以上的步骤S203~S209(S210)。
并且,在Web服务器程序1210向客户终端2000发送HTTP响应的情况下,Web应用1220将HTTP响应转发给Web服务器程序1210(S211)。
并且,最后,Web服务器程序1210向客户终端2000答复HTTP响应(S212)。
另外,在开发环境1100中,在静态代码分析部1120使用Web应用的源代码生成了动作设定文件1130的情况下,在动作设定文件1130中记述有源代码上的代码位置(行编号等)。
另一方面,在执行环境1200中,对策选择部1232根据堆栈轨迹等执行信息取得编译后的Web应用的代码位置。
因此,在上述的S207中,更具体地讲,对策选择部1232将动作设定文件1130在源代码上的代码位置变换成编译后的代码位置,并核对变换后的代码位置和根据堆栈轨迹等取得的编译后的代码位置。
或者,对策选择部1232将根据堆栈轨迹等取得的编译后的代码位置变换成源代码上的代码位置,并核对变换后的代码位置和动作设定文件1130在源代码上的代码位置。
这样的代码位置的变换能够利用现有技术实现。
如上所述,在本实施方式中提供具有如下功能的Web应用执行环境:在开始运行前对Web应用的源代码或者执行代码进行静态代码分析,根据通过静态代码分析而得到的数据流自动选择脆弱性对策。
由此,能够自动选择充分必要的Web应用的脆弱性对策,因而能够防止对策遗漏,并且不执行不必要的对策处理,因而能够使基于对策处理的不良影响和处理速度的性能恶化为最小限度。
在本实施方式中说明的Web应用脆弱性对策系统具有Web应用执行环境,该Web应用执行环境具有如下功能:使用Web应用和设定文件的静态代码分析的结果,判定有无Web应用的脆弱性对策的必要性,根据其判定结果执行Web应用的脆弱性对策
并且,在本实施方式中说明了具有如下库的情况:对通过静态代码分析而得到的需要脆弱性对策的库的调用位置和在执行Web应用时取得的被调用的库的位置信息进行比较,根据比较结果变更在内部进行的动作。
实施方式2
在以上的实施方式1中说明了如下结构:通过静态代码分析取得在开始运行前利用外部输入数据的通用库的调用位置,根据在执行Web应用时在开始运行前取得的通用库的调用位置的信息、和堆栈轨迹等Web应用的执行信息中包含的被调用的代码位置的信息,动态地变更是否需要在通用库的内部进行的脆弱性对策。
下面,在本实施方式中示出如下实施方式:通过开始运行前的静态代码分析,调查在转发给通用库的数据(HTML和SQL语句等)的语法上的哪个位置利用了外部输入数据,由此,提高在执行时进行的脆弱性对策的正确性。
图5是本实施方式中的Web应用脆弱性对策系统1000的结构图。
图5相对于实施方式1的结构(图2),对静态代码分析部1120追加了语法分析部1125。
语法分析部1125提供分析被外部输入数据分析部1123调用且HTML语句和SQL语句等的与Web应用不同的语言的语法的功能。
使用图6说明在开发环境1100中的动作。
图6的S301~S304是与图3的S101~S104相同的流程,因而省略说明。
在S305中,语法分析部1125调查在转发给通用库函数的数据(HTML和SQL语句等)的语法上的哪个位置利用了外部输入数据。
例如,在HTML语句的情况下,调查利用外部输入数据的部位是哪个要素的内容、哪种属性的属性值等。
然后,动作设定文件输出部1124根据如下信息输出动作设定文件1130,所述信息指在S302中分析出的正在调用通用库函数的代码位置和被调用的通用库函数的名称、在S303中分析出的利用外部输入数据的一系列的代码位置和各代码中的外部输入数据可取的值、以及在S305中调查出的转发给通用库函数的外部输入数据被用在语法上的哪个位置(S306)。
在本实施方式生成的动作设定文件1130中,除了实施方式1的记述内容以外,还记述有转发给通用库函数的外部输入数据包含在HTML语句或者SQL语句的语法上的哪个位置。
在本实施方式的动作设定文件1130中,列举出多个该语法上的位置,还在语法上的每个位置记述有对策处理。
另外,实施方式1的动作设定文件1130的记述内容是具有脆弱性的通用库函数(脆弱性库函数)的名称、调用脆弱性库函数的代码位置、外部输入数据的类型(变量的名称)、以及外部输入数据的非法值(发生异常的值)。
与实施方式1同样地将生成的动作设定文件1130输出到动作设定文件存储部1240,并保存在动作设定文件存储部1240中。
在执行环境1200的动作中,图4的处理流程的S208的处理与实施方式1不同。
在判定为需要调用脆弱性对策处理部1233的情况下(S207:是),对策选择部1232在S208中判定成为无害化对象的外部输入数据被记述在来自客户终端2000的HTTP响应中的HTML语句或者SQL语句的哪个位置。
另外,对策选择部1232从记述在动作设定文件1130中的多个语法位置中提取与HTTP请求中的记述位置一致的语法位置,并提取已提取出的语法位置的对策处理。
另外,对策选择部1232使脆弱性对策处理部1233执行已提取出的对策处理,使其进行外部输入数据的无害化等。
除此以外的流程是与图4相同的处理流程,因而省略说明。
如上所述,在本实施方式中,通过在静态代码分析中调查在转发给通用库的HTML语句或者SQL语句等的语法上的哪个位置利用了外部输入数据,能够更正确地选择在通用库的内部执行的脆弱性对策的内容。
以上,在本实施方式中说明了具有根据如下信息变更在内部进行的动作的库的情况,该信息表示通过静态代码分析而得到的来自外部的输入数据被用在转发给库的数据的语法上的哪个位置。
实施方式3
在以上的实施方式1、2中,通过静态代码分析取得在开始运行前利用外部输入数据的通用库的调用位置等信息,根据在执行Web应用时在开始运行前取得的信息和堆栈轨迹等在执行时能够取得的信息,动态地变更是否需要在通用库的内部进行的脆弱性对策。
与此相对,在本实施方式中示出输出动态试验的试验数据或者脚本的示例。
本实施方式的试验数据或者脚本被用于动态试验中,该动态试验用于在开始运行前的静态代码分析中,检测由于不能判定是否需要脆弱性对策的Web应用的设定文件的错误而造成的脆弱性。
图7是本实施方式的Web应用脆弱性对策系统1000的结构图。
图7相对于实施方式2的结构(图5),在开发环境1100中追加Web应用的设定文件1111和试验数据/脚本1131,在静态代码分析部1120中追加设定文件分析部1126、试验数据/脚本输出部1127。
设定文件分析部1126读取Web应用的设定文件1111,验证设定文件有无错误,并提取利用设定文件指定的值。
试验数据/脚本输出部1127使用静态代码分析部1120对Web应用的源/执行代码1110和Web应用的设定文件1111的分析结果,输出试验数据/脚本1131。
另外,本实施方式的开发环境1100相当于程序分析装置的示例。
使用图8说明实施方式3的动作。
在开发环境1100中,Web应用输入部1121读取Web应用的源/执行代码1110和Web应用的设定文件1111(S401)。
然后,通用库利用验证部1122调查正在调用Web应用的源/执行代码1110利用的通用库函数的代码位置(行数等)、被调用的通用库函数的类型(HTML输出、数据库访问等),然后验证对通用库函数提供的数据和使用方式是否恰当(S402)。
在判定为通用库函数被恰当地利用的情况下(S402:是),设定文件分析部1126分析Web应用的设定文件1111,验证Web应用的设定文件1111的设定内容中有无不在可设定值的范围内等明显的设定错误(S403)。
在通用库函数未被恰当地利用的情况下(S402:否)、或判定为Web应用的设定文件1111中具有设定错误的情况下(S403:否),输出如下消息并结束处理,该消息包含未被恰当地利用的通用库函数的类型、代码上的位置、判定为未被恰当地利用的理由、Web应用的设定文件1111的设定错误的内容等(S404)。
在判定为通用库函数被恰当地利用且Web应用的设定文件1111中没有设定错误的情况下(S403:否),进行S405~S407的处理。
这些处理与图6的S303~S306的处理相同,因而省略说明。
然后,试验数据/脚本输出部1127根据在S402、S403、S405中进行分析的结果,对于在利用通用库函数的处理中根据Web应用的设定文件1111的设定来变更通用库函数的处理内容的处理,输出用于进行动态试验的试验数据/脚本1131(S408)。
即,试验数据/脚本输出部1127使用Web应用的设定文件1111的值、脆弱性库函数、在Web应用中利用外部输入数据的代码位置等,生成用于检查Web应用的设定文件1111的值是否恰当的试验数据或者脚本。
如上所述,在本实施方式中,根据对Web应用及设定文件进行静态代码分析而得到的结果,生成用于检查由于Web应用的设定文件的错误而造成的脆弱性的试验数据或者脚本,由此容易在开始运行前发现在静态代码分析中不能检测出的设定文件的错误。
以上在本实施方式中说明了具有静态代码分析部,在仅利用通过依赖于Web应用的设定文件的静态代码分析而得到的信息不能决定在库内部进行的动作的情况下,输出用于动态地测试设定文件有无错误的试验数据或脚本。
最后,说明实施方式1~3所示的Web应用脆弱性对策系统1000的硬件结构例。
图9是表示实施方式1~3所示的Web应用脆弱性对策系统1000的硬件资源的一例的图。
另外,图9的结构毕竟只是表示Web应用脆弱性对策系统1000的硬件结构的一例,Web应用脆弱性对策系统1000的硬件结构不限于图9所示的结构,也可以是其它结构。
在图9中,Web应用脆弱性对策系统1000具有执行程序的CPU 911。
CPU 911通过总线912与例如ROM(Read Only Memory)913、RAM(Random AccessMemory)914、通信板915、显示装置901、键盘902、鼠标903、磁盘装置920连接,并控制这些硬件装置。
另外,CPU 911也可以与FDD904(Flexible Disk Drive)、CD盘装置905(CDD)、打印装置906、扫描装置907连接。并且,也可以用SSD(Solid State Drive)、光盘装置、存储卡(注册商标)读写装置等存储装置来取代磁盘装置920。
RAM 914是易失性存储器的一例。ROM 913、FDD 904、CDD 905、磁盘装置920的存储介质是非易失性存储器的一例。这些装置是存储装置的一例。
在实施方式1~3中说明的“动作设定文件存储部1240”利用RAM 914、磁盘装置920等实现。
通信板915、键盘902、鼠标903、扫描装置907等是输入装置的一例。
另外,通信板915、显示装置901、打印装置906等是输出装置的一例。
通信板915如图1所示与网络连接。
例如,通信板915与LAN(局域网)、因特网、WAN(广域网)、SAN(存储区域网)等连接。
在磁盘装置920中存储有操作系统921(OS)、Windows系统922、程序组923、文件组924。
CPU 911使用操作系统921、Windows系统922来执行程序组923的程序。
另外,在RAM 914中临时存储使CPU 911执行的操作系统921的程序和应用程序的至少一部分。
另外,在RAM 914中存储有CPU 911进行处理所需要的各种数据。
另外,在ROM 913中存储有BIOS(Basic Input Output System)程序,在磁盘装置920中存储有根程序。
在Web应用脆弱性对策系统1000起动时执行ROM 913的BIOS程序和磁盘装置920的根程序,利用BIOS程序和根程序起动操作系统921。
在上述程序组923中存储有执行在实施方式1~3的说明中作为“~部”(动作设定文件存储部1240除外,以下相同)而说明的功能的程序、“Web应用1220”、“Web服务器程序1210”。
程序被CPU 911读出并执行。
在文件组924中,表示在实施方式1~3的说明中作为“~的判断”、“~的判定”、“~的提取”、“~的比较”、“~的验证”、“~的生成”、“~的设定”、“~的取得”、“~的核对”、“~的选择”、“~的生成”、“~的输入”、“~的输出”等而说明的处理结果的信息、数据、信号值、变量值,作为文件被存储在盘或存储器等存储介质中。
另外,也可以将加密密钥/解码密钥、随机值、参数作为文件存储在盘或存储器等存储介质中。
“~文件”或“~数据库”被存储在盘或存储器等存储介质中。
被存储在盘或存储器等存储介质中的信息、数据、信号值、变量值、参数,通过读写电路被CPU 911读出到主存储器或高速缓冲存储器中。
另外,被读出的信息、数据、信号值、变量值、参数被用于提取、检索、参照、比较、运算、计算、处理、编辑、输出、打印、显示等CPU的动作中。
在提取、检索、参照、比较、运算、计算、处理、编辑、输出、打印、显示的CPU的动作期间,信息、数据、信号值、变量值、参数被临时存储在主存储器、寄存器、高速缓冲存储器、缓冲存储器等中。
另外,在实施方式1~3中说明的流程图中的箭头部分主要表示数据和信号的输入输出。
数据和信号值被记录在RAM 914的存储器、FDD 904的软盘、CDD 905的CD盘、磁盘装置920的磁盘、其它光盘、蓝光(注册商标)光盘、DVD等存储介质中。
另外,数据和信号通过总线912、信号线、线缆等其它传输介质被在线传输。
另外,在实施方式1~3的说明中作为“~部”而说明的部分也可以是“~电路”、“~装置”、“~设备”,还可以是“~步骤”、“~工序”、“~处理”。
另外,也能够将Web应用脆弱性对策系统1000的处理作为程序执行方法。
另外,作为“~部”而说明的部分也可以利用存储在ROM 903中的固件来实现。
或者仅利用软件实现,或者仅利用元件/装置/基板/配线等硬件实现,或者利用软件和硬件的组合来实现,或者利用软件、硬件和固件的组合来实现。
固件和软件被作为程序存储在磁盘、软盘、光盘、CD盘、蓝光(注册商标)光盘、DVD等存储介质中。
程序被CPU 911读出,并由CPU 911执行。
即,程序是使计算机作为实施方式1~3的“~部”发挥作用的。或者,程序是使计算机执行实施方式1~3的“~部”的步骤或方法。
这样,实施方式1~3所示的Web应用脆弱性对策系统1000是具有作为处理装置的CPU、作为存储装置的存储器和磁盘等、作为输入装置的键盘和鼠标和通信板等、作为输出装置的显示装置、通信板等的计算机。
另外,使用这些处理装置、存储装置、输入装置、输出装置实现如上所述作为“~部”而示出的功能。
标号说明
1000Web应用脆弱性对策系统;1100开发环境;1110Web应用的源/执行代码;1111Web应用的设定文件;1120静态代码分析部;1121Web应用输入部;1122通用库利用验证部;1123外部输入数据分析部;1124动作设定文件输出部;1125语法分析部;1126设定文件分析部;1127试验数据/脚本输出部;1130动作设定文件;1131试验数据/脚本;1200执行环境;1210Web服务器程序;1220Web应用;1230通用库;1231通用库接口;1232对策选择部;1233脆弱性对策处理部;1234通用库处理部;1240动作设定文件存储部;2000客户终端;3000网络。

Claims (5)

1.一种程序执行装置,其执行使用库函数的程序,其特征在于,该程序执行装置具有:
脆弱性对策处理部,其执行针对脆弱性库函数的脆弱性的对策处理,该脆弱性库函数是在所述程序中使用的库函数中具有脆弱性的库函数;以及
脆弱性对策控制部,当在执行所述程序时被请求调用所述脆弱性库函数的情况下,该脆弱性对策控制部使所述脆弱性对策处理部执行针对所述脆弱性库函数的脆弱性的对策处理,在由所述脆弱性对策处理部执行了对策处理后,调用所述脆弱性库函数;
所述程序执行装置使所述脆弱性库函数处理记述在从外部装置接收到的接收数据中的参数值,
所述程序执行装置还具有存储脆弱性信息的脆弱性信息存储部,该脆弱性信息表示由所述脆弱性库函数处理的参数值中的非法值,并且,按照由所述脆弱性库函数处理的参数值在接收数据中的每个记述位置表示对策处理,
在随着从外部装置接收到接收数据而被请求调用所述脆弱性库函数、且由于该调用而由所述脆弱性库函数处理的参数值属于所述非法值的情况下,所述脆弱性对策控制部判定该参数值在接收数据中的记述位置,使所述脆弱性对策处理部执行与该参数值的记述位置对应的对策处理。
2.根据权利要求1所述的程序执行装置,其特征在于,
所述程序执行装置还具有存储脆弱性信息的脆弱性信息存储部,该脆弱性信息表示由所述脆弱性库函数处理的参数值中的非法值,
在被请求调用所述脆弱性库函数的情况下,所述脆弱性对策控制部判断由于该调用而由所述脆弱性库函数处理的参数值是否属于所述非法值,
当由所述脆弱性库函数处理的参数值属于所述非法值的情况下,所述脆弱性对策控制部使所述脆弱性对策处理部执行使得所述脆弱性库函数不处理所述非法值的对策处理。
3.根据权利要求2所述的程序执行装置,其特征在于,
在被请求调用所述脆弱性库函数以外的库函数的情况下,所述脆弱性对策控制部不使所述脆弱性对策处理部执行对策处理即调用作为对象的库函数,
在被请求调用所述脆弱性库函数且由于该调用而由所述脆弱性库函数处理的参数值不属于所述非法值的情况下,所述脆弱性对策控制部不使所述脆弱性对策处理部执行对策处理即调用所述脆弱性库函数。
4.根据权利要求1所述的程序执行装置,其特征在于,
所述程序执行装置与多个脆弱性库函数对应地具有多个脆弱性对策处理部,
当在执行所述程序时被请求调用任意一个脆弱性库函数的情况下,所述脆弱性对策控制部选择与作为调用对象的脆弱性库函数对应的脆弱性对策处理部,
所述脆弱性对策控制部使选择出的脆弱性对策处理部执行针对脆弱性的对策处理。
5.根据权利要求1所述的程序执行装置,其特征在于,
所述脆弱性对策处理部和所述脆弱性对策控制部包含在通用库中。
CN201380039842.1A 2012-08-01 2013-07-25 程序执行装置以及程序分析装置 Expired - Fee Related CN104508672B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012-171164 2012-08-01
JP2012171164 2012-08-01
PCT/JP2013/070188 WO2014021190A1 (ja) 2012-08-01 2013-07-25 プログラム実行装置及びプログラム解析装置

Publications (2)

Publication Number Publication Date
CN104508672A CN104508672A (zh) 2015-04-08
CN104508672B true CN104508672B (zh) 2017-05-17

Family

ID=50027868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380039842.1A Expired - Fee Related CN104508672B (zh) 2012-08-01 2013-07-25 程序执行装置以及程序分析装置

Country Status (5)

Country Link
US (1) US9507933B2 (zh)
EP (1) EP2881877A4 (zh)
JP (1) JP5863973B2 (zh)
CN (1) CN104508672B (zh)
WO (1) WO2014021190A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US9509714B2 (en) * 2014-05-22 2016-11-29 Cabara Software Ltd. Web page and web browser protection against malicious injections
WO2015038944A1 (en) 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
CN105763534A (zh) * 2016-01-21 2016-07-13 厦门市三驾马车网络科技有限公司 一种内容陷阱检测web系统数据库信息泄露的方法
US9792200B2 (en) * 2016-03-01 2017-10-17 Sap Se Assessing vulnerability impact using call graphs
CA3027728A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN107392029B (zh) * 2017-07-28 2020-07-07 中国人民解放军63928部队 一种基于化学抽象机的脆弱性模型构建方法
CN107798236B (zh) * 2017-11-30 2021-05-04 阿里巴巴(中国)有限公司 一种对应用程序安装包实现安全安装的方法和装置
CN113672929A (zh) * 2020-05-14 2021-11-19 阿波罗智联(北京)科技有限公司 漏洞特征获取方法、装置及电子设备
CN115694982B (zh) * 2022-10-30 2023-09-05 济南三泽信息安全测评有限公司 网络攻防虚拟仿真系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047884A (ja) * 2005-08-05 2007-02-22 Recruit Co Ltd 情報処理システム
JP2009301327A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd 脆弱性対策システム、脆弱性対策サーバ、脆弱性対策方法、及びプログラム
WO2010069904A1 (en) * 2008-12-16 2010-06-24 F-Secure Oyj Method and apparatus for protecting vulnerable functions

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2004258523B2 (en) * 2003-07-07 2009-12-10 Irdeto B.V. Reprogrammable security for controlling piracy and enabling interactive content
JP2006106939A (ja) 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
JPWO2006087780A1 (ja) * 2005-02-17 2008-07-03 富士通株式会社 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP4693044B2 (ja) 2005-08-18 2011-06-01 株式会社日立ソリューションズ ソースコード脆弱性検査装置
US20070192344A1 (en) * 2005-12-29 2007-08-16 Microsoft Corporation Threats and countermeasures schema
JP4587976B2 (ja) 2006-02-27 2010-11-24 日立ソフトウエアエンジニアリング株式会社 アプリケーションの脆弱性検査方法および装置
JP4722730B2 (ja) 2006-03-10 2011-07-13 富士通株式会社 セキュリティ管理プログラム、セキュリティ管理装置、およびセキュリティ管理方法
JP2007241906A (ja) 2006-03-11 2007-09-20 Hitachi Software Eng Co Ltd Webアプリケーション脆弱性動的検査方法およびシステム
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
US8959647B2 (en) * 2007-02-27 2015-02-17 Microsoft Corporation Runtime security and exception handler protection
US20090030756A1 (en) * 2007-07-27 2009-01-29 Bank Of America Corporation Managing Risk Associated with Various Transactions
US20090276257A1 (en) * 2008-05-01 2009-11-05 Bank Of America Corporation System and Method for Determining and Managing Risk Associated with a Business Relationship Between an Organization and a Third Party Supplier
JP5585303B2 (ja) * 2010-08-25 2014-09-10 日本電気株式会社 ライブラリ実行管理システム、ライブラリ実行管理方法およびプログラム
JP5077455B2 (ja) * 2011-03-07 2012-11-21 富士通株式会社 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP2013030017A (ja) * 2011-07-28 2013-02-07 Fujitsu Ltd テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047884A (ja) * 2005-08-05 2007-02-22 Recruit Co Ltd 情報処理システム
JP2009301327A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd 脆弱性対策システム、脆弱性対策サーバ、脆弱性対策方法、及びプログラム
WO2010069904A1 (en) * 2008-12-16 2010-06-24 F-Secure Oyj Method and apparatus for protecting vulnerable functions

Also Published As

Publication number Publication date
EP2881877A4 (en) 2016-08-03
US20150302191A1 (en) 2015-10-22
US9507933B2 (en) 2016-11-29
JPWO2014021190A1 (ja) 2016-07-21
EP2881877A1 (en) 2015-06-10
JP5863973B2 (ja) 2016-02-17
WO2014021190A1 (ja) 2014-02-06
CN104508672A (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
CN104508672B (zh) 程序执行装置以及程序分析装置
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
US8850581B2 (en) Identification of malware detection signature candidate code
US8762948B1 (en) System and method for establishing rules for filtering insignificant events for analysis of software program
TWI575397B (zh) 利用運行期代理器及動態安全分析之應用程式逐點保護技術
Scholte et al. Preventing input validation vulnerabilities in web applications through automated type analysis
US10742666B2 (en) System and method for static detection and categorization of information-flow downgraders
US8646088B2 (en) Runtime enforcement of security checks
JP5786513B2 (ja) ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体
US10855717B1 (en) Systems and methods of intelligent and directed dynamic application security testing
US8635602B2 (en) Verification of information-flow downgraders
US20070083933A1 (en) Detection of security vulnerabilities in computer programs
Shar et al. Auditing the XSS defence features implemented in web application programs
Alkhalaf et al. Viewpoints: differential string analysis for discovering client-and server-side input validation inconsistencies
WO2015073469A1 (en) Functional validation of software
Leithner et al. Hydra: Feedback-driven black-box exploitation of injection vulnerabilities
CN108228312A (zh) 通过解释器执行代码的系统和方法
Qin et al. UCRF: Static analyzing firmware to generate under-constrained seed for fuzzing SOHO router
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
US10002253B2 (en) Execution of test inputs with applications in computer security assessment
WO2016036368A1 (en) Determine protective measure for data that meets criteria
Windsor et al. High‐coverage metamorphic testing of concurrency support in C compilers
CN113507440A (zh) 一种基于web应用运行时的零规则XSS攻击检测方法
CN112446030A (zh) 一种网页端的文件上传漏洞检测方法和装置
Xu et al. Framework for State‐Aware Virtual Hardware Fuzzing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170517

Termination date: 20190725

CF01 Termination of patent right due to non-payment of annual fee