无需开发者干预的安全方法是更符合实际的选择。。

如何解决 Java 安全问题?

如何解决Java安全问题,目前的对策非常笨拙,往往适得其反。幸运的是,有一种新的方法可以将安全机制嵌入到 Java 执行平台中——或者更具体地说,将其嵌入到 Java 虚拟机中,从而绕过一些“大”。

确保 Java 应用程序的安全性是一项艰巨的任务。在当前的软件开发领域,Java 程序员经常从第三方库中导入数千行代码。导入的代码通常用于执行常见任务,例如数据库访问、XML 处理、日志记录等。但如果代码是开源的,则没有人能够保证其安全性或对其进行严格的渗透测试。因此,漏洞可以通过“导入代码”后门入侵内部系统。因此,公司对这些漏洞一无所知,但攻击者却很了解它们。

当程序中出现有缺陷的代码时,攻击者可能会在后端使用SQL注入等方法攻击服务器或访问数据。当然,开发人员培训和静态软件分析工具都可以减少这种危险,但在应用进入生产环境后,它们无法处理漏洞。因此,一种不需要开发人员干预的安全方法是更现实的选择。

第三方库造成的漏洞通常是2014年初的事件。简单地说如何堵塞管理漏洞,加密库中发现的一个安全漏洞影响了互联网上三分之二的Web服务器。虽然这个漏洞与JAVA无关,但仍然值得我们警惕。

传统的 Java 防御

Java 应用程序的安全性通常基于网络或测试,但这两种方法都不可靠。

首先是基于网络的防御措施包括Web应用防火墙和运行时入侵防御系统,可以保护生产系统免受外部威胁。为避免阻止合法流量,必须对这些系统进行微调以降低其有效性。否则,你必须投入大量精力进行调整,以便只允许合法交通通过。毕竟,如果授权流量被阻止,真实用户也可能被拒之门外。不得不说,当网络级的防御机制(如IP防火墙)阻塞流量时如何堵塞管理漏洞,终止网络连接的方法是非常笨拙的。

二是应用测试工具会分析软件是否存在漏洞。分析结果可能会让开发者感到惊讶,或者数量可能非常大,难以区分哪些是关键问题、哪些是次要问题、哪些是误报。此外,如果漏洞被偶然成功入侵,这些工具将无法在系统运行时保护系统。

新方法:JVM 与 RASP

目前,运行应用程序自我保护 RASP 是一种保护 Java 应用程序的新方法,它结合了应用程序行为(应用程序现在在做什么)和实时上下文,以便在应用程序运行时进行实时分析。因此,持续的安全分析成为运行环境中的一项原生功能,系统在识别出攻击后可以立即做出响应。由于安全功能作用于程序内部,对应用行为具有命令感知能力,因此RASP避免了其他防御方法常见的误报。

相信实现RASP最好的方式就是充分利用Java虚拟机。JVM 是介于服务器操作系统和应用程序之间的完整运行环境,它可以在不修改应用程序代码的情况下实时调整应用程序在运行时的行为。其次,由于 JVM 还控制 Java 应用程序的所有 I/O,因此可以阻止未经授权的操作。最重要的是,它可以通过应用现有的错误处理程序来有效地阻止任何侵入性代码的执行。

RASP 基于几乎所有主流 JVM。它添加了一个安全规则引擎来保护 Java 代码,而无需修改应用程序代码。规则引擎支持细粒度监控,同时还控制所有应用行为,包括文件和网络访问、类加载、反射、方法调用、SQL查询、脚本函数等,可以自动缓解攻击。

监督用户输入

在JVM中嵌入应用安全也意味着可以在程序执行过程中跟踪用户输入——即“变量污点跟踪”功能可以防止数据访问(如SQL查询)或不可信的用户输入导致的未经验证的数据敏感操作(反射)。污染跟踪防止恶意输入从不受信任的来源传输到受信任的来源(例如,从 HTTP 查询字符串到 SQL 数据库),以实现对代码注入攻击(例如 SQL 注入)的安全防御。

由于带有 RASP 的 JVM 可以完全阻止恶意代码的执行,无论是来自应用程序内部、第三方库还是网络,克服零日漏洞都不是问题。此外,在不重启或中断服务的情况下,安全管理员可以为正在运行的应用程序添加新规则。无需安全供应商的补丁即可立即阻止新发现的漏洞。

RASP 示例

2 是用于开发 Java Web 应用程序的开源 Web 应用程序框架。在过去的几年里,我们在框架中发现了许多严重的漏洞。攻击者可以利用这些漏洞远程攻击未受保护的服务器。

为了修复这些漏洞,用户要么等待官方补丁(可能几周或几个月),然后测试和部署补丁,要么重写代码,然后重新测试和部署应用程序。

但是,一旦有,只需要应用一个安全规则,无需重新启动或中断应用程序,并防止在运行时执行侵入性代码。

众所周知,安全解决方案中不可避免地会出现误报,尤其是对于关键任务应用程序。RASP 可以将此类风险降至最低。通过监控操作环境中的应用程序执行,可以更详细地监控应用程序行为和上下文。这种方法比网络层检测更复杂;因此,实际部署前的性能调优和应用行为建模也更加简单。

最后,虽然没有安全流程可以完全摆脱处理开销,但是在JVM中嵌入安全操作,然后通过JIT(Just-In-Time)编译器进行优化,可以保证对性能的影响最小化。与远程调用(如REST API调用)应用程序外部服务或“工具代理”在应用程序中插入调试代码的安全方式相比,本地“in-JVM”安全机制的性能优势明显。

RASP的“由内而外”的保护方法有很多优点。在 JVM 中嵌入安全方法可以确保关键公司代码的可用性,同时最大限度地减少对性能的影响。这种方法还可以保护多个应用程序,无需修改软件,比添加补丁更快、更灵活。

本文由工程师整理整理。如今,多样化的攻击方式层出不穷,传统的安全解决方案越来越难以应对网络安全攻击。自我保护技术的实时应用可以为软件产品提供准确的实时保护,防止其出现漏洞。要阅读更多技术文章,请访问官方技术博客。