CN101356535A - 一种检测和防止java脚本程序中不安全行为的方法和装置 - Google Patents
一种检测和防止java脚本程序中不安全行为的方法和装置 Download PDFInfo
- Publication number
- CN101356535A CN101356535A CNA2006800508031A CN200680050803A CN101356535A CN 101356535 A CN101356535 A CN 101356535A CN A2006800508031 A CNA2006800508031 A CN A2006800508031A CN 200680050803 A CN200680050803 A CN 200680050803A CN 101356535 A CN101356535 A CN 101356535A
- Authority
- CN
- China
- Prior art keywords
- script
- code
- window
- arg
- shell script
- 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.)
- Granted
Links
Images
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/54—Monitoring 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 by adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种检测和防止脚本程序中不安全行为的方法和装置。在一个实施例中,该方法包括基于第一安全策略对脚本程序进行静态分析,以检测脚本程序中的不安全行为,如果在执行脚本程序时违反安全策略,则防止脚本程序的执行。
Description
优先权
本专利申请要求2005年11月10日提交的、对应的临时专利申请序列号为no.60/735,772,名称为“一种检测和防止JAVA脚本程序中不安全行为的方法和装置”,;以及2005年11月10日提交的、临时专利申请序列号为no.60/735,513,名称为“一种策略引导的将JAVA脚本程序转化为保证安全的程序的方法和装置”的优先权,并在此引进入该申请作为参考。
技术领域
本发明涉及计算机编程领域;更具体地,本发明涉及检测和防止程序中的不安全行为。
背景技术
网络浏览器的安全是个严重的问题。客户端浏览器所遭受的无数攻击已经危及了敏感用户信息(密码,在线身份)完整性的安全,并且严重降低了客户端机器的性能。这些攻击经常滥用流行的客户端脚本语言如JAVA中发现的计算设施,或滥用浏览器和脚本解释器中的实施错误。潜在地,这种安全状况在蜂窝电话设备中更糟糕,这些设备具有更多样的移动浏览器(以及潜在的安全缺陷)和供恶意脚本滥用设备资源的机会。
通常的有害攻击的一些例子包括跨站点脚本,钓鱼,拒绝服务以及滥用API,以下详细描述。
跨站点脚本(XSS)是最重要的安全弱点之一,常见于基于网络的应用。此弱点允许攻击者向由可信任的网络服务器产生的网页中注入一段脚本(例如Java脚本)。浏览器执行该注入的代码,如同其是由服务器所提供。由于浏览器的安全限制是基于网页的来源,在与网络应用域相同的许可下,该代码被浏览器执行,绕过了安全限制。这种情况如图2所示。一般而言,XSS弱点很容易被利用。无辜的用户点击电子邮件或即时消息中的链接,或简单地阅读网络论坛,它就可能启动。利用XSS弱点,恶意方可以发起多种攻击,范围包括从骚扰行为(例如改变浏览器主页),到呈现错误信息(例如通过动态修改主机HTML代码),到抢劫帐户(例如通过从cookie中盗取用户的登录名和密码)。结合利用浏览器的实现缺陷(安全漏洞),黑客可能制造进一步的严重破坏,如读取用户文件以及执行恶意程序。
由于Java脚本提供了对一些手机资源的访问,其访问或通过文档目标模型(DOM),或通过提供网络接入的各种API,恶意Java脚本代码就可能损害这些资源。重要资源包括:磁盘空间,通过Java脚本具有的写入cookie的功能,这是DOM的一部分;网络利用,通过Java脚本能够打开其来源站点的连接的功能(特别地,这种利用可能隐藏在用户关注的窗口生出的子窗口中,因而导致了无意识的网络利用);用户接口元素,如窗口大小,定位等等(通过DOM,Java脚本具有修改其打开的窗口的这些属性的能力);以及浏览器元素的预期功能,如返回按钮等等(当控制线程试图离开特定页面时,通过返回按钮或点击不同的链接,恶意Java脚本可对发生的时间重编程。这样的Java脚本能执行任意动作,如打开多个窗口等等)。
钓鱼(也称为欺骗))是基于社会工程的攻击形式。它通过假扮作受信任方(例如银行网站)欺骗受害者使其交出敏感信息(如密码和信用卡号码)。钓鱼攻击的数量正在增长,其典型目标是银行客户和在线支付服务。这种攻击的损失可能很严重,如真实的财产损失或身份遭窃。
在如IE之类的浏览器中,Java脚本通过一个名为clipboardData的对象访问用户的剪贴板。该对象为三种剪贴板活动提供API:清除、读和写。例如,下列简单脚本从剪贴板中读取文字并显示在浏览器中:
document.write(window.clipboardData.getData(‘Text’));
不难看出,剪贴板可以潜在地用做在当前网页和系统其他部分之间共享的资源。这就提供了一种绕过同源策略的渠道。对象clipboardData不是为了在源自不同域的页面之间转移数据。不幸地,上面这一行简单的脚本成功地得到了剪贴板数据,即使该数据之前未被来自当前域的页面设定过。
Java脚本API的恶意使用可造成恼人的效果,或便于发起其他攻击。一种常见的这样的恶意使用是使用弹出窗口(或弹下窗口)。现在已经有许多可用的弹出窗口阻止器。
一些现有的解决脚本攻击的方法是特定的(ad-hoc)且非常有限。首先,实施漏洞可以通过补丁填补,但是过去15年的个人计算经验表明,不能指望这样的主动行为。其次,存在浏览器插件工具以抵御如弹出窗口的骚扰,并提供启发以检查钓鱼攻击。然而,这些工具暗中使用的安全策略不可由用户或操作者扩展,且仅捕捉特定攻击类型的特定事件,而不是整个攻击类型本身。例如,弹出窗口阻止器不限制Java脚本打开的窗口的数量或位置,或这些窗口是否进行无意识的网络通信。
发明内容
公开了一种检测和防止脚本程序中不安全行为的方法和装置。在一个实施例中,方法包括基于第一安全策略对脚本程序进行静态分析,以检测脚本程序中的不安全行为,如果在执行脚本程序时会违反安全策略,则防止脚本程序的执行。
附图说明
通过以下给出的详细描述,以及本发明各种实施例的附图,可以更全面地理解本发明。然而,不能认为这些附图是将本发明限于特定的实施例,而仅是为了解释和理解本发明。
图1示出了采用基于静态分析的、本公开的技术的总体框架的方框图。
图2示出了跨站点脚本的示例。
图3示出了与XSS相关的Java脚本和DOM API的本质提取内容。
图4示出了基于流的工具的处理过程一个实施例的方框图。
图5示出了说明基于流的工具的Java脚本工具的示例。
图6示出了使用该工具的系统的方框图。
图7示出了使用该工具与优化的系统的方框图。
图8示出了采用基于代码重写的、本公开技术的总体框架的方框图。
图9示出了在能够滥用API的情况下进行代码重写的系统的一个实施例的方框图。
图10示出了在能够滥用API的情况下进行代码重写的系统的另一个实施例的方框图。
图11示出了采用本公开技术的总体架构的一个实施例的方框图。
图12示出了计算机系统的一个实施例的方框图。
具体实施方式
本发明提供了多种检测和防止脚本(如Java脚本)程序违反给定的安全策略的技术。此处描述的技术可以用于抵御跨站点脚本攻击、拒绝服务攻击及其他滥用浏览器和/或Java脚本解释器实现缺陷的攻击。在实施例中,该技术同时采用了静态分析和动态监控以过滤将执行的脚本。通过过滤器的脚本或是被安全策略证明是安全的,或是在其在运行期违反安全策略之前促使其停止执行。这些技术的特征之一是不修改脚本语义,因而确保脚本中任何有用的功能不会被误修改。
基于给定的安全策略,给出多种技术限制不信任脚本的行为。此处描述的技术可用于抵御钓鱼、滥用共享资源、恶意利用API、非预期行为、以及拒绝服务的攻击。在一个实施例中,采用了在目标脚本中进行代码重写的技术。与阻止潜在的恶意脚本不同,代码被修改以使其安全执行。因而,在一个实施例中,产生的代码保证不会发生运行期错误。这些技术的一个与众不同的特征在于,脚本语义在分析期间被修改,以防止善意脚本(次假阳性)的过早终止。这补充了之前段落描述的通过静态分析和动态监控来禁止违法策略的技术。
在一个实施例中,安全属性由可扩展的策略规范语言表述,可覆盖多种攻击,且提出的架构可用于在脚本语言,如Java脚本中实施这些技术。在一个实施例中,策略语言用于编写过滤器和由于抵御多种不同类型攻击的工具。以下给出示例,以说明其如何帮助抵御XSS、钓鱼、DOS以及未确认输入和参数。这也有助于在开发安全补丁或病毒定义之前采用快速预补丁过滤器。
在以下的描述中,阐述了大量细节,以提供本发明的更加完整的解释。然而,很显然,对本领域技术人员而言,没有这些具体细节,也可以实施本发明。在其他实例中,公知结构和设备以框图而非细节的形式示出,以避免使本发明含糊。
以下详细描述中的一部分针对在计算机存储器中对数据比特的算法和符号的运算表示给出的。这些算法描述和表示是数据处理领域的技术人员使用的最有效地向本领域其他技术人员传递其工作实质的手段。此处,算法通常被设想为导向所希望结果的有条理的步骤序列。这些步骤需要物理量的物理操作。通常,虽然并不是必须的,这些量采用电或磁信号的形式,能够进行存储、转发、合并、比较及其他操作。有时,原则上出于通用的原因,这些信号以比特、值、元素、符号、字符、术语、数字等等的方式表示被证明是方便的。
然而,应记住,所有这些以及相似的术语是与合适的物理量相关联的,且仅是便于用于这些量的标记。除非特别声明,否则在以下讨论中显而易见,应理解在整个描述中,使用诸如“处理”或“计算”或“运算”或“判定”或“显示”等等之类的术语的讨论涉及计算机系统或类似电子计算设备的作用和处理,其处理计算机系统寄存器和存储器中以物理(电子)量表示的数据并将其转换为计算机系统存储器或寄存器或其它这样的信息存储、转换或显示设备中的类似的以物理量表示的其他数据。
本发明同时涉及进行此操作的装置。该装置可为所需目的而专门组成,或可包括通用目的计算机,选择性地由计算机中存储的计算机程序激活或配置。这样的计算机程序可存储于计算机可读的存储介质中,如,但不局限于,任何类型的碟片包括软盘、光盘、CD-ROM以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPEOM,磁或光卡,或任何类型的适合存储电子指令的介质,每一种都与计算机系统总线耦合。
在此给出的本算法和显示并不自然地涉及任何特定的计算机或其他装置。各种通用目的系统可与遵照此处教导的程序共同使用,或者,构造更专用的装置实施所需要的方法步骤可能被证明是方便的。各种这样的系统所需要的结构将在以下描述中给示。此外,本发明并不参照任何特定的编程语言而描述。应理解,如此处描述的,可以使用各种编程语言实现本发明教导的方法。
机器可读介质包括任何用于以机器可读的形式存储或传输信息的装置。例如,机器可读介质包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质,光盘存储介质,闪存设备,电、光、声或其他形式的传播信号(例如:载波、红外信号、数字信号等)等等。
基于静态分析的技术概述
此处描述静态分析技术,可用于防止各种攻击,包括跨站点脚本、拒绝服务攻击,API滥用,并适合基于公共可扩展策略的框架。图1是表示采用这样技术的总体框架的方框图。参照图1,程序代码101(例如Java脚本代码)输入静态分析器102。基于安全策略103,静态分析器102检查程序代码101,试图在不执行它的情况下静态判断其安全性。在不安全代码的情况下,静态分析器102立即拒绝该代码。否则,代码输入动态解释器104,其对程序代码101进行0个或多个动态检查,以确保不发生运行期违规。在实施例中,动态解释器104仅在不能静态判断运行期结果的位置进行检查。若运行期将要发生违规,则这些检查用于停止程序的执行。在一个实施例中,提供了策略语言和相关的技术,用于编写代码滤器以抵御多种不同类型的攻击。
抵御跨站点脚本攻击
在一个实施例中,提供了客户端解决方案。与识别哪段代码是恶意的并过滤恶意代码的方法不同,该方法是基于通过关注影响用户安全的关键操作以实现对关键用户资源的保护。通过这样做,该方法对用户的判断力提出警告。
为此目的,所有关键资源被统一处理,并称为secret(秘密)。secret可以是下列任一个实体,例如:cookie文件、密码域(或密码类型的文本框)、浏览器设定、来自未初始化剪贴板的数据以及历史条目。为此目的,所有对URL的网络请求都统一作为load(URL)处理。load可以是下列任一实体,例如:加载当前页(例如location.href=URL)、表格(例如action=URL)、图像(例如img src=URL)、框架(例如iframesrc=URL)以及层对象:load(URL,width)。
基于上述对用户资源的统一处理,图3示出了与XSS相关的Java脚本和DOM API的本质的提取内容。域名D,URL U及值V都是字符串。布尔值b为0或1。环境ψ将变量X映射为类型T。类型T是域名列表。表达式为下列之一:secret、对子表达式op、值V或变量X的运算。命令为赋值、条件、网络请求或终止。
基于流的工具
在一个实施例中,静态分析器向关键用户资源标记其拥有者(域名,在同源策略中使用),其信息流由静态分析器分析,并且,动态解释器在关键信息将要发送至不同于当前HTML源的域之处插入运行期检查(警告)。图4是基于流的工具的处理过程的一个实施例的方框图,是所公开的基于静态分析的通用技术的特别实例。参照图4,Java脚本代码401输入流分析器402并由其接收,流分析器402根据信息流策略403将各种代码资源(例如URL、cookie等)进行标记。产生的经标记的代码输入动态解释器404,以在由流分析器402表示的程序点处插入检查点。在一个实施例中,若将要发生违规,则插入的检查点将阻止程序执行,因此产生的代码在运行期总是安全执行。
图5是Java脚本工具的示例,清晰地说明了标记是如何注释的,以及检查点是如何插入的。这是在静态环境ψ的帮助下实施的。该环境帮助判定表达式的秘密性。包含当前域秘密信息的表达式具有以下其中之一:该表达式是secret;该表达式包含秘密子表达式如参数;以及该表达式是一个变量且由当前域名标记过。
该工具系统检查程序代码并在需要时进行更改。对于赋值,该系统更新环境,将赋值对象标记为相应的秘密。对加载URL,若该URL包含不属于如该URL中所写的目标域的秘密信息,该系统插入对用户的判断力的警告。该系统在使用期间不改变其他命令,此规则是微不足道的并在此省略。
放松条件的工具
在可选实施例中,一些放松条件的方法可以用于更容易地实施(较少的规则),但其精确性较低(潜在地有更多用户相互作用)。可使用以下可选实施例的组合。
在一个可选实施例中,为了在读取secret后防止load(URL),执行以下工具。在程序开始处,对用户资源使用全局标记变量。一旦秘密条目被读取,该标记就被设置。在可能泄漏这些资源的API调用前,插入代码以检查该标记是否被设置。若标记为设置,则API照常继续。否则,插入的代码将对用户提出警告,并询问是否继续。该工具所遵照的规则如下:
在另一可选实施例中,为防止嵌入与load(URL)中的secret,同时禁止在load参数中使用变量,使用以下工具。特别地,URL作为load的参数进行分析并检查以判断其是否包含secret或变量。
在一个实施例中,为禁止指针指向来自不同于当前HTML源的域的脚本,使用以下工具。当加载URL时,检查URL的域及URL的目标。若该域不是当前域且其目标是Java脚本文件,则插入警告并询问用户是否继续。否则,加载照常继续。
在一个实施例中,工具可同其他补充技术一起应用,以较少假阳性的数量。例如,白名单(黑名单)可用于允许(阻止)已知的安全(易受攻击)的站点。
抵御拒绝服务攻击
在一个实施例中,为检测并防止拒绝服务攻击,对涉及资源滥用的API调用进行限制。定义表示这种限制的特别语言如下:
Policy:=(FunctionSpec,InstrumentationSpec)
FunctionSpec:=(FunctionName,Arglist)
Arglist:=Arg*
Arg:=Var|Const
InstrumentationSpec:=Instrumentation*
Instrumentation:=Pred(Arg)|StaticPred(Arg)
Pred(Arg):=Compare(Arg,Arg)|
Pred(Arg)AND Pred(Arg)|
Pred(Arg)OR Pred(Arg)|
NOT Pred(Arg)|
Fun(Arg)
StaticPred(Arg):=Compare(Arg,Const)|
StaticPred(Arg)AND StaticPred(Arg)|
StaticPred(Arg)OR StaticPred(Arg)|
NOT StaticPred(Arg)
Fun(Arg):=Arg IN Arg*
Compare(x,y):=x=y|x<y|x>y|
Compare(x,y)AND Compare(x,y)
安全策略由上面的语言表示。无论何时当一段给定的Java脚本代码与策略中的函数调用相匹配,对应的动态检查就在调用前插入。图5是使用该工具的系统方框图。参照图6,程序代码601(例如Java脚本代码)输入动态工具单元602并由其接收,动态工具单元602与包含安全过滤器的策略603中指定的函数调用相匹配。若找到匹配,动态工具单元602在该函数调用前加入动态检查。一旦结束,动态工具单元602将代码以安全执行的形式输出。
在一个实施例中,对插入的动态工具进行进一步静态优化。这在上面的语言中由StaticPred表示。若与给定Java脚本代码段匹配的安全策略包括一些StaticPred作为工具的一部分,则对这些断言是否成立进行静态判定。这可以消除一些动态工具,以增加最终代码的效率,并可能在StaticPred之一失败的情况下预清空整段代码的执行。图7是使用该工具的系统方框图。参照图7,程序代码701(例如Java脚本代码)输入动态工具单元702并由其接收,动态工具单元702与包含安全过滤器的策略703中指定的函数调用相匹配。若找到匹配,动态工具单元702在该函数调用前加入动态检查。一旦结束,动态工具单元702输出经处理的代码704。此后,经处理的代码704输入静态优化单元705,由其判定StaticPred断言是否成立。对静态成立的情况,由动态工具单元702加入的对应的动态检查将从经处理的代码704中移除。接着输出结果代码。
基于代码重写的技术概述
下面描述代码重写技术,可用于对抗各种攻击,包括钓鱼、共享资源如剪贴板的滥用、恶意使用API、非预期行为以及拒绝服务攻击。图8是这些技术的一个实施例的总体框架的方框图。参照图8,由代码重写单元802接收程序代码801(例如Java脚本代码)。基于指定了安全转换的安全策略803,代码重写单元802用执行相同功能的安全版本的代码替换将程序代码801中潜在的恶意(Java脚本)代码。在一个实施例中,由于安全策略指定的转换小心地改变了代码语义以保证安全,Java脚本代码总是被安全执行,不发生运行期错误。
在一个实施例中,这些技术包括策略语言和相关的技术,用于指定代码重写器,以低于多种不同类型的攻击,其细节如下所述。
抵御钓鱼
为了抵御钓鱼,在一个实施例中,网站的实际信息被展示给用户,因而加大了攻击者伪装为其他人的难度。
网页的源
关于网页的源,浏览器的地址条显示了从其加载当前网页的URL。其内容不在Java脚本的控制之内。然而,在打开新窗口(例如弹出窗口)时,Java脚本能够将所有地址条隐藏起来。钓鱼攻击经常使用它来隐藏当前网页的源。浏览器的相关的导航控制是状态条。Java脚本可以将状态条的内容更新为任意文本,也可以选择不显示状态条。
在一个实施例中,工具单元使用网页的内容,使地址条和状态条基于浏览器用户给定的用户定制的策略而正确显示。这可以通过检查网元中用于打开新窗口的API,并重写隐藏有用导航控制的代码来完成。
以下示出了用于创建新窗口的工具示例。在本实施中,检查设置地址和状态标记为假的途径,包括设定其为假、非或零,或简单地将其省略。
open(URL,windowName,location=false,status=false)
脚本打开新窗口还有其他途径(API)。例如,无边框弹出窗口可以由特别的API createPopup创建。在一个实施例中,工具单元使用基于用户策略的代码。若策略允许无边框弹出窗口(选择该选项说明用户相信其受过足够的教育,不至于陷入无边框弹出窗口中的钓鱼攻击,如从不点击其中的任何链接),则该API的调用保留其原样。若策略不允许无边框弹出窗口,工具单元使用基本打开API编写该API的调用。
更新状态条
在本技术的一个实施例中,关于更新状态条,对所得代码进行重写,以在状态条中显示页面的源。直接地,这可以通过对所有窗口插入下面的脚本来完成:
window.status=location.href.
实际上,网页利用状态条显示各种信息。在一个实施例中,代码工具单元使用对状态条的访问以显示给定文本信息的连接及页面的源。
window.status=″Welcome to DoCoMo USA Labs!″
在一个实施例中,HTML的动态特性被用于交替显示页面的源及给定的文本信息。这样的示例需要使用高级Java脚本特性,如定时器API。在一个实施例中,除了源(域名),甚至显示了更多关于当前网页的信息。一些示例包括其主机在何处以及何时创建。在浏览器窗口的分离区域中,或在“气球”中显示这样的信息也是可能的。
作为总结,通过使用该程序(Java脚本)代码,与网页的主机域相关的信息可以清晰地显示。这有助于用户评估欺骗性URL(例如,curious.com不可能是花旗银行的网站,或美洲银行不可能将主机设在日本)。
欺骗性URL
攻击者利用URL中的特殊字符欺骗用户。通过检查网页的内容,我们可以识别这些可疑的URL。
符号@有时在URL中使用。其本意是在该符号前允许包括用户名和/或密码域。真正的URL目标是接下来的域名。例如,http://docomo.com@curious.com是指curious.com而不是docomo.com。这样的URL可欺骗用户使其相信网页的假源。通过识别这样的URL,我们可以使用之前的技术将实际的域名显示给用户。
类似地,http://www.docomo.com.curious.com/也具有欺骗性。此外,使用百分比符号跟随数字(换码顺序)通常除了欺骗没有实际用途。在一个实施例中,对所有这些可疑的URL进行分析并在显示给用户之前进行合适的分解。
可以使用通用的现有方法作为上述技术的补充。一方面,可以对已知的钓鱼域保持黑名单知识库。另一方面,可以对大型金融组织的域名保持白名单,并使用模式匹配搜索欺骗性URL(例如,DOCOMO.COM对D0C0M0.COM)。这可能是有效的,因为攻击者的典型目标是拥有大量用户的组织,以加大人们陷入攻击的机率。
抵御共享资源的滥用
在诸如IE之类的浏览器中,Java脚本通过一个名为clipboardData的对象访问用户的剪贴板。该对象为三种剪贴板活动提供API:清除、读和写。例如,下列简单脚本从剪贴板中读取文字并显示在浏览器中。
document.write(window.clipboardData.getData(‘Text’));
不难看出,剪贴板可以潜在地用做在当前网页和系统其他部分之间共享的资源。这就提供了一种绕过同源策略的渠道。对象clipboardData不是为了在源自不同域的页面之间转移数据。不幸地,上面这一行简单的脚本成功地得到了剪贴板数据,即使该数据之前未被来自当前域的页面设定过。
上述剪贴板的示例此处作为此类攻击的规范性示例。在一个实施例中,当加载页面时,若网页的任何部分试图读取剪贴板,就强制执行对剪贴板数据的清除。在实施例中,这通过在网页开始处插入以下脚本来完成。需要简单的静态分析以判定剪贴板读操作发生在页面内。
document.write(window.clipboardData.clearData(’Text’,’URL’,’File’,’HTML’,’Image’))
一般而言,该技术可以应用于任何在当前网页和系统其他部分之间的潜在共享资源。
抵御恶意使用API
在一个实施例中,通过用户定制策略所允许的途径重写一些API调用以加强现有浏览器的有限的限制。在一个实施例中,修改相关窗口API调用的位置和大小的参数,使窗口落入预期的范围内。
window.moveto(x,y)=>
window.moveto(x%screen.availWidth,y%screen.availHeight)
window.resizeTo(x,y)=>
window.resizeTo(((x>screen.availWidth)?screen.availWidth:x),
((y>screen.availHeight)?screen.availHeight:y))
一些API调用不能以这种方式直接使用,因为正确的工具需要关于执行历史的知识。API moveBy(deltaX,deltaY)和resizeBy(deltaX,deltaY)是两个这样的示例;他们通过偏移量而不是绝对值来改变窗口的位置和大小。在这种情况下,工具要求更加精密,工具单元首先得到关于窗口的信息,在计算目标参数并将原调用替换为不同的调用。如下所述:
window.moveBy(dx,dy)=>
window.moveto((window.screenX+dx)%screen.availWidth,
(window.screenX+dx)%screen.availWidth)
window.resizeBy(dx,dy)=>
window.resizeTo(((window.outerWidth+dx>screen.availWidth)?
screen.availWidth:(window.outerWidth+dx)),
((window.outerHeight+dy>screen.availHeight)?
screen.availHeight:(window.outerHeight+dy)))
这些特别的重写规则防止了特定的“野”窗口,这些窗口实际上经常被用作攻击的手段。例如,不可见窗口(位于边界之外或在背景中)可暗中连接到Web服务器。与其他攻击相结合,可以在你的系统中下载敲击键盘记录代码,或将文件或密码上传给远端PC。通过与匿名代理站点一起使用,受害者甚至不能跟踪远端计算机的位置。
抵御非预期行为
Java脚本可以创建各种事件句柄用于处理数据或当事件发生时处理提示信息。例如,网页可在卸载浏览器当前内容之前提示用户是否保存或放弃其输入信息。这在用户不小心关闭窗口而未提交或保存表单数据时十分有用。当被恶意方利用时,相同的能力可能用于进行骚扰行为,如不能被用户轻松关闭的“永久”窗口。以下是利用onunload事件句柄以在当前窗口关闭之前“重新产生”新窗口的简单攻击:
<html>
<head>
<title>Persistent Window</title>
<script type=″text/javascript″>
function respawn(){
window.open(URL)
}
</script>
</head>
<body onunload=″respawn()″>
Content of the webpage loaded from URL.
</body>
</html>
注意恶意句柄脚本的语义和该句柄所期望的语义之间的差异。在一个实施例中,通过在卸载句柄内时忽略API调用window.open()以保护客户端不受该攻击。使用一些静态分析检查该句柄代码:open()API调用可能不直接位于句柄的顶层代码;它可能被装入分开定义的功能中。
一般而言,许多其他事件句柄可通过类似的方式被利用。更具体地,对窗口对象,在一个实施例中,下列API调用被忽略:
●在句柄onbeforeunload和onload中打开新窗口;
●在句柄onmove,onresize,onresizeend和onresizestart移动或重置窗口大小;
●在句柄onblur,onbeforedeactivate,ondeactivate,onfocus和onactivate中改变焦点。
注意,该技术也可应用于其他浏览器对象,例如document和form。
抵御拒绝服务攻击
上面描述了基于静态分析抵御拒绝服务的攻击。以下描述基于代码重写的、另一种抵御拒绝服务攻击的方法。
为了制止拒绝服务攻击,在一个实施例中,提供了与资源滥用相关的API调用的安全行为。以下定义了一种能够表达这种安全行为的规范语言。
安全策略由语言表示如下:
Policy:=(FunctionSpec,SafeFunctionSpec)
FunctionSpec:=(FunctionName,Arglist)
Arglist:=Arg*
Arg:=Var|Const
SafeFunctionSpec:=(FunctionName,SafeArgList)
SafeArgList:=SafeArg*
SafeArg:=IF Safe(Arg)THEN Arg ELSE MakeSafe(Arg)
Safe(Arg):=Pred(Arg)|StaticPred(Arg)
Pred(Arg):=Compare(Arg,Arg)|
Pred(Arg)AND Pred(Arg)|
Pred(Arg)OR Pred(Arg)|
NOT Pred(Arg)|
Fun(Arg)
StaticPred(Arg):=Compare(Arg,Const)|
StaticPred(Arg)AND StaticPred(Arg)|
StaticPred(Arg)OR Stati cPred(Arg)|
NOT StaticPred(Arg)
Fun(Arg):=Arg IN Arg*
Compare(x,y):=x=y|x<y|x>y|
Compare(x,y)AND Compare(x,y)
无论何时,当一段给定的Java脚本代码与策略中的函数调用相匹配,对应的调用将被安全的版本替换。图9是执行重写的系统的一个实施例的方框图。参照图9,程序代码901(例如Java脚本代码)输入代码重写单元902并由其接收。代码重写单元902与包含对可能滥用的API的安全转换的策略903中指定的函数调用相匹配。若找到匹配,代码重写单元902用策略1003中指定的安全版本替换该函数调用。一旦结束,动态工具单元902以可能滥用的API的安全版本输出安全执行的代码904。
上述规范系统的基本思想是,函数调用与该调用的安全版本成对。在安全版本中,在一个实施例中,在每个争论之前放置保护,并通过利用在源函数体之前的对应代码重写函数调用来实施。
在一个实施例中,对重写代码进行进一步静态优化。在语言中通过StaticPred表示。若与一段给定的Java脚本代码匹配的安全策略包括StaticPred作为重写的一部分,则有时可能静态判定其断言是否成立。这为我们提供了优化一些重写的可能,因此增加了最终代码的效率,并可能在StaticPred失败的情况下预占全部代码的执行。图10是执行该工具的系统的选择性实施例的方框图。参照图10,程序代码1001(例如Java脚本代码)输入到代码重写器1002并由其接收,代码重写器1002将其与包含对可能滥用的API的安全转换的策略1003中指定的函数调用相匹配。若找到匹配,代码重写器1002用策略1003中指定的安全版本替换该函数调用。一旦结束,代码重写器1002以可能滥用的API的安全版本输出代码1004。静态优化器1005对代码1004进行静态优化,此后代码1004安全执行。
状态跟踪
在一个实施例中,为通过对特定API呼叫次数进行限制来抵御拒绝服务攻击,使用跟踪该计数的全局变量。为了实现这一点,在一个实施例中,使用上述安全转移语言用返回原代码的安全版本替换有疑问的API,而且每次源API被调用时增大内部变量。因而该技术可用于限制由Java脚本产生的窗口数量,作为一个示例。
所采用架构的示例:
图11是采用上述技术的总体架构的一个实施例的方框图。参照图11,安全代理1101位于运行客户端浏览器1102的客户端设备与因特网1103其他设备之间的网络中。所有进出该客户端的流量通过代理1101,在代理1101中,可对流量进行分析,且对利用安全缺陷的内容进行潜在过滤。在一个实施例中,代理1101具有过滤器,用于处理客户端从因特网1103取回的不同种类的内容,如HTTP包头内容(例如URL)和HTTP响应内容(如Java脚本)。更具体地,客户端浏览器1102可接收用户输入1116。客户端浏览器1102产生页面请求1151。代理1101接收页面请求1151并使用URL过滤器1161对URL进行过滤,使用HTTP请求包头过滤器1162对HTTP请求包头进行过滤。过滤之后,代理1101将页面请求1151发送至因特网1103。来自因特网1103的对页面请求1151的响应由代理1101接收,并使用HTTP响应包头过滤器1164对包头进行过滤。在使用HTTP响应包头过滤器1164过滤之后,代理1101使用HTML内容过滤器1163和/或Java脚本过滤器及工具1110对内容进行过滤。经过滤的内容1152,代表HTML内容过滤器1163和Java脚本过滤器及工具1110两者或两者之一的输出,由代理1101输出并发送给客户端浏览器1102。HTML内容过滤器1163和Java脚本过滤器及工具1110的输出也可以用于促进基于经过滤内容的攻击特征的浏览器开发。
上述技术在Java脚本过滤器及工具单元1110中执行。
安全描述文件1120对应于由上述技术执行的任何策略规范。
计算机系统的示例:
图12是执行此处描述的一个或多个操作的示例性计算机系统的方框图。参照图12,计算机系统1200可包括示例性客户端或服务器计算机系统。计算机系统1200包括通信机构或总线1211,用于信息通信;处理器1212与总线1211耦合,用于处理信息。处理器1212包括微处理器,但不限于微处理器,例如PentiumTM,PowerPCTM,AlphaTM等等。
系统1200还包括随机存取存储器(RAM),或其他耦合到总线1211的动态存储设备1204(称为主存储器),用于存储处理器1212执行的信息和指令。主存储器1204也可用于在处理器1212执行指令期间存储临时变量或其它中间信息。
计算机系统1200也包括只读存储器(ROM)和/或其他耦合到总线1211的静态存储设备1206,用于存储处理器1212的静态信息和指令;以及数据存储设备1207,如磁盘或光盘及其对应的盘驱动器。数据存储设备1207耦合到总线1211用于存储信息和指令。
计算机系统1200可进一步耦合到显示设备1221,如阴极射线管(CRT)或液晶显示器(LCD),耦合到总线1211以向计算机用户显示信息。字母数字输入设备1222,包括字母数字和其他键,也可耦合到总线1211,用于同处理器1212进行信息和命令集通信。附加用户输入设备是光标控制器1223,如鼠标、跟踪球,跟踪板、铁笔或光标方向键,耦合到总线1211用于同处理器1212进行方向信息和命令集通信,并用于控制显示器1221上的光标移动。
另一个可耦合到总线1211的设备是硬拷贝设备1223,可用于将信息打印到介质上,如纸、胶片或类似介质。另一个可连接到总线1211的设备是有线/无线通信设备1225,用于同电话或手持掌上设备通信。
应该指出,系统1200的任一或全部组件及相关硬件可以用于本发明。然而,应理解,计算机系统的其他配置可以包括这些设备中的一些或全部。
在阅读前面的描述之后,对本技术领域普通技术人员来说,本发明的许多选择和修改是显而易见的。应理解,以示例方式示出和描述的任何特定实施例都不应视为对本发明的限定。因此,对各种实施例中细节的参考不应限制权力要求的范围,在权利要求中仅陈述了与本发明的本质相关的特征。
Claims (4)
1.一种方法,包括:
基于第一安全策略对脚本程序进行静态分析,以检测脚本程序的不安全行为;以及
当执行脚本程序将违反安全策略,则防止脚本程序的执行。
2.具有一个或多个计算机可读介质的制造产品,介质上存储指令,当由系统执行指令时,指令使系统执行下述方法,所述方法包括:
基于第一安全策略对脚本程序进行静态分析,以检测脚本程序的不安全行为;以及
当执行脚本程序将违反安全策略,则防止脚本程序的执行。
3.一种方法,包括:
基于第一安全策略分析脚本程序;以及
修改脚本程序以确保脚本程序的安全执行。
4.具有一个或多个计算机可读介质的制造产品,介质上存储指令,当由系统执行该指令时,指令使得系统实施下述方法,所述方法包括:
基于第一安全策略对脚本程序进行分析;以及
修改脚本程序以确保脚本程序的安全执行。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US73577205P | 2005-11-10 | 2005-11-10 | |
US73551305P | 2005-11-10 | 2005-11-10 | |
US60/735,772 | 2005-11-10 | ||
US60/735,513 | 2005-11-10 | ||
US11/594,524 US20070107057A1 (en) | 2005-11-10 | 2006-11-07 | Method and apparatus for detecting and preventing unsafe behavior of javascript programs |
US11/594,524 | 2006-11-07 | ||
PCT/US2006/043627 WO2007058882A2 (en) | 2005-11-10 | 2006-11-08 | A method and apparatus for detecting and preventing unsafe behavior of javascript programs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101356535A true CN101356535A (zh) | 2009-01-28 |
CN101356535B CN101356535B (zh) | 2011-08-24 |
Family
ID=37946322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800508031A Active CN101356535B (zh) | 2005-11-10 | 2006-11-08 | 一种检测和防止java脚本程序中不安全行为的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20070107057A1 (zh) |
EP (2) | EP1962220A1 (zh) |
JP (1) | JP2009521737A (zh) |
CN (1) | CN101356535B (zh) |
WO (1) | WO2007058882A2 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103026684A (zh) * | 2010-07-22 | 2013-04-03 | 国际商业机器公司 | 跨站脚本攻击保护 |
CN103413073A (zh) * | 2013-07-09 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
CN103679018A (zh) * | 2012-09-06 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种检测csrf漏洞的方法和装置 |
CN101895516B (zh) * | 2009-05-19 | 2014-08-06 | 北京启明星辰信息技术股份有限公司 | 一种跨站脚本攻击源的定位方法及装置 |
CN104468546A (zh) * | 2014-11-27 | 2015-03-25 | 微梦创科网络科技(中国)有限公司 | 一种网络信息处理方法及防火墙装置、系统 |
CN105229661A (zh) * | 2013-07-31 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 基于信号标记确定恶意软件 |
CN105283853A (zh) * | 2013-05-09 | 2016-01-27 | 微软技术许可有限责任公司 | 制定语义基线 |
CN106156616A (zh) * | 2016-06-24 | 2016-11-23 | 武汉斗鱼网络科技有限公司 | 一种网站脚本攻击的防御方法及防御系统 |
CN106789959A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种数据安全处理器和处理方法 |
US9798981B2 (en) | 2013-07-31 | 2017-10-24 | Entit Software Llc | Determining malware based on signal tokens |
US10372899B2 (en) | 2010-07-22 | 2019-08-06 | International Business Machines Corporation | Method and apparatus for context-aware output escaping using dynamic content marking |
Families Citing this family (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245049B2 (en) * | 2004-06-14 | 2012-08-14 | Microsoft Corporation | Method and system for validating access to a group of related elements |
US8078740B2 (en) | 2005-06-03 | 2011-12-13 | Microsoft Corporation | Running internet applications with low rights |
US20060282830A1 (en) * | 2005-06-13 | 2006-12-14 | Microsoft Corporation | Analysis of the impact of application programs on resources stored in data stores |
JP2007287124A (ja) * | 2006-04-18 | 2007-11-01 | Softrun Inc | インターネット接続サイトの分析を通じたフィッシング防止方法及びその方法を実現するためのコンピュータプログラムを記録した記録媒体 |
US8185737B2 (en) | 2006-06-23 | 2012-05-22 | Microsoft Corporation | Communication across domains |
US20080083012A1 (en) * | 2006-06-26 | 2008-04-03 | Dachuan Yu | Program instrumentation method and apparatus for constraining the behavior of embedded script in documents |
JP4908131B2 (ja) * | 2006-09-28 | 2012-04-04 | 富士通株式会社 | 非即時処理存在可能性の表示処理プログラム,装置,および方法 |
EP2127311B1 (en) | 2007-02-02 | 2013-10-09 | Websense, Inc. | System and method for adding context to prevent data leakage over a computer network |
US8495708B2 (en) * | 2007-03-22 | 2013-07-23 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US8438609B2 (en) * | 2007-03-22 | 2013-05-07 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US9558019B2 (en) * | 2007-03-22 | 2017-01-31 | Invention Science Fund I, Llc | Coordinating instances of a thread or other service in emulation |
US20080235001A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing emulation decisions in response to software evaluations or the like |
US20080235000A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing security control practice omission decisions from service emulation indications |
US8874425B2 (en) * | 2007-03-22 | 2014-10-28 | The Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US9378108B2 (en) * | 2007-03-22 | 2016-06-28 | Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US20080234998A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Coordinating instances of a thread or other service in emulation |
US8438653B2 (en) * | 2007-04-10 | 2013-05-07 | Microsoft Corporation | Strategies for controlling use of a resource that is shared between trusted and untrusted environments |
US20080295164A1 (en) * | 2007-05-24 | 2008-11-27 | International Business Machines Corporation | Mashup component isolation via server-side analysis and instrumentation |
US10019570B2 (en) | 2007-06-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Protection and communication abstractions for web browsers |
US8181246B2 (en) | 2007-06-20 | 2012-05-15 | Imperva, Inc. | System and method for preventing web frauds committed using client-scripting attacks |
US8181260B2 (en) | 2007-08-15 | 2012-05-15 | International Business Machines Corporation | Tracking the origins of data and controlling data transmission |
CN101350054B (zh) * | 2007-10-15 | 2011-05-25 | 北京瑞星信息技术有限公司 | 计算机有害程序自动防护方法及装置 |
US20090125977A1 (en) * | 2007-10-31 | 2009-05-14 | Docomo Communications Laboratories Usa, Inc. | Language framework and infrastructure for safe and composable applications |
US20090119769A1 (en) * | 2007-11-05 | 2009-05-07 | Microsoft Corporation | Cross-site scripting filter |
US8914774B1 (en) | 2007-11-15 | 2014-12-16 | Appcelerator, Inc. | System and method for tagging code to determine where the code runs |
US8954989B1 (en) | 2007-11-19 | 2015-02-10 | Appcelerator, Inc. | Flexible, event-driven JavaScript server architecture |
US8260845B1 (en) | 2007-11-21 | 2012-09-04 | Appcelerator, Inc. | System and method for auto-generating JavaScript proxies and meta-proxies |
US8719451B1 (en) | 2007-11-23 | 2014-05-06 | Appcelerator, Inc. | System and method for on-the-fly, post-processing document object model manipulation |
US8566807B1 (en) | 2007-11-23 | 2013-10-22 | Appcelerator, Inc. | System and method for accessibility of document object model and JavaScript by other platforms |
EP2065824A1 (en) * | 2007-11-30 | 2009-06-03 | Fox Entertainment Group | HTML filter for prevention of cross site scripting attacks |
US8806431B1 (en) | 2007-12-03 | 2014-08-12 | Appecelerator, Inc. | Aspect oriented programming |
US8819539B1 (en) | 2007-12-03 | 2014-08-26 | Appcelerator, Inc. | On-the-fly rewriting of uniform resource locators in a web-page |
US8756579B1 (en) | 2007-12-03 | 2014-06-17 | Appcelerator, Inc. | Client-side and server-side unified validation |
US8938491B1 (en) | 2007-12-04 | 2015-01-20 | Appcelerator, Inc. | System and method for secure binding of client calls and server functions |
US8527860B1 (en) | 2007-12-04 | 2013-09-03 | Appcelerator, Inc. | System and method for exposing the dynamic web server-side |
US8639743B1 (en) * | 2007-12-05 | 2014-01-28 | Appcelerator, Inc. | System and method for on-the-fly rewriting of JavaScript |
US8335982B1 (en) | 2007-12-05 | 2012-12-18 | Appcelerator, Inc. | System and method for binding a document object model through JavaScript callbacks |
US8285813B1 (en) | 2007-12-05 | 2012-10-09 | Appcelerator, Inc. | System and method for emulating different user agents on a server |
US9172707B2 (en) * | 2007-12-19 | 2015-10-27 | Microsoft Technology Licensing, Llc | Reducing cross-site scripting attacks by segregating HTTP resources by subdomain |
US20090183227A1 (en) * | 2008-01-11 | 2009-07-16 | Microsoft Corporation | Secure Runtime Execution of Web Script Content on a Client |
US8621495B2 (en) * | 2008-01-18 | 2013-12-31 | Microsoft Corporation | Methods and apparatus for securing frames from other frames |
US9686288B2 (en) * | 2008-01-25 | 2017-06-20 | Ntt Docomo, Inc. | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US8387139B2 (en) * | 2008-02-04 | 2013-02-26 | Microsoft Corporation | Thread scanning and patching to disable injected malware threats |
US10395187B2 (en) | 2008-02-11 | 2019-08-27 | Clearshift Corporation | Multilevel assignment of jobs and tasks in online work management system |
US9130986B2 (en) | 2008-03-19 | 2015-09-08 | Websense, Inc. | Method and system for protection against information stealing software |
US9015842B2 (en) | 2008-03-19 | 2015-04-21 | Websense, Inc. | Method and system for protection against information stealing software |
US8806618B2 (en) * | 2008-03-31 | 2014-08-12 | Microsoft Corporation | Security by construction for distributed applications |
US8424082B2 (en) * | 2008-05-08 | 2013-04-16 | Google Inc. | Safely executing an untrusted native code module on a computing device |
US9058483B2 (en) * | 2008-05-08 | 2015-06-16 | Google Inc. | Method for validating an untrusted native code module |
US9524344B2 (en) * | 2008-06-03 | 2016-12-20 | Microsoft Corporation | User interface for online ads |
US20090299862A1 (en) * | 2008-06-03 | 2009-12-03 | Microsoft Corporation | Online ad serving |
US8291079B1 (en) | 2008-06-04 | 2012-10-16 | Appcelerator, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8880678B1 (en) | 2008-06-05 | 2014-11-04 | Appcelerator, Inc. | System and method for managing and monitoring a web application using multiple cloud providers |
US20090327869A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Online ad serving |
US8640244B2 (en) * | 2008-06-27 | 2014-01-28 | Microsoft Corporation | Declared origin policy |
US8245200B2 (en) * | 2008-07-11 | 2012-08-14 | International Business Machines Corporation | Method, system, and apparatus for dynamically injecting logging statements into web 2.0 javascript applications |
US8230506B1 (en) * | 2008-07-15 | 2012-07-24 | Zscaler, Inc. | Proxy communication detection |
US9176754B2 (en) | 2008-07-16 | 2015-11-03 | Google Inc. | Method and system for executing applications using native code modules |
US8782797B2 (en) * | 2008-07-17 | 2014-07-15 | Microsoft Corporation | Lockbox for mitigating same origin policy failures |
US7596620B1 (en) | 2008-11-04 | 2009-09-29 | Aptana, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8522200B2 (en) | 2008-08-28 | 2013-08-27 | Microsoft Corporation | Detouring in scripting systems |
US8931084B1 (en) * | 2008-09-11 | 2015-01-06 | Google Inc. | Methods and systems for scripting defense |
US8990116B2 (en) * | 2008-10-07 | 2015-03-24 | Mocana Corporation | Preventing execution of tampered application code in a computer system |
JP2010092376A (ja) * | 2008-10-10 | 2010-04-22 | Softbank Mobile Corp | 情報処理装置、情報処理方法及び情報処理プログラム |
US8701185B2 (en) * | 2008-10-14 | 2014-04-15 | At&T Intellectual Property I, L.P. | Method for locating fraudulent replicas of web sites |
US8510713B1 (en) | 2008-10-31 | 2013-08-13 | Google Inc. | Method and system for validating a disassembler |
CN102224505B (zh) * | 2008-11-19 | 2014-06-04 | 安全工程有限公司 | 用于运行时攻击预防的系统和方法 |
EP2392114B1 (en) | 2009-01-30 | 2021-01-20 | British Telecommunications public limited company | Secure web-based service provision |
US8413239B2 (en) * | 2009-02-22 | 2013-04-02 | Zscaler, Inc. | Web security via response injection |
DE102009011679A1 (de) * | 2009-02-23 | 2010-08-26 | Pilz Gmbh & Co. Kg | Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung |
US8621613B1 (en) * | 2009-05-26 | 2013-12-31 | Amazon Technologies, Inc. | Detecting malware in content items |
US8797337B1 (en) | 2009-07-02 | 2014-08-05 | Google Inc. | Graphics scenegraph rendering for web applications using native code modules |
CN101964025B (zh) * | 2009-07-23 | 2016-02-03 | 北京神州绿盟信息安全科技股份有限公司 | Xss检测方法和设备 |
JP5526654B2 (ja) * | 2009-08-20 | 2014-06-18 | 富士通株式会社 | データ送信プログラム、データ送信装置および操作手順書編集方法 |
US8214903B2 (en) | 2009-10-02 | 2012-07-03 | International Business Machines Corporation | Analysis of scripts |
US20120089481A1 (en) * | 2009-11-24 | 2012-04-12 | Chain Reaction Ecommerce, Inc. | Securing sensitive information with a trusted proxy frame |
US8387143B2 (en) * | 2009-11-30 | 2013-02-26 | Citrix Systems, Inc. | Systems and methods for aggressive window probing |
US9210184B2 (en) * | 2009-12-29 | 2015-12-08 | International Business Machines Corporation | Determining the vulnerability of computer software applications to attacks |
US8997217B2 (en) * | 2010-01-25 | 2015-03-31 | Samsung Electronics Co., Ltd. | Safely processing and presenting documents with executable text |
US9058489B2 (en) * | 2010-01-25 | 2015-06-16 | Samsung Electronics Co., Ltd. | Marking documents with executable text for processing by computing systems |
US8782612B2 (en) * | 2010-05-11 | 2014-07-15 | Ca, Inc. | Failsafe mechanism for dynamic instrumentation of software using callbacks |
US8566800B2 (en) | 2010-05-11 | 2013-10-22 | Ca, Inc. | Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation |
US8473925B2 (en) | 2010-05-11 | 2013-06-25 | Ca, Inc. | Conditional dynamic instrumentation of software in a specified transaction context |
US8826444B1 (en) * | 2010-07-09 | 2014-09-02 | Symantec Corporation | Systems and methods for using client reputation data to classify web domains |
EP2413257B1 (en) * | 2010-07-26 | 2017-04-26 | Sony DADC Austria AG | Method for replacing an illegitimate copy of a software program with legitimate copy and corresponding system |
CA2711855A1 (en) | 2010-08-25 | 2010-11-03 | Ibm Canada Limited - Ibm Canada Limitee | Secure third party scripting environment |
US8938729B2 (en) | 2010-10-12 | 2015-01-20 | Ca, Inc. | Two pass automated application instrumentation |
TWI435235B (zh) * | 2010-11-04 | 2014-04-21 | Inst Information Industry | 電腦蠕蟲治療系統以及方法以及儲存電腦蠕蟲治療方法之電腦可讀取記錄媒體 |
US8788884B2 (en) * | 2010-12-07 | 2014-07-22 | Massachusetts Institute Of Technology | Automatic correction of program logic |
US9342274B2 (en) | 2011-05-19 | 2016-05-17 | Microsoft Technology Licensing, Llc | Dynamic code generation and memory management for component object model data constructs |
US8881101B2 (en) | 2011-05-24 | 2014-11-04 | Microsoft Corporation | Binding between a layout engine and a scripting engine |
US20120303453A1 (en) * | 2011-05-26 | 2012-11-29 | Yahoo! Inc. | Methods and systems for securely targeting advertisements on login pages |
US8949992B2 (en) | 2011-05-31 | 2015-02-03 | International Business Machines Corporation | Detecting persistent vulnerabilities in web applications |
US9224010B2 (en) | 2011-09-01 | 2015-12-29 | International Business Machines Corporation | Secure document creation from potentially unsecure source templates |
US10445528B2 (en) * | 2011-09-07 | 2019-10-15 | Microsoft Technology Licensing, Llc | Content handling for applications |
US9223976B2 (en) * | 2011-09-08 | 2015-12-29 | Microsoft Technology Licensing, Llc | Content inspection |
US8572750B2 (en) * | 2011-09-30 | 2013-10-29 | International Business Machines Corporation | Web application exploit mitigation in an information technology environment |
US10157049B2 (en) * | 2011-10-26 | 2018-12-18 | International Business Machines Corporation | Static analysis with input reduction |
US8898780B2 (en) * | 2011-11-07 | 2014-11-25 | Qualcomm Incorporated | Encoding labels in values to capture information flows |
US8752015B2 (en) | 2011-12-05 | 2014-06-10 | Ca, Inc. | Metadata merging in agent configuration files |
US9411616B2 (en) | 2011-12-09 | 2016-08-09 | Ca, Inc. | Classloader/instrumentation approach for invoking non-bound libraries |
US20130185623A1 (en) * | 2012-01-12 | 2013-07-18 | International Business Machines Corporation | Instructing web clients to ignore scripts in specified portions of web pages |
US9049222B1 (en) * | 2012-02-02 | 2015-06-02 | Trend Micro Inc. | Preventing cross-site scripting in web-based e-mail |
EP2902939A4 (en) | 2012-09-26 | 2016-04-27 | Mitsubishi Electric Corp | PROGRAM VERIFICATION DEVICE, PROGRAM VERIFICATION METHOD, AND PROGRAM VERIFICATION PROGRAM |
CN104685477B (zh) * | 2012-09-28 | 2018-01-19 | 慧与发展有限责任合伙企业 | 应用程序安全测试 |
CN103729287B (zh) * | 2012-10-16 | 2018-01-05 | 百度在线网络技术(北京)有限公司 | 一种前端javascript组件的测试方法和装置 |
US9241259B2 (en) | 2012-11-30 | 2016-01-19 | Websense, Inc. | Method and apparatus for managing the transfer of sensitive information to mobile devices |
US10032659B2 (en) * | 2012-12-28 | 2018-07-24 | Sunedison Semiconductor Limited (Uen201334164H) | Methods and systems for preventing unsafe operations |
US9098722B2 (en) * | 2013-03-15 | 2015-08-04 | Prevoty, Inc. | Systems and methods for parsing user-generated content to prevent attacks |
US9313223B2 (en) | 2013-03-15 | 2016-04-12 | Prevoty, Inc. | Systems and methods for tokenizing user-generated content to enable the prevention of attacks |
CN103258163B (zh) * | 2013-05-15 | 2015-08-26 | 腾讯科技(深圳)有限公司 | 一种脚本病毒识别方法、装置及系统 |
US9430452B2 (en) | 2013-06-06 | 2016-08-30 | Microsoft Technology Licensing, Llc | Memory model for a layout engine and scripting engine |
US9158935B2 (en) * | 2013-06-07 | 2015-10-13 | Microsoft Technology Licensing, Llc | Automatic mediation of resource access in mobile applications |
US9152694B1 (en) | 2013-06-17 | 2015-10-06 | Appthority, Inc. | Automated classification of applications for mobile devices |
US9774620B2 (en) * | 2013-06-18 | 2017-09-26 | Microsoft Technology Licensing, Llc | Automatic code and data separation of web application |
CN104519007A (zh) * | 2013-09-26 | 2015-04-15 | 深圳市腾讯计算机系统有限公司 | 一种漏洞检测的方法及服务器 |
US9154492B2 (en) * | 2013-09-27 | 2015-10-06 | The University Of North Carolina At Charlotte | Moving target defense against cross-site scripting |
US9922131B2 (en) * | 2013-11-06 | 2018-03-20 | Hipmunk, Inc. | Graphical user interface machine to present a window |
US9390177B2 (en) | 2014-03-27 | 2016-07-12 | International Business Machines Corporation | Optimizing web crawling through web page pruning |
KR102192479B1 (ko) * | 2014-04-23 | 2020-12-17 | 삼성전자주식회사 | 전자 장치의 프로그램 코드 분석 방법 및 전자 장치 |
CN105282096A (zh) * | 2014-06-18 | 2016-01-27 | 腾讯科技(深圳)有限公司 | Xss 漏洞检测方法和装置 |
US10419483B1 (en) * | 2014-09-17 | 2019-09-17 | Amazon Technologies, Inc. | Time-bounded execution for privileged code |
US9781145B2 (en) * | 2014-11-25 | 2017-10-03 | International Business Machines Corporation | Persistent cross-site scripting vulnerability detection |
CN104462985A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | bat漏洞的检测方法以及装置 |
US9953158B1 (en) * | 2015-04-21 | 2018-04-24 | Symantec Corporation | Systems and methods for enforcing secure software execution |
US10769351B2 (en) * | 2015-05-08 | 2020-09-08 | Citrix Systems, Inc. | Rendering based on a document object model |
US10574631B2 (en) | 2015-05-11 | 2020-02-25 | Finjan Mobile, Inc. | Secure and private mobile web browser |
US9684788B2 (en) * | 2015-06-29 | 2017-06-20 | International Business Machines Corporation | Self-repair and distributed-repair of applications |
WO2018008013A2 (en) * | 2016-07-04 | 2018-01-11 | Traffic Guard Dg Ltd | System and method for webpages scripts validation |
WO2018006241A1 (en) * | 2016-07-04 | 2018-01-11 | Mcafee, Inc. | Method and apparatus to detect security vulnerabilities in web application |
US10462145B2 (en) * | 2016-07-15 | 2019-10-29 | The Directv Group, Inc. | Method and apparatus for controlling access to custom browser functionality |
US10728274B2 (en) * | 2016-09-22 | 2020-07-28 | Check Point Software Technologies Ltd. | Method and system for injecting javascript into a web page |
WO2018080819A1 (en) * | 2016-10-24 | 2018-05-03 | Finjan Mobile, Inc. | Secure and private mobile web browser |
US10275596B1 (en) * | 2016-12-15 | 2019-04-30 | Symantec Corporation | Activating malicious actions within electronic documents |
WO2019026137A1 (ja) | 2017-07-31 | 2019-02-07 | 日本電気株式会社 | プログラム検証システム、方法およびプログラム |
US20190188384A1 (en) * | 2017-12-19 | 2019-06-20 | Crowdstrike, Inc. | Detecting script-based malware |
US20190294780A1 (en) * | 2018-03-26 | 2019-09-26 | International Business Machines Corporation | System and method for executing operating system level virtualization software objects |
WO2020021686A1 (ja) * | 2018-07-26 | 2020-01-30 | 日本電気株式会社 | 解析支援装置、解析支援方法、及びコンピュータ読み取り可能な記録媒体 |
CN112685314A (zh) * | 2021-01-05 | 2021-04-20 | 广州知图科技有限公司 | 一种JavaScript引擎安全测试方法及测试系统 |
CN112799753B (zh) * | 2021-01-08 | 2023-04-25 | 杭州雾联科技有限公司 | 一种全屏独占屏蔽方法、装置、设备及介质 |
US12107858B2 (en) | 2021-02-17 | 2024-10-01 | Target Brands, Inc. | Client-side blocking and reporting of unauthorized network transmissions |
CN114430339A (zh) * | 2021-12-25 | 2022-05-03 | 深圳太极云软技术有限公司 | 一种网络请求的过滤方法、装置、终端和可读存储介质 |
US20240037247A1 (en) * | 2022-07-29 | 2024-02-01 | Apomaya Dba Lokker | Systems, methods, and graphical user interface for browser data protection |
WO2024214263A1 (ja) * | 2023-04-13 | 2024-10-17 | 日本電信電話株式会社 | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04259036A (ja) * | 1991-02-13 | 1992-09-14 | Nec Corp | プログラム変換方式及びプログラム不正動作検出機構 |
US5812850A (en) * | 1995-11-13 | 1998-09-22 | Object Technology Licensing Corp. | Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution |
US5745738A (en) * | 1996-05-29 | 1998-04-28 | Microsoft Corporation | Method and engine for automating the creation of simulations for demonstrating use of software |
WO1998003920A1 (fr) * | 1996-07-22 | 1998-01-29 | Sony Corporation | Changeur de supports, procedes de verrouillage et deverrouillage, procede d'execution de commandes d'execution et ordinateur adressant de telles commandes au changeur |
US6760903B1 (en) * | 1996-08-27 | 2004-07-06 | Compuware Corporation | Coordinated application monitoring in a distributed computing environment |
US6154844A (en) * | 1996-11-08 | 2000-11-28 | Finjan Software, Ltd. | System and method for attaching a downloadable security profile to a downloadable |
US6167520A (en) * | 1996-11-08 | 2000-12-26 | Finjan Software, Inc. | System and method for protecting a client during runtime from hostile downloadables |
JP3266021B2 (ja) * | 1996-12-20 | 2002-03-18 | 日本電気株式会社 | セキュリティ確保方式 |
US5983348A (en) * | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US8225408B2 (en) * | 1997-11-06 | 2012-07-17 | Finjan, Inc. | Method and system for adaptive rule-based content scanners |
US7975305B2 (en) * | 1997-11-06 | 2011-07-05 | Finjan, Inc. | Method and system for adaptive rule-based content scanners for desktop computers |
US6965999B2 (en) * | 1998-05-01 | 2005-11-15 | Microsoft Corporation | Intelligent trust management method and system |
US20020112049A1 (en) * | 2000-12-14 | 2002-08-15 | International Business Machines Corporation | Measuring response time for a computer accessing information from a network |
JP2003067210A (ja) * | 2001-08-22 | 2003-03-07 | Just Syst Corp | プログラム実行防止装置、プログラム実行防止方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7243267B2 (en) * | 2002-03-01 | 2007-07-10 | Avaya Technology Llc | Automatic failure detection and recovery of applications |
CN1412714A (zh) * | 2002-09-12 | 2003-04-23 | 福建榕基软件开发有限公司 | 网络隐患扫描系统 |
US7150008B2 (en) * | 2002-10-25 | 2006-12-12 | Microsoft Corporation | Non-invasive rule-based binary analysis of software assemblies |
JP4547861B2 (ja) * | 2003-03-20 | 2010-09-22 | 日本電気株式会社 | 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム |
JP4405248B2 (ja) * | 2003-03-31 | 2010-01-27 | 株式会社東芝 | 通信中継装置、通信中継方法及びプログラム |
JP4526355B2 (ja) * | 2004-02-16 | 2010-08-18 | 株式会社日立製作所 | Web処理方法およびWeb処理装置並びにWeb処理プログラム |
-
2006
- 2006-11-07 US US11/594,524 patent/US20070107057A1/en not_active Abandoned
- 2006-11-08 WO PCT/US2006/043627 patent/WO2007058882A2/en active Application Filing
- 2006-11-08 EP EP08157802A patent/EP1962220A1/en not_active Withdrawn
- 2006-11-08 JP JP2008540189A patent/JP2009521737A/ja active Pending
- 2006-11-08 EP EP06837233A patent/EP1955249A2/en not_active Withdrawn
- 2006-11-08 CN CN2006800508031A patent/CN101356535B/zh active Active
-
2010
- 2010-04-02 US US12/753,731 patent/US20100257603A1/en not_active Abandoned
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895516B (zh) * | 2009-05-19 | 2014-08-06 | 北京启明星辰信息技术股份有限公司 | 一种跨站脚本攻击源的定位方法及装置 |
US10375107B2 (en) | 2010-07-22 | 2019-08-06 | International Business Machines Corporation | Method and apparatus for dynamic content marking to facilitate context-aware output escaping |
CN103026684A (zh) * | 2010-07-22 | 2013-04-03 | 国际商业机器公司 | 跨站脚本攻击保护 |
CN103026684B (zh) * | 2010-07-22 | 2016-01-06 | 国际商业机器公司 | 用于防御跨站脚本攻击的方法和装置 |
US10372899B2 (en) | 2010-07-22 | 2019-08-06 | International Business Machines Corporation | Method and apparatus for context-aware output escaping using dynamic content marking |
CN103679018A (zh) * | 2012-09-06 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种检测csrf漏洞的方法和装置 |
CN103679018B (zh) * | 2012-09-06 | 2018-06-12 | 百度在线网络技术(北京)有限公司 | 一种检测csrf漏洞的方法和装置 |
CN105283853A (zh) * | 2013-05-09 | 2016-01-27 | 微软技术许可有限责任公司 | 制定语义基线 |
US9904541B2 (en) | 2013-05-09 | 2018-02-27 | Microsoft Technology Licensing, Llc | Semantic baselining |
CN103413073A (zh) * | 2013-07-09 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
CN103413073B (zh) * | 2013-07-09 | 2016-01-20 | 北京深思数盾科技有限公司 | 一种保护java可执行程序的方法及设备 |
CN105229661A (zh) * | 2013-07-31 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 基于信号标记确定恶意软件 |
US9798981B2 (en) | 2013-07-31 | 2017-10-24 | Entit Software Llc | Determining malware based on signal tokens |
CN105229661B (zh) * | 2013-07-31 | 2018-10-09 | 安提特软件有限责任公司 | 基于信号标记确定恶意软件的方法、计算设备及存储介质 |
CN104468546A (zh) * | 2014-11-27 | 2015-03-25 | 微梦创科网络科技(中国)有限公司 | 一种网络信息处理方法及防火墙装置、系统 |
CN104468546B (zh) * | 2014-11-27 | 2018-01-09 | 微梦创科网络科技(中国)有限公司 | 一种网络信息处理方法及防火墙装置、系统 |
CN106156616A (zh) * | 2016-06-24 | 2016-11-23 | 武汉斗鱼网络科技有限公司 | 一种网站脚本攻击的防御方法及防御系统 |
CN106156616B (zh) * | 2016-06-24 | 2019-08-23 | 武汉斗鱼网络科技有限公司 | 一种网站脚本攻击的防御方法及防御系统 |
CN106789959A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种数据安全处理器和处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101356535B (zh) | 2011-08-24 |
WO2007058882A3 (en) | 2007-07-05 |
EP1955249A2 (en) | 2008-08-13 |
JP2009521737A (ja) | 2009-06-04 |
WO2007058882A2 (en) | 2007-05-24 |
EP1962220A1 (en) | 2008-08-27 |
US20070107057A1 (en) | 2007-05-10 |
US20100257603A1 (en) | 2010-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101356535B (zh) | 一种检测和防止java脚本程序中不安全行为的方法和装置 | |
Rodríguez et al. | Cross-site scripting (XSS) attacks and mitigation: A survey | |
Fredj et al. | An OWASP top ten driven survey on web application protection methods | |
Deepa et al. | Securing web applications from injection and logic vulnerabilities: Approaches and challenges | |
Kirda et al. | Noxes: a client-side solution for mitigating cross-site scripting attacks | |
US8800042B2 (en) | Secure web application development and execution environment | |
US8646088B2 (en) | Runtime enforcement of security checks | |
US9038161B2 (en) | Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor | |
US20240289448A1 (en) | System and Methods for Click-Jacking and Content Redressing Protection | |
Vigna et al. | Reducing errors in the anomaly-based detection of web-based attacks through the combined analysis of web requests and SQL queries | |
US20230004637A1 (en) | Secure web framework | |
Yang et al. | {Iframes/Popups} Are Dangerous in Mobile {WebView}: Studying and Mitigating Differential Context Vulnerabilities | |
Gupta et al. | Evaluation and monitoring of XSS defensive solutions: a survey, open research issues and future directions | |
Süren et al. | Know Your EK: A Content and Workflow Analysis Approach for Exploit Kits. | |
Ghorbanzadeh et al. | ANOVUL: Detection of logic vulnerabilities in annotated programs via data and control flow analysis | |
Johns et al. | Tamper-resistant likejacking protection | |
Amrollahi et al. | A survey on application of big data in fin tech banking security and privacy | |
Stephen et al. | Prevention of cross site scripting with E-Guard algorithm | |
Snehi et al. | Web client and web server approaches to prevent xss attacks | |
Raman | JaSPIn: JavaScript based Anomaly Detection of Cross-site scripting attacks | |
Pourmohamad et al. | Deep Dive into Client-Side Anti-Phishing: A Longitudinal Study Bridging Academia and Industry | |
Hadpawat et al. | Analysis of prevention of XSS attacks at client side | |
Yasmeen et al. | The critical analysis of E-Commerce web application vulnerabilities | |
Sarath et al. | Malware Forensics Analysis and Detection in Cyber Physical Systems | |
Nayak et al. | Exposing and Addressing Security Vulnerabilities in Browser Text Input Fields |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |