一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于JVM沙箱与黑白名单的Java安全防范方法、装置及介质与流程

2021-11-22 13:34:00 来源:中国专利 TAG:

基于jvm沙箱与黑白名单的java安全防范方法、装置及介质
技术领域
1.本技术涉及java安全防范领域,尤其涉及基于jvm沙箱与黑白名单的java安全防范方法、装置及介质。


背景技术:

2.java是目前市场上主流的企业级应用解决方案,也是php等web开发语言转型的趋势和潮流。
3.java应用由jvm虚拟机来运行,jvm自身拥有一套沙箱机制,为运行的java应用提供隔离的环境。但是jvm的沙箱机制是基于白名单实现的,需要针对每个java应用配置相应的白名单,不具有通用性,使用起来灵活性较差。而且由于java语言支持反射机制,允许java应用在执行期借助于反射接口取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。即java应用可以通过反射机制在运行时构造任意一个类的对象,在运行时获取任意一个类所包含的成员变量和方法,在运行时调用任意一个对象的方法和属性,生成动态代理。也就是说反射行为是普遍预先不可知的,只有在java应用使用过程中才能体;因此,对采用反射机制java应用,无法预先编写相应的白名单保证其安全运行。因此对于现有的jvm沙箱安全模式,java应用可以通过反射绕过白名单,导致在jvm沙箱中的java应用的安全性不能得到保障。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供一种基于jvm沙箱与黑白名单的java安全防范方法、装置及介质。
5.第一方面,本技术提供一种基于jvm沙箱与黑白名单的java安全防范方法,包括:
6.在jvm沙箱中自动反复启动java应用以根据每次启动遇到的异常确定第一策略,将第一策略加入策略文件,直至java应用启动成功;
7.根据策略文件配置白名单;
8.通过策略管理接口根据已知存在安全漏洞的路径配置第二策略以形成黑名单,通过黑名单限制存在安全漏洞的路径下的api执行java反射;
9.按照所述白名单和所述黑名单运行java应用、管理java应用所能访问的硬件和网络资源。
10.更进一步地,所述在jvm沙箱中自动反复启动java应用以根据每次启动遇到的异常确定第一策略,将第一策略加入策略文件,直至java应用启动成功包括:
11.启用jvm沙箱,在jvm沙箱启动默认的安全模式;
12.在jvm沙箱中按策略文件启动java应用,java应用遇到异常终止启动,
13.根据java应用遇到的异常获取影响java应用启动的第一策略,并将第一策略加入jvm沙箱的策略文件;
14.判断java应用是否启动成功,否则重新启动java应用,根据异常采集其余第一策
略加入所述策略文件。
15.更进一步地,所述判断java应用是否启动成功包括:
16.若java应用为web应用,判断默认的8080端口是否访问成功,是则java应用启动成功;
17.若java应用为非web应用,根据java应用的进程的存活时间确定java应用启动成功。
18.更进一步地,所述按照所述白名单和所述黑名单运行java应用包括:
19.同时启用所述白名单和所述黑名单控制java应用运行,
20.对于java应用所执行的需判断边界的活动,判断是否在所述白名单中有对应的第一策略,是则允许执行,
21.否则,继续判断活动是否在所述黑名单中有对应的第二策略,是则阻止执行;否则允许执行。
22.更进一步地,为策略配置优先级标记,所述优先级标记包括第一优先级标记和第二优先级标记;
23.当任意一个策略被白名单允许且被黑名单禁止时,判断该策略优先级标记类型,若为第一优先级标记则优先按白名单对该活动进行安全控制,若为第二优先级标记则优先按黑名单对该活动进行安全控制。
24.更进一步地,基于jvm沙箱与黑白名单的java安全防范方法包括按照所述白名单运行java应用:
25.配置启用所述白名单,停用所述黑名单;
26.对于java应用所执行的需判断边界的活动,判断是否在所述白名单中存在对应的第一策略,是则允许,否则禁止。
27.更进一步地,基于jvm沙箱与黑白名单的java安全防范方法包括按照所述黑名单运行java应用:
28.配置启用所述黑名单,停用所述白名单;
29.对于java应用所执行的需判断边界的活动,判断是否在所述黑名单中有对应的第二策略,是则禁止,否则允许。
30.更进一步地,按照所述白名单、所述黑名单或所述白名单和黑名单的组合为java应用提供隔离的硬件和网络资源;将所述白名单和所述黑名单针对不同用户配置,使java应用为不同用户提供定制化服务。
31.第二方面,本技术提供一种基于jvm沙箱与黑白名单实现java安全防范的装置,包括:
32.策略提取模块,所述策略提取模块用于控制java应用在jvm沙箱中反复自动重启,并根据每次启动所遇到的异常获取影响java应用启动的第一策略,将所述第一策略加入策略文件;
33.白名单配置模块,所述白名单配置模块根据所述策略文件配置相应的白名单;
34.黑名单配置模块,所述黑名单配置模块提供策略管理接口,根据已知存在安全漏洞的路径配置第二策略,通过所述黑名单限制存在安全漏洞的路径下的api执行java反射;
35.安全管理模块,所述安全管理模块配置白名单和黑名单的启用与停用;并按照启
用的黑名单或白名单控制java应用运行;
36.资源管理模块,所述资源管理模块按照启用的黑名单或白名单控制java应用所能访问的硬件和网络资源。
37.第三方面,本技术提供一种实现基于jvm沙箱与黑白名单的java安全防范方法的存储介质,所述实现基于jvm沙箱与黑白名单的java安全防范方法的存储介质存储至少一条指令,执行所述指令实现所述的基于jvm沙箱与黑白名单的java安全防范方法。
38.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
39.本技术通过反复在jvm安全沙箱中启动java应用直至java应用启动成功,以遍历获取影响java应用启动的全部异常,确定处理异常的第一策略添加到策略文件,根据策略文件配置白名单,实现白名单的自动定制。
40.本技术利用形成的白名单组合自定义的黑名单来灵活地针对java应用制定安全策略,利用所述黑名单能够有效的限制java应用运行中不安全反射行为的执行,避免java应用利用反射绕过白名单。对java应用进行全面的安全加固、实现java应用硬件和网络资源隔离,保证java应用运行过程的安全。
41.本技术针对不同的用户配置白名单和黑名单,在保证java应用安全运行的同时能够为不同用户提供java应用的定制服务。
附图说明
42.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
44.图1为本技术实施例提供的基于jvm沙箱与黑白名单的java安全防范方法的流程图;
45.图2为本技术实施例提供的在jvm沙箱中自动反复启动java应用以根据每次启动遇到的异常确定第一策略,将第一策略加入策略文件流程图;
46.图3为本技术实施例提供判断java应用是否启动成功的流程图;
47.图4为本技术实施例提供的一种按照所述白名单运行java应用的流程图;
48.图5为本技术实施例提供的另一种按照所述白名单和黑名单运行java应用的流程图;
49.图6为本技术实施例提供的按照所述白名单运行java应用的流程图;
50.图7为本技术实施例提供的按照所述黑名单运行java应用的流程图;
51.图8为本技术实施例提供的实现基于jvm沙箱与黑白名单的java安全防范方法的装置的示意图。
具体实施方式
52.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
54.在运行未知的java应用时,该java应用可能包含恶意代码或者存在重大漏洞,为了防止运行恶意代码或者重大漏洞对系统安全产生影响,需要对java应用所运行的代码进行限制。在现有的jvm默认安全模式可以通过策略文件对java应用的代码进行权限控制,通过策略文件构建java应用运行的边界,java应用可以在边界内做任何事,但不能进行任何跨越边界的举动,限制的活动包括对硬件资源和网络资源的限制、创建新进程的限制和装载新动态连接库的限制。
55.jvm默认安全模式遵循的原则如下:策略未配置的权限表示没有;只能通过策略配置权限,无法禁止策略的权限;从原则可以看出目前jvm安全模式对java应用采用白名单的机制进行安全控制。
56.jvm沙箱包括类装载器、class文件检查器、jvm沙箱内置的安全特性、java api以及安全管理器。通过策略文件对类装载器和安全管理器进行定制使得类装载器和安全管理器防止恶意代码干涉安全代码,守护被信任类库的边界,将代码归入设定的保护域以确认代码可以进行的操作。class文件检查器检查java应用的class文件的结构、class文件中类型数据的语义,验证字节码、验证符号引用。通过jvm沙箱内置的安全特性实现类型安全的引用转换、结构化的内存访问、自动垃圾收集、数组边界的检查、空引用的检查。通过上述手段,jvm沙箱未java应用提供安全的运行环境。
57.然而,java语言支持反射机制,允许java应用在执行期借助于反射接口取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。即java应用可以通过反射机制在运行时构造任意一个类的对象,在运行时获取任意一个类所包含的成员变量和方法,在运行时调用任意一个对象的方法和属性,生成动态代理。也就是说反射行为是普遍预先不可知的,只有在java应用使用过程中才能体;因此,对采用反射机制java应用,无法预先编写相应的白名单保证其安全运行。
58.本身申请针对目前jvm安全模式的弱点进行优化,提供基于jvm沙箱与黑白名单的java安全防范方法、装置及介质。
59.实施例1
60.参阅图1所示,本技术实施例提供一种基于jvm沙箱与黑白名单的java安全防范方法,包括:
61.s100,在jvm沙箱中自动反复启动java应用以根据每次启动遇到的异常确定第一策略,将第一策略加入策略文件,直至java应用启动成功;具体实施过程中,参阅图2所示,具体过程包括:
62.s101,启用jvm沙箱,在jvm沙箱启动默认的安全模式;默认的安全模式策略文件中并未配置参数,内容为空。
63.s102,在jvm沙箱中按策略文件启动java应用;由于初始阶段策略文件中并未提供相关第一策略,即jvm的类装载器和安全管理器未进行配置,因此java应用必然启动失败并抛出相应的异常。而反复启动过程中,策略文件中的第一策略还未齐全,java应用同样会遇到异常而终止启动。根据java应用启动遇到的异常而反馈相应的异常提示。
64.s103,根据java应用遇到的异常获取影响java应用启动的第一策略,并将第一策略加入jvm沙箱的策略文件;具体的,根据遇到的异常提取代码所遇到的权限制约,通过grant指令等手段生成对应的第一策略,所述第一策略给jvm的类装载器和安全管理器进行配置,使得java应用能获取权限克服相应的异常而继续启动。
65.s104,判断java应用是否启动成功,否则循环执行步骤s102和s103继续获取其他的第一策略。
66.具体实施过程中,参阅图3所示,所述判断java应用是否启动成功包括:
67.确定java应用的类型。具体的,为java应用配置类型标记,类型标记包括表示java应用为web应用的第一类型标记和表示java应用为非web应用的第二类型标记。判断java应用的类型标记确定java应用的类型。
68.若java应用为web应用,即java应用的类型标记为第一类型标记,则判断默认的8080端口是否访问成功,是则java应用启动成功。
69.若java应用为非web应用,即java应用的类型标记为第二类型标记,则根据java应用的进程的存活时间确定java应用启动成功,具体的,采集java应用的进程的存活时间,若进程的存活时间非零或者大于设定时长,则判断java应用启动成功。
70.s200,根据策略文件配置白名单。
71.s300,通过策略管理接口根据已知存在安全漏洞的路径配置第二策略以形成黑名单,通过黑名单添加相应的第二策略以限制存在安全漏洞的路径下的api执行java反射;具体的,通过以下策略管理接口java.security.manager配置第二策略形成黑名单,所述第二策略包括限制存在安全漏洞的路径下的api执行java反射的内容。具体实施过程中,所述第二策略还包括禁止java应用实施其他已知风险的活动的内容。
72.s400,按照所述白名单和所述黑名单运行java应用、管理java应用所能访问的硬件和网络资源。
73.具体实施过程中,参阅图4所示,一种可行的所述按照所述白名单和所述黑名单运行java应用包括:
74.s401,同时启用所述白名单和所述黑名单控制java应用运行;
75.s402,对于java应用所执行的需判断边界的活动,判断是否在所述白名单中有对应的第一策略,是则允许执行,否则执行s403;
76.s403,继续判断活动是否在所述黑名单中有对应的第二策略,是则阻止执行;否则允许执行。
77.具体实施过程中,参阅图5所示,另一种可行的方式需要为策略配置优先级标记,所述优先级标记包括第一优先级标记和第二优先级标记;当任意一个策略被白名单允许且被黑名单禁止时,判断该策略优先级标记类型,若为第一优先级标记则优先按白名单对该活动进行安全控制,若为第二优先级标记则优先按黑名单对该活动进行安全控制。另一种可行的所述按照所述白名单和所述黑名单运行java应用具体过程包括:
78.s410,同时启用所述白名单和所述黑名单控制java应用运行;
79.s420,对于java所执行的需要确定边界的活动,判断是否在所述白名单中是否有对应的第一策略且在所述黑名单中有对应的第二策略,是则执行步骤s430,否则执行步骤s402和s403;
80.s430,检查java应用的优先级标记是否为第一优先级标记;是则执行步骤s440,否则执行步骤s450;
81.s440,优先按白名单对该活动进行安全控制;
82.s450,优先按黑名单对该活动进行安全控制。
83.具体实施过程中,所述基于jvm沙箱与黑白名单的java安全防范方法包括按照所述白名单运行java应用,参阅图6所示,具体过程如下:
84.配置启用所述白名单,停用所述黑名单;
85.对于java应用所执行的需判断边界的活动,判断是否在所述白名单中存在对应的第一策略,是则允许,否则禁止。
86.具体实施过程中,所述基于jvm沙箱与黑白名单的java安全防范方法包括按照所述黑名单运行java应用,参阅图7所示,具体过程如下:
87.配置启用所述黑名单,停用所述白名单;
88.对于java应用所执行的需判断边界的活动,判断是否在所述黑名单中有对应的第二策略,是则禁止,否则允许。
89.具体实施过程中,按照所述白名单、所述黑名单或所述白名单和黑名单的组合为java应用提供隔离的硬件和网络资源;在启用所述白名单和所述黑名单时,按照所述白名单和黑名单的组合为java应用提供隔离的硬件和网络资源,在启用所述白名单停用所述黑名单时,按照所述白名单为java应用提供隔离的硬件和网络资源,在启用所述黑名单停用所述白名单时,按照所述黑名单为java应用提供隔离的硬件和网络资源。
90.具体实施过程中,将所述白名单和所述黑名单针对不同用户配置,使java应用为不同用户提供定制化服务。
91.实施例2
92.本技术实施例提供一种基于jvm沙箱与黑白名单实现java安全防范的装置,参阅图8所示,所述基于jvm沙箱与黑白名单实现java安全防范的装置包括:
93.策略提取模块,所述策略提取模块用于控制java应用在jvm沙箱中反复自动重启,并根据每次启动所遇到的异常获取影响java应用启动的第一策略,将所述第一策略加入策略文件;
94.白名单配置模块,所述白名单配置模块根据所述策略文件配置相应的白名单;
95.黑名单配置模块,所述黑名单配置模块提供策略管理接口,管理员根据已知存在安全漏洞的路径配置第二策略以形成黑名单,通过在所述黑名单中设置相应的第二策略限制存在安全漏洞的路径下的api执行java反射;
96.安全管理模块,所述安全管理模块配置白名单和黑名单的启用与停用;并按照启用的黑名单或白名单控制java应用运行;
97.资源管理模块,所述资源管理模块按照启用的黑名单或白名单控制java应用所能访问的硬件和网络资源。
98.用户管理模块,所述用户管理模块管理用户和所述黑名单之间的第一对应关系,所述用户管理模块管理用户和所述白名单之间的第二对应关系。通过第一对应关系和第二对应关系实现针对不同用户配置所述白名单和黑名单,使java应用为不同用户提供定制化的服务。
99.实施例3
100.本技术实施例提供一种实现基于jvm沙箱与黑白名单的java安全防范方法的存储介质,所述实现基于jvm沙箱与黑白名单的java安全防范方法的存储介质存储至少一条指令,执行所述指令实现所述的基于jvm沙箱与黑白名单的java安全防范方法。
101.本技术通过反复在jvm安全沙箱中启动java应用直至java应用启动成功,以遍历获取影响java应用启动的全部异常,确定处理异常的第一策略添加到策略文件,根据策略文件配置白名单,实现白名单的自动定制。
102.本技术利用形成的白名单组合自定义的黑名单来灵活地针对java应用制定安全策略,利用所述黑名单能够有效的限制java应用运行中不安全反射行为的执行,避免java应用利用反射绕过白名单。对java应用进行全面的安全加固、实现java应用硬件和网络资源隔离,保证java应用运行过程的安全。
103.本技术针对不同的用户配置白名单和黑名单,在保证java应用安全运行的同时能够为不同用户提供java应用的定制服务。
104.在本发明所提供的实施例中,涉及到的词语“jvm”表示java虚拟机,java虚拟机是由一组规范所定义的抽象的计算机,所有的java应用都运行子java虚拟机内,具体的,java虚拟机将java应用的字节码装载到其内部,解释编译对对应平台上的机器指令执行。是java应用跨平台的关键。在本发明所提供实施例中,涉及到的词语“api”表示应用程序变成接口,是一些预先定义的接口,目的是提供给应用程序与开发人员访问一组例程的能力,应用程序无需配置例程的源码,开发人员无需知晓例程内部工作机制的细节。java api中其实包含的就是java的基础类库集合,它提供一套访问主机系统资源的标准方法。
105.在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
106.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
107.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
108.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的
一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献