CN104700031B - 防止应用操作中远程代码被执行的方法、装置及系统 - Google Patents
防止应用操作中远程代码被执行的方法、装置及系统 Download PDFInfo
- Publication number
- CN104700031B CN104700031B CN201310659151.3A CN201310659151A CN104700031B CN 104700031 B CN104700031 B CN 104700031B CN 201310659151 A CN201310659151 A CN 201310659151A CN 104700031 B CN104700031 B CN 104700031B
- Authority
- CN
- China
- Prior art keywords
- code
- browser
- interface
- webpage
- calling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/53—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 executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2119—Authenticating web pages, e.g. with suspicious links
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种浏览器防止应用操作中远程代码被执行的方法、装置及系统,其方法包括:响应客户端对应用的操作指令,触发浏览器执行网页代码;在浏览器执行网页代码的过程中,监测网页代码是否有调用查询类相关接口的行为,若有则对行为进行拦截。本发明可以在手机、平板电脑等移动终端的浏览器上防止应用导致远程代码被执行,有效修复远程代码被执行而使得移动终端内容被恶意篡改,删除的漏洞,提高了浏览器上应用操作的安全性,同时不限制浏览器扩展内核能力,不影响和浏览器JavaScript有交互的第三方产品对addJavascriptInterface函数的调用。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种浏览器防止应用操作中远程代码被执行的方法、装置及系统。
背景技术
在安卓WebView组件中存在addJavascriptInterface方法,主要用于将Java类或方法导出以供JavaScript调用。但是,JavaScript在调用导出的Java类时,可以通过反射执行任意Java代码。
另外,手机浏览器为扩展内核能力,一般会通过addJavascriptInterface方法注册Java类,提供给网页,通过JavaScript来调起内核功能。这样就产生了一种漏洞,典型的恶意攻击场景如下:在浏览器中,通过提供web网页,在用户点击网页页面后,浏览器JavaScript通过查找类名及方法名,执行到恶意代码,使得恶意代码程序完全接管手机。
目前,在手机浏览器上,为修复上述漏洞,一般采取建立白名单的方法,在浏览器载入网页页面时对网页URL进行白名单判定,只有存在白名单中的域才允许导出或调用相关的Java类或方法。
但是,手机浏览器为了扩展内核能力,会将一些内核功能通过Js2Java的机制公开给网页,例如开关全屏、开关夜间模式等功能,而对于这样的通用JavaScript接口,浏览器无法定义白名单。
同时,浏览器在每次载入页面时,可能会注入很多外链的JavaScript接口,如果每次使用时都检查一次白名单,则增加了浏览器在打开页面时的负担,降低了网页首屏速度,给用户带来一定负面体验。
发明内容
本发明实施例提供一种浏览器防止应用操作中远程代码被执行的方法、装置及系统,旨在提高浏览器上应用操作安全性。
本发明实施例提出一种浏览器防止应用操作中远程代码被执行的方法,包括:
响应客户端对应用的操作指令,触发浏览器执行网页代码;
在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
本发明实施例还提出一种防止应用操作中远程代码被执行的装置,包括:
响应触发模块,用于响应客户端对应用的操作指令,触发浏览器执行网页代码;
拦截模块,用于在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
本发明实施例还提出一种防止应用操作中远程代码被执行的系统,包括浏览器和客户端,其中:
所述客户端,用于操作应用,触发所述浏览器执行网页代码;
所述浏览器包括如上所述的装置。
本发明实施例提出的一种浏览器防止应用操作中远程代码被执行的方法、装置及系统,在客户端对应用进行操作,触发浏览器执行网页代码时,浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,由此可以在手机、平板电脑等移动终端的浏览器上防止应用导致远程代码被执行,有效修复远程代码被执行而使得移动终端内容被恶意篡改,删除的漏洞,提高了浏览器上应用操作的安全性,同时不限制浏览器扩展内核能力,不影响和浏览器JavaScript有交互的第三方产品对addJavascriptInterface函数的调用。
附图说明
图1是本发明实施例所涉及的移动终端的结构示意图;
图2是本发明浏览器防止应用操作中远程代码被执行的方法较佳实施例的流程示意图;
图3是本发明防止应用操作中远程代码被执行的装置较佳实施例的功能模块示意图;
图4是本发明防止应用操作中远程代码被执行的系统较佳实施例的结构示意图。
为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例方法涉及的硬件运行环境可以为手机、平板电脑等移动终端,该移动终端上安装有各种客户端应用软件并可以承载各种移动终端浏览器。本发明实施例可以实现如下方案:移动终端上的应用在通过浏览器执行网页代码的过程中,浏览器可以监测网页代码是否有调用查询类相关接口的行为,若有则对该行为进行拦截,由此可以在手机、平板电脑等移动终端的浏览器上防止应用导致远程代码被执行,有效修复远程代码被执行而使得移动终端内容被恶意篡改,删除的漏洞。
如图1所示,其示出了本发明实施例所涉及的移动终端的结构示意图,该移动终端可以用于实施以下实施例中提供的防止应用执行远程代码的方法。具体来讲:
移动终端1200可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(Wireless Fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据移动终端1200的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。
可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。
具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及移动终端1200的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。
进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图1中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
移动终端1200还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在移动终端1200移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于移动终端1200还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与移动终端1200之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与移动终端1200的通信。
WiFi属于短距离无线传输技术,移动终端1200通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了WiFi模块170,但是可以理解的是,其并不属于移动终端1200的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是移动终端1200的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行移动终端1200的各种功能和处理数据,从而对移动终端1200进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
移动终端1200还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,移动终端1200还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,移动终端1200的显示单元是触摸屏显示器,移动终端1200还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。
基于上述图1所示的移动终端结构,如图2所示,提出本发明浏览器防止应用操作中远程代码被执行的方法的较佳实施例,本发明较佳实施例提出的一种浏览器防止应用操作中远程代码被执行的方法,包括:
步骤S101,响应客户端对应用的操作指令,触发浏览器执行网页代码;
当用户在移动终端上操作应用(比如加载、点击、关闭微博、游戏等应用)时,浏览器根据用户的操作指令,执行网页代码,比如JavaScript,以进行加载、点击或关闭等相应的网页操作。
步骤S102,在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
本实施例中,所述查询类相关接口包括但不限于查询类函数接口、查询类下的方法的接口。
在浏览器执行网页代码的过程中,会监测网页代码是否有调用查询类相关接口的行为,若有则对该行为进行拦截,以避免执行远程恶意代码,造成恶意代码程序完全接管手机,而使得移动终端内容被恶意篡改、删除等的漏洞。
以Android(安卓)手机为例,如前所述,在Android的WebView组件中存在addJavascriptInterface方法,该addJavascriptInterface方法主要用于将Java类或方法导出以供浏览器的JavaScript调用。但是,JavaScript在调用导出的Java类时,可以通过反射执行任意Java代码。
另外,手机浏览器为扩展内核能力,一般会通过addJavascriptInterface方法注册Java类,提供给网页,再通过JavaScript来调起内核功能。这样就会产生一种漏洞,比如:在浏览器中,浏览器提供应用网页,用户在点击网页页面后,浏览器JavaScript通过调用查询类函数接口查找类名,或者通过调用查询类下的方法的接口查找方法名,执行到恶意代码,使得恶意代码程序完全接管手机。
本实施例在浏览器执行网页代码的过程中,当监测到网页代码有调用查询类相关接口的行为,则对该行为进行拦截,从而可以防止应用操作过程中远程代码被执行,提高浏览器操作应用的安全性。
更为具体地,在具体实现时,针对上述查询类函数接口、查询类下的方法的接口,浏览器在执行网页代码的过程中,拦截网页代码通过查询类及方法名的方式调用远程代码可以有如下几种应用场景:
第一种应用场景(针对查询类函数接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,查询类函数为getClass(),所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。因此,只需要在调用getClass()的地方拦截住对该getClass()函数的调用,在判断到JavaScript有调用getClass()时,直接返回无效信息(null),报告JavaScript执行异常,由此使得恶意代码丧失查询注入类名的能力。
第二种应用场景(针对查询类下的方法的接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
同样以Android手机为例,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询类下的方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回无效信息(null),报告JavaScript执行异常,使得恶意代码丧失查询注入方法名的能力。
第三种应用场景(结合查询类函数接口和查询类下的方法的接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。否则,当监测到网页代码没有调用查询类函数接口的行为时,浏览器则监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,本方案通过以下两步彻底拦截JavaScript通过查询类及方法名的方式调用远程代码。
首先,所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。所以只需要在调用getClass()的地方拦截住对该getClass()方法的调用,在判断到JavaScript有调用getClass()时,直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入类名的能力。
其次,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入方法名的能力。
相比现有技术为修复漏洞Android JavaScript2Java机制中的漏洞,采取建立白名单的方法,浏览器在每次载入页面时,可能会注入很多外链的JavaScript接口,如果每次使用时都检查一次白名单,则增加了浏览器在打开页面时的负担,降低了网页首屏速度,给用户带来一定负面体验;此外对于手机浏览器扩展内核能力的情况下,对于一些通用JavaScript接口,浏览器无法定义白名单。
本实施例通过上述方案,很好地修复Android JavaScript2Java机制中的漏洞,解决因JavaScript通过查询类及方法名调用反射类导致可执行远程代码的安全问题,提高了浏览器上应用操作的安全性,同时不限制手机浏览器扩展内核能力,不影响和JavaScript有交互的第三方产品对addJavascriptInterface函数的调用;此外还避免了通过白名单方式增加浏览器在打开页面时的负担的缺陷。
如图3所示,本发明较佳实施例提出一种防止应用操作中远程代码被执行的装置,包括:响应触发模块201及拦截模块202,其中:
响应触发模块201,用于响应客户端对应用的操作指令,触发浏览器执行网页代码;
拦截模块202,用于在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
其中,查询类相关接口包括查询类函数接口和/或查询类下的方法的接口。
进一步地,所述拦截模块202还用于在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类函数接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
进一步地,所述拦截模块202还用于当监测所述网页代码没有调用查询类函数接口的行为时,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
进一步地,所述拦截模块202还用于在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
具体地,当用户在移动终端上操作应用(比如加载、点击、关闭微博、游戏等应用)时,浏览器的响应触发模块201会根据用户的操作指令,执行网页代码,比如JavaScript,以进行加载、点击或关闭等相应的网页操作。
在浏览器执行网页代码的过程中,拦截模块202会监测网页代码是否有调用查询类相关接口的行为,若有则对该行为进行拦截,以避免执行远程恶意代码,造成恶意代码程序完全接管手机,而使得移动终端内容被恶意篡改、删除等的漏洞。
以Android(安卓)手机为例,如前所述,在Android的WebView组件中存在addJavascriptInterface方法,该addJavascriptInterface方法主要用于将Java类或方法导出以供浏览器的JavaScript调用。但是,JavaScript在调用导出的Java类时,可以通过反射执行任意Java代码。
另外,手机浏览器为扩展内核能力,一般会通过addJavascriptInterface方法注册Java类,提供给网页,再通过JavaScript来调起内核功能。这样就会产生一种漏洞,比如:在浏览器中,浏览器提供应用网页,用户在点击网页页面后,浏览器JavaScript通过调用查询类函数接口查找类名,或者通过调用查询类下的方法的接口查找方法名,执行到恶意代码,使得恶意代码程序完全接管手机。
本实施例在浏览器执行网页代码的过程中,当监测到网页代码有调用查询类相关接口的行为,则对该行为进行拦截,从而可以防止应用操作过程中远程代码被执行,提高浏览器操作应用的安全性。
更为具体地,在具体实现时,针对上述查询类函数接口、查询类下的方法的接口,浏览器在执行网页代码的过程中,拦截网页代码通过查询类及方法名的方式调用远程代码可以有如下几种应用场景:
第一种应用场景(针对查询类函数接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,查询类函数为getClass(),所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。因此,只需要在调用getClass()的地方拦截住对该getClass()函数的调用,在判断到JavaScript有调用getClass()时,直接返回无效信息(null),报告JavaScript执行异常,由此使得恶意代码丧失查询注入类名的能力。
第二种应用场景(针对查询类下的方法的接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
同样以Android手机为例,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询类下的方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回无效信息(null),报告JavaScript执行异常,使得恶意代码丧失查询注入方法名的能力。
第三种应用场景(结合查询类函数接口和查询类下的方法的接口):
浏览器在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。否则,当监测到网页代码没有调用查询类函数接口的行为时,浏览器则监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,本方案通过以下两步彻底拦截JavaScript通过查询类及方法名的方式调用远程代码。
首先,所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。所以只需要在调用getClass()的地方拦截住对该getClass()方法的调用,在判断到JavaScript有调用getClass()时,直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入类名的能力。
其次,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入方法名的能力。
相比现有技术为修复漏洞Android JavaScript2Java机制中的漏洞,采取建立白名单的方法,浏览器在每次载入页面时,可能会注入很多外链的JavaScript接口,如果每次使用时都检查一次白名单,则增加了浏览器在打开页面时的负担,降低了网页首屏速度,给用户带来一定负面体验;此外对于手机浏览器扩展内核能力的情况下,对于一些通用JavaScript接口,浏览器无法定义白名单。
本实施例通过上述方案,很好地修复Android JavaScript2Java机制中的漏洞,解决因JavaScript通过查询类及方法名调用反射类导致可执行远程代码的安全问题,提高了浏览器上应用操作的安全性,同时不限制手机浏览器扩展内核能力,不影响和JavaScript有交互的第三方产品对addJavascriptInterface函数的调用;此外还避免了通过白名单方式增加浏览器在打开页面时的负担的缺陷。
如图4所示,本发明较佳实施例提出一种防止应用操作中远程代码被执行的系统,包括浏览器301和客户端302,其中:
所述客户端302,用于操作应用,触发所述浏览器301执行网页代码;
所述浏览器301用于响应客户端302对应用的操作指令,触发网页代码的执行;在执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
具体地,当用户在移动终端上客户端302界面操作应用(比如加载、点击、关闭微博、游戏等应用)时,浏览器301根据用户的操作指令,执行网页代码,比如JavaScript,以进行加载、点击或关闭等相应的网页操作。
浏览器301在执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截。
本实施例中,所述查询类相关接口包括但不限于查询类函数接口、查询类下的方法的接口。
在浏览器301执行网页代码的过程中,会监测网页代码是否有调用查询类相关接口的行为,若有则对该行为进行拦截,以避免执行远程恶意代码,造成恶意代码程序完全接管手机,而使得移动终端内容被恶意篡改、删除等的漏洞。
以Android(安卓)手机为例,如前所述,在Android的WebView组件中存在addJavascriptInterface方法,该addJavascriptInterface方法主要用于将Java类或方法导出以供浏览器301的JavaScript调用。但是,JavaScript在调用导出的Java类时,可以通过反射执行任意Java代码。
另外,手机浏览器301为扩展内核能力,一般会通过addJavascriptInterface方法注册Java类,提供给网页,再通过JavaScript来调起内核功能。这样就会产生一种漏洞,比如:在浏览器301中,浏览器301提供应用网页,用户在点击网页页面后,浏览器301JavaScript通过调用查询类函数接口查找类名,或者通过调用查询类下的方法的接口查找方法名,执行到恶意代码,使得恶意代码程序完全接管手机。
本实施例在浏览器301执行网页代码的过程中,当监测到网页代码有调用查询类相关接口的行为,则对该行为进行拦截,从而可以防止应用操作过程中远程代码被执行,提高浏览器301操作应用的安全性。
更为具体地,在具体实现时,针对上述查询类函数接口、查询类下的方法的接口,浏览器301在执行网页代码的过程中,拦截网页代码通过查询类及方法名的方式调用远程代码可以有如下几种应用场景:
第一种应用场景(针对查询类函数接口):
浏览器301在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,查询类函数为getClass(),所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。因此,只需要在调用getClass()的地方拦截住对该getClass()函数的调用,在判断到JavaScript有调用getClass()时,直接返回无效信息(null),报告JavaScript执行异常,由此使得恶意代码丧失查询注入类名的能力。
第二种应用场景(针对查询类下的方法的接口):
浏览器301在执行网页代码的过程中,监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
同样以Android手机为例,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询类下的方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回无效信息(null),报告JavaScript执行异常,使得恶意代码丧失查询注入方法名的能力。
第三种应用场景(结合查询类函数接口和查询类下的方法的接口):
浏览器301在执行网页代码的过程中,监测网页代码是否有调用查询类函数接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。否则,当监测到网页代码没有调用查询类函数接口的行为时,浏览器301则监测网页代码是否有调用查询类下的方法的接口的行为,若有,则向网页代码返回调用无效信息,并报告网页代码调用异常。
以Android手机为例,本方案通过以下两步彻底拦截JavaScript通过查询类及方法名的方式调用远程代码。
首先,所有通过addJavascriptInterface方法注册的类名都需要通过getClass()来获取到,而getClass()作为安卓系统提供的方法,无法重载或删除。所以只需要在调用getClass()的地方拦截住对该getClass()方法的调用,在判断到JavaScript有调用getClass()时,直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入类名的能力。
其次,为了防止恶意代码绕过查询类,直接找到类下的方法,例如直接调用static类型的方法,从而执行远程代码,在所有查询方法的地方,也进行有效的拦截。
安卓系统提供forName()来查询类下所有方法,所以在调用forName()的地方也直接返回null,报告JavaScript异常,使得恶意代码丧失查询注入方法名的能力。
相比现有技术为修复漏洞Android JavaScript2Java机制中的漏洞,采取建立白名单的方法,浏览器301在每次载入页面时,可能会注入很多外链的JavaScript接口,如果每次使用时都检查一次白名单,则增加了浏览器301在打开页面时的负担,降低了网页首屏速度,给用户带来一定负面体验;此外对于手机浏览器301扩展内核能力的情况下,对于一些通用JavaScript接口,浏览器301无法定义白名单。
本实施例通过上述方案,很好地修复Android JavaScript2Java机制中的漏洞,解决因JavaScript通过查询类及方法名调用反射类导致可执行远程代码的安全问题,提高了浏览器301上应用操作的安全性,同时不限制手机浏览器301扩展内核能力,不影响和JavaScript有交互的第三方产品对addJavascriptInterface函数的调用;此外还避免了通过白名单方式增加浏览器301在打开页面时的负担的缺陷。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种浏览器防止应用操作中远程代码被执行的方法,其特征在于,包括:
响应客户端对应用的操作指令,触发浏览器执行网页代码;
在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,向所述网页代码返回调用无效信息,所述查询类相关接口包括查询类函数接口和查询类下的方法的接口,所述查询类函数接口包括getClass()函数的接口,所述查询类下的方法的接口包括调用forName()的方法的接口,其中,类下的方法包括static类型的方法。
2.根据权利要求1所述的方法,其特征在于,所述在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,向所述网页代码返回调用无效信息的步骤包括:
在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类函数接口的行为,若有,则
向所述网页代码返回调用无效信息,并报告网页代码调用异常。
3.根据权利要求2所述的方法,其特征在于,所述在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,向所述网页代码返回调用无效信息的步骤进一步还包括:
当监测所述网页代码没有调用查询类函数接口的行为时,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则
向所述网页代码返回调用无效信息,并报告网页代码调用异常。
4.根据权利要求1所述的方法,其特征在于,所述在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,向所述网页代码返回调用无效信息的步骤包括:
在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则
向所述网页代码返回调用无效信息,并报告网页代码调用异常。
5.一种防止应用操作中远程代码被执行的装置,其特征在于,包括:
响应触发模块,用于响应客户端对应用的操作指令,触发浏览器执行网页代码;
拦截模块,用于在所述浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类相关接口的行为,若有则对所述行为进行拦截,向所述网页代码返回调用无效信息,所述查询类相关接口包括查询类函数接口和查询类下的方法的接口,所述查询类函数接口包括getClass()函数的接口,所述查询类下的方法的接口包括调用forName()的方法的接口,其中,类下的方法包括static类型的方法。
6.根据权利要求5所述的装置,其特征在于,
所述拦截模块,还用于在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类函数接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
7.根据权利要求6所述的装置,其特征在于,
所述拦截模块,还用于当监测所述网页代码没有调用查询类函数接口的行为时,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
8.根据权利要求5所述的装置,其特征在于,
所述拦截模块,还用于在浏览器执行网页代码的过程中,监测所述网页代码是否有调用查询类下的方法的接口的行为,若有,则向所述网页代码返回调用无效信息,并报告网页代码调用异常。
9.一种防止应用操作中远程代码被执行的系统,其特征在于,包括浏览器和客户端,其中:
所述客户端,用于操作应用,触发所述浏览器执行网页代码;
所述浏览器包括权利要求5-8中任一项所述的装置。
10.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至4任一项所述的浏览器防止应用操作中远程代码被执行的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310659151.3A CN104700031B (zh) | 2013-12-06 | 2013-12-06 | 防止应用操作中远程代码被执行的方法、装置及系统 |
TW103140678A TW201523321A (zh) | 2013-12-06 | 2014-11-24 | 防止應用程式操作中遠程代碼被執行的方法、裝置及系統 |
PCT/CN2014/092724 WO2015081829A1 (en) | 2013-12-06 | 2014-12-01 | Method, device and system for preventing execution of remote codes of application operation in a browser |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310659151.3A CN104700031B (zh) | 2013-12-06 | 2013-12-06 | 防止应用操作中远程代码被执行的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104700031A CN104700031A (zh) | 2015-06-10 |
CN104700031B true CN104700031B (zh) | 2019-12-13 |
Family
ID=53272881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310659151.3A Active CN104700031B (zh) | 2013-12-06 | 2013-12-06 | 防止应用操作中远程代码被执行的方法、装置及系统 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN104700031B (zh) |
TW (1) | TW201523321A (zh) |
WO (1) | WO2015081829A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798244B (zh) * | 2016-09-07 | 2020-09-04 | 杭州萤石网络有限公司 | 一种检测远程代码执行漏洞的方法及装置 |
CN109885430B (zh) * | 2019-02-20 | 2021-06-29 | 广州视源电子科技股份有限公司 | 系统安全隐患的修复方法、装置、修复系统、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090084529A (ko) * | 2008-02-01 | 2009-08-05 | 주식회사 안철수연구소 | 악성 스크립트 코드 복호화 방법 및 시스템 |
CN101964026A (zh) * | 2009-07-23 | 2011-02-02 | 中联绿盟信息技术(北京)有限公司 | 网页挂马检测方法和系统 |
CN102164138A (zh) * | 2011-04-18 | 2011-08-24 | 奇智软件(北京)有限公司 | 一种保证用户网络安全性的方法及客户端 |
CN102831358A (zh) * | 2012-09-21 | 2012-12-19 | 北京奇虎科技有限公司 | 一种防止网页篡改的方法及装置 |
CN102868690A (zh) * | 2012-09-13 | 2013-01-09 | 北京航空航天大学 | Web服务隔离检测的方法及系统 |
CN103020266A (zh) * | 2012-12-25 | 2013-04-03 | 北京奇虎科技有限公司 | 对网页文本内容进行提取的方法和装置 |
CN103207969A (zh) * | 2013-04-12 | 2013-07-17 | 百度在线网络技术(北京)有限公司 | 检测Android恶意软件的装置以及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9104871B2 (en) * | 2006-04-06 | 2015-08-11 | Juniper Networks, Inc. | Malware detection system and method for mobile platforms |
US8201245B2 (en) * | 2007-12-05 | 2012-06-12 | International Business Machines Corporation | System, method and program product for detecting computer attacks |
-
2013
- 2013-12-06 CN CN201310659151.3A patent/CN104700031B/zh active Active
-
2014
- 2014-11-24 TW TW103140678A patent/TW201523321A/zh unknown
- 2014-12-01 WO PCT/CN2014/092724 patent/WO2015081829A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090084529A (ko) * | 2008-02-01 | 2009-08-05 | 주식회사 안철수연구소 | 악성 스크립트 코드 복호화 방법 및 시스템 |
CN101964026A (zh) * | 2009-07-23 | 2011-02-02 | 中联绿盟信息技术(北京)有限公司 | 网页挂马检测方法和系统 |
CN102164138A (zh) * | 2011-04-18 | 2011-08-24 | 奇智软件(北京)有限公司 | 一种保证用户网络安全性的方法及客户端 |
CN102868690A (zh) * | 2012-09-13 | 2013-01-09 | 北京航空航天大学 | Web服务隔离检测的方法及系统 |
CN102831358A (zh) * | 2012-09-21 | 2012-12-19 | 北京奇虎科技有限公司 | 一种防止网页篡改的方法及装置 |
CN103020266A (zh) * | 2012-12-25 | 2013-04-03 | 北京奇虎科技有限公司 | 对网页文本内容进行提取的方法和装置 |
CN103207969A (zh) * | 2013-04-12 | 2013-07-17 | 百度在线网络技术(北京)有限公司 | 检测Android恶意软件的装置以及方法 |
Non-Patent Citations (1)
Title |
---|
Android WebView的Js对象注入漏洞解决方案;leehong2005;《http://blog.csdn.net/leehong2005/article/details/11808557/》;20130930;第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104700031A (zh) | 2015-06-10 |
TW201523321A (zh) | 2015-06-16 |
WO2015081829A1 (en) | 2015-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9800609B2 (en) | Method, device and system for detecting malware in a mobile terminal | |
TWI606360B (zh) | 一種網頁檢測方法、裝置和系統 | |
CN108932429B (zh) | 应用程序的分析方法、终端及存储介质 | |
US10853437B2 (en) | Method and apparatus for invoking application programming interface | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN107329901B (zh) | 数据包抓取方法、终端、服务器和存储介质 | |
CN104123276B (zh) | 一种浏览器中弹窗的拦截方法、装置和系统 | |
CN110674490B (zh) | 应用权限显示方法、装置及移动终端 | |
US11063962B2 (en) | Malicious URL detection method and apparatus, terminal, and computer storage medium | |
CN114327688B (zh) | 基于微前端的数据处理方法、框架、存储介质及终端设备 | |
CN109088844B (zh) | 信息拦截方法、终端、服务器及系统 | |
WO2015078264A1 (zh) | 安全防护方法及装置、终端 | |
US20150169874A1 (en) | Method, device, and system for identifying script virus | |
CN106713608B (zh) | 应用的功能状态修改方法、装置及终端 | |
CN103177217B (zh) | 一种文件扫描方法、系统及客户端和服务器 | |
CN105279433B (zh) | 一种应用程序的防护方法及装置 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
EP3129883B1 (en) | Method and apparatus for repairing dynamic link library file | |
CN108959062B (zh) | 网页元素获取方法及装置 | |
EP2869233B1 (en) | Method, device and terminal for protecting application program | |
CN111562910B (zh) | 一种封装方法及相关设备 | |
CN104700031B (zh) | 防止应用操作中远程代码被执行的方法、装置及系统 | |
CN115225966B (zh) | 应用启动方法、装置、终端设备和存储介质 | |
US10073957B2 (en) | Method and terminal device for protecting application program | |
CN104717283A (zh) | 文件下载的控制方法、终端及逻辑处理服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221130 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518133 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |