CN101356535B - 一种检测和防止java脚本程序中不安全行为的方法和装置 - Google Patents

一种检测和防止java脚本程序中不安全行为的方法和装置 Download PDF

Info

Publication number
CN101356535B
CN101356535B CN2006800508031A CN200680050803A CN101356535B CN 101356535 B CN101356535 B CN 101356535B CN 2006800508031 A CN2006800508031 A CN 2006800508031A CN 200680050803 A CN200680050803 A CN 200680050803A CN 101356535 B CN101356535 B CN 101356535B
Authority
CN
China
Prior art keywords
shell script
script
security strategy
code
mark
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
Application number
CN2006800508031A
Other languages
English (en)
Other versions
CN101356535A (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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of CN101356535A publication Critical patent/CN101356535A/zh
Application granted granted Critical
Publication of CN101356535B publication Critical patent/CN101356535B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • 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
    • G06F21/54Monitoring 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

一种检测和防止JAVA脚本程序中不安全行为的方法和装置
优先权
本专利申请要求2005年11月10日提交的、对应的临时专利申请序列号为no.60/735,772,名称为“一种检测和防止JAVA脚本程序中不安全行为的方法和装置”,;以及2005年11月1 0日提交的、临时专利申请序列号为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照常继续。否则,插入的代码将对用户提出警告,并询问是否继续。该工具所遵照的规则如下:
Figure S2006800508031D00081
sec ret ( sec ret ) ∃ i . sec ret ( E i ) sec ret ( op ( E * ) )
Figure S2006800508031D00083
Figure S2006800508031D00084
在另一可选实施例中,为防止嵌入与load(URL)中的secret,同时禁止在load参数中使用变量,使用以下工具。特别地,URL作为load的参数进行分析并检查以判断其是否包含secret或变量。
U = sec ret NOK ( U ) ∃ i . NOK ( E i ) NOK ( op ( E * ) ) U = X NOK ( U )
Figure S2006800508031D00092
Figure S2006800508031D00093
在一个实施例中,为禁止指针指向来自不同于当前HTML源的域的脚本,使用以下工具。当加载URL时,检查URL的域及URL的目标。若该域不是当前域且其目标是Java脚本文件,则插入警告并询问用户是否继续。否则,加载照常继续。
Figure S2006800508031D00094
Figure S2006800508031D00095
在一个实施例中,工具可同其他补充技术一起应用,以较少假阳性的数量。例如,白名单(黑名单)可用于允许(阻止)已知的安全(易受攻击)的站点。
抵御拒绝服务攻击
在一个实施例中,为检测并防止拒绝服务攻击,对涉及资源滥用的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)
Figure S2006800508031D00121
open(URL,windowName,location=true,status=true)
脚本打开新窗口还有其他途径(API)。例如,无边框弹出窗口可以由特别的API createPopup创建。在一个实施例中,工具单元使用基于用户策略的代码。若策略允许无边框弹出窗口(选择该选项说明用户相信其受过足够的教育,不至于陷入无边框弹出窗口中的钓鱼攻击,如从不点击其中的任何链接),则该API的调用保留其原样。若策略不允许无边框弹出窗口,工具单元使用基本打开API编写该API的调用。
更新状态条
在本技术的一个实施例中,关于更新状态条,对所得代码进行重写,以在状态条中显示页面的源。直接地,这可以通过对所有窗口插入下面的脚本来完成:
window.status=location.href.
实际上,网页利用状态条显示各种信息。在一个实施例中,代码工具单元使用对状态条的访问以显示给定文本信息的连接及页面的源。
windows.tatus=″Welcome to DoCoMo USA Labs!″
Figure S2006800508031D00122
window.status=location.href+″|″+″Welcome to DoCoMo USALabs!″
在一个实施例中,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.doeomo.eom.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 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脚本代码与策略中的函数调用相匹配,对应的调用将被安全的版本替换。图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 (28)

1.一种检测和防止接收脚本程序的不安全行为的方法,包括:
基于第一安全策略对脚本程序进行静态分析,以通过下列步骤检测脚本程序的不安全行为;
使用脚本程序的源的指示对至少一个资源进行标记;
监控与至少一个标记的资源有关的信息流;和
响应对脚本程序的执行造成与至少一个标记的资源相对应的信息被发送至与源域不同的域的确定,来执行动作;
如果确定脚本程序为不安全,则拒绝该脚本程序;以及
如果通过静态分析不能确定脚本程序的安全性,则根据第二安全策略插入一个以上动态检查,其中如果在执行脚本程序时会违反第二安全策略,动态检查则防止脚本程序的执行。
2.如权利要求1所述的方法,还包括,在运行程序之前,消除其运行期结果能够由静态分析确定的一个或多个插入的动态检查。
3.如权利要求1所述的方法,其中,执行的动作包括,提供警告信息以通知个体与至少一个标记的资源相对应的信息被发送至与源域不同的域。
4.如权利要求1所述的方法,其中,执行的动作包括,防止与至少一个标记的资源相对应的起因信息被发送至与源域不同的域。
5.如权利要求1所述的方法,还包括使用秘密信息对至少一个资源进行标记。
6.如权利要求5所述的方法,还包括:
在脚本程序中插入标志;
在脚本程序中插入代码以检查是否设置标志;
在脚本程序中插入代码,以在读取与标志相关联的秘密信息的程序点处设置标志;
其中,对标志的运行期检查确定是否继续正常的程序执行。
7.如权利要求5所述的方法,还包括:
分析资源定位符,作为加载请求的参数;
确定加载请求中指定的资源定位符是否包含秘密信息;以及
发出有关加载请求的警告。
8.如权利要求5所述的方法,还包括:
在加载资源定位符时,检查资源定位符的域和资源定位符中嵌入的信息的秘密等级;
如果资源定位符中嵌入的信息的秘密等级与资源定位符的域一致,或当提出对应警告时用户明示允许相应的动作,则执行该动作。
9.如权利要求1所述的方法,其中用Java脚本编写脚本程序。
10.如权利要求1中所述的方法,其中脚本程序包括Java脚本。
11.如权利要求1所述的方法,其中对脚本程序进行静态分析包括过滤该脚本程序。
12.如权利要求11所述的方法,其中过滤该脚本程序包括进行静态分析。
13.如权利要求1所述的方法,进一步包括过滤该脚本程序的步骤,过滤该脚本程序的步骤包括对脚本程序进行动态监控。
14.如权利要求1所述的方法,其中防止脚本程序的执行避免了由跨站点脚本攻击和拒绝服务攻击组成的组中至少一项。
15.一种检测和防止接收脚本程序的不安全行为的安全代理装置,所述安全代理装置与因特网耦合以接收脚本程序,所述安全代理装置包括:
脚本过滤器及工具,基于第一安全策略对脚本程序进行静态分析,以检测脚本程序的不安全行为;
如果确定脚本程序为不安全,则通过下列方式拒绝该脚本程序:
使用脚本程序的源的指示对至少一个资源进行标记;
监控与至少一个标记的资源有关的信息流;和
响应对脚本程序的执行造成与至少一个标记的资源相对应的信息被发送至与源域不同的域的确定,来执行动作;
如果通过静态分析不能确定脚本程序的安全性,则根据第二安全策略插入一个以上的动态检查,其中如果执行脚本程序时会违反第二安全策略,动态检查则防止脚本程序的执行;和
向客户浏览器提供脚本程序以便执行。
16.一种检测和防止接收脚本程序的不安全行为的方法,包括:
基于第一安全策略,通过下列步骤分析脚本程序:
使用脚本程序的源的指示对至少一个资源进行标记;
监控与至少一个标记的资源有关的信息流;和
响应对脚本程序的执行造成与至少一个标记的资源相对应的信息被发送至与源域不同的域的确定,来执行动作;
如果违反第一安全策略,则拒绝该脚本程序;以及
如果通过分析不能确定脚本程序是否违反了第一安全策略,则通过插入一个以上的动态检查来修改脚本程序,以确保脚本程序的安全执行。
17.如权利要求16所述的方法,其中安全策略制定了在修改脚本程序时使用的安全转换。
18.如权利要求16所述的方法,其中分析脚本程序包括确定程序代码是否包括打开窗口的代码;其中修改脚本程序包括提交程序代码,以确保防止程序代码对用户隐藏窗口。
19.如权利要求16所述的方法,其中修改脚本程序包括重写与状态条相对应的代码,所述状态条是作为脚本程序的执行结果显示的以包括附加信息,其中附加信息说明了页面的源。
20.如权利要求19所述的方法,其中附加信息包括说明页面宿主何处的信息。
21.如权利要求19所述的方法,其中附加信息包括说明页面何时创建的信息。
22.如权利要求16所述的方法,其中基于第一安全策略分析脚本程序包括标识一个或多个URL,在一个或多个URL中,人类阅读者不清楚与一个或多个URL相关联的域名;其中修改脚本程序使得脚本程序向用户清晰地显示正确的域名。
23.如权利要求17所述的方法,其中基于第一安全策略分析脚本程序确定与脚本程序相关联的网页是否试图读取剪贴板;其中修改脚本程序在脚本程序的相应位置中插入脚本,以在加载网页之前强制清空剪贴板。
24.如权利要求16所述的方法,其中修改脚本程序包括在一个或多个API调用中重写位置和大小参数,以确保位置和大小参数在所预期的范围内。
25.如权利要求16所述的方法,其中修改脚本程序包括针对一个或多个窗口对象忽略一个或多个API调用,所述一个或多个窗口对象从安全策略中指定的具体位置打开新窗口,从安全策略中指定的句柄中移动窗口或重置窗口大小,或从安全策略中指定的句柄中改变窗口的焦点。
26.如权利要求16所述的方法,其中修改脚本程序包括用函数调用的安全版本替换与安全策略中的函数调用匹配的脚本程序中的代码。
27.如权利要求16所述的方法,其中修改脚本程序包括使用安全策略中指定的安全版本隐藏脚本程序中的函数调用,其中,被隐藏的函数调用包括每次调用函数调用时增大内部变量的代码。
28.一种检测和防止接收脚本程序的不安全行为的安全代理装置,所述安全代理装置与因特网耦合以接收脚本程序,所述安全代理装置包括:
脚本过滤器及工具,基于第一安全策略通过下列方式对脚本程序进行分析:
使用脚本程序的源的指示对至少一个资源进行标记;
监控与至少一个标记的资源有关的信息流;和
响应对脚本程序的执行造成与至少一个标记的资源相对应的信息被发送至与源域不同的域的确定,来执行动作;
如果违反第一安全策略,则拒绝该脚本程序;以及
如果通过分析不能确定脚本程序是否违反了第一安全策略,则通过插入一个以上的动态检查来修改脚本程序,以确保脚本程序的安全执行。
CN2006800508031A 2005-11-10 2006-11-08 一种检测和防止java脚本程序中不安全行为的方法和装置 Active CN101356535B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US73551305P 2005-11-10 2005-11-10
US73577205P 2005-11-10 2005-11-10
US60/735,772 2005-11-10
US60/735,513 2005-11-10
US11/594,524 2006-11-07
US11/594,524 US20070107057A1 (en) 2005-11-10 2006-11-07 Method and apparatus for detecting and preventing unsafe behavior of javascript programs
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 CN101356535A (zh) 2009-01-28
CN101356535B true 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)

Families Citing this family (153)

* Cited by examiner, † Cited by third party
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 富士通株式会社 非即時処理存在可能性の表示処理プログラム,装置,および方法
US8938773B2 (en) 2007-02-02 2015-01-20 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
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
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
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
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
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
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
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
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
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
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
US10055698B2 (en) 2008-02-11 2018-08-21 Clearshift Corporation Online work management system with job division support
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
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
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
US8640244B2 (en) * 2008-06-27 2014-01-28 Microsoft Corporation Declared origin policy
US20090327869A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Online ad serving
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
GB2478098B (en) * 2008-11-19 2013-07-10 Secure Works Inc System and method for run-time attack prevention
WO2010086624A1 (en) 2009-01-30 2010-08-05 British Telecommunications Public Limited Compan 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
CN101895516B (zh) * 2009-05-19 2014-08-06 北京启明星辰信息技术股份有限公司 一种跨站脚本攻击源的定位方法及装置
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
US9058489B2 (en) * 2010-01-25 2015-06-16 Samsung Electronics Co., Ltd. Marking documents with executable text for processing by computing systems
US8997217B2 (en) * 2010-01-25 2015-03-31 Samsung Electronics Co., Ltd. Safely processing and presenting documents with executable text
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
US8782612B2 (en) * 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8826444B1 (en) * 2010-07-09 2014-09-02 Symantec Corporation Systems and methods for using client reputation data to classify web domains
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
US10372899B2 (en) * 2010-07-22 2019-08-06 International Business Machines Corporation Method and apparatus for context-aware output escaping using dynamic content marking
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
CN103679018B (zh) * 2012-09-06 2018-06-12 百度在线网络技术(北京)有限公司 一种检测csrf漏洞的方法和装置
EP2902939A4 (en) 2012-09-26 2016-04-27 Mitsubishi Electric Corp PROGRAM VERIFICATION DEVICE, PROGRAM VERIFICATION METHOD, AND PROGRAM VERIFICATION PROGRAM
US9438617B2 (en) * 2012-09-28 2016-09-06 Hewlett Packard Enterprise Development Lp Application security testing
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
US9313223B2 (en) 2013-03-15 2016-04-12 Prevoty, Inc. Systems and methods for tokenizing user-generated content to enable the prevention of attacks
US9098722B2 (en) * 2013-03-15 2015-08-04 Prevoty, Inc. Systems and methods for parsing user-generated content to prevent attacks
US9904541B2 (en) * 2013-05-09 2018-02-27 Microsoft Technology Licensing, Llc Semantic baselining
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
CN103413073B (zh) * 2013-07-09 2016-01-20 北京深思数盾科技有限公司 一种保护java可执行程序的方法及设备
WO2015016901A1 (en) * 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Signal tokens indicative of malware
US9798981B2 (en) 2013-07-31 2017-10-24 Entit Software Llc Determining malware based on signal tokens
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
CN104468546B (zh) * 2014-11-27 2018-01-09 微梦创科网络科技(中国)有限公司 一种网络信息处理方法及防火墙装置、系统
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
CN106156616B (zh) * 2016-06-24 2019-08-23 武汉斗鱼网络科技有限公司 一种网站脚本攻击的防御方法及防御系统
US11062019B2 (en) 2016-07-04 2021-07-13 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
CN106789959A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种数据安全处理器和处理方法
US10275596B1 (en) * 2016-12-15 2019-04-30 Symantec Corporation Activating malicious actions within electronic documents
JP7024792B2 (ja) 2017-07-31 2022-02-24 日本電気株式会社 プログラム検証システム、方法およびプログラム
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
US11860604B2 (en) 2018-07-26 2024-01-02 Nec Corporation Analysis assistance apparatus, analysis assistance method, and computer-readable recording medium
CN112685314A (zh) * 2021-01-05 2021-04-20 广州知图科技有限公司 一种JavaScript引擎安全测试方法及测试系统
CN112799753B (zh) * 2021-01-08 2023-04-25 杭州雾联科技有限公司 一种全屏独占屏蔽方法、装置、设备及介质
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
CN1412714A (zh) * 2002-09-12 2003-04-23 福建榕基软件开发有限公司 网络隐患扫描系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
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
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
JP3266021B2 (ja) * 1996-12-20 2002-03-18 日本電気株式会社 セキュリティ確保方式
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
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
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処理プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
CN1412714A (zh) * 2002-09-12 2003-04-23 福建榕基软件开发有限公司 网络隐患扫描系统

Also Published As

Publication number Publication date
WO2007058882A2 (en) 2007-05-24
WO2007058882A3 (en) 2007-07-05
JP2009521737A (ja) 2009-06-04
EP1962220A1 (en) 2008-08-27
US20070107057A1 (en) 2007-05-10
CN101356535A (zh) 2009-01-28
US20100257603A1 (en) 2010-10-07
EP1955249A2 (en) 2008-08-13

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
Stock et al. Precise client-side protection against {DOM-based}{Cross-Site} scripting
Kirda et al. Noxes: a client-side solution for mitigating cross-site scripting attacks
US8800042B2 (en) Secure web application development and execution environment
Shahriar et al. Client-side detection of cross-site request forgery attacks
US8646088B2 (en) Runtime enforcement of security checks
CN101816148A (zh) 用于验证、数据传送和防御网络钓鱼的系统和方法
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
US11586726B2 (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
Zhu et al. Detecting privilege escalation attacks through instrumenting web application source code
Süren et al. Know Your EK: A Content and Workflow Analysis Approach for Exploit Kits.
Dubin Content disarm and reconstruction of PDF files
Barhoom et al. A new server-side solution for detecting cross site scripting attack
Stephen et al. Prevention of cross site scripting with E-Guard algorithm
Ghorbanzadeh et al. ANOVUL: Detection of logic vulnerabilities in annotated programs via data and control flow analysis
Raman JaSPIn: JavaScript based Anomaly Detection of Cross-site scripting attacks
Helmer et al. Anomalous intrusion detection system for hostile Java applets
Hadpawat et al. Analysis of prevention of XSS attacks at client side
Yasmeen et al. The critical analysis of E-Commerce web application vulnerabilities
Sridevi et al. A hybrid framework for secure web applications

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