可以利用哪些常见的 Java 漏洞来获得对系统的某种访问?我最近一直在考虑它,并且还没有能够提出任何东西-整数溢出-也许?竞争条件-它给你什么?
我不是在寻找“在 Web 应用程序中的 sql 注入”之类的东西。我正在寻找类似于缓冲区溢出的关系-c / c ++。
有安全专家能帮忙吗?谢谢。
恶意代码注入。
因为 Java(或任何在运行时使用解释器的语言)在运行时执行链接,所以可以在运行时用恶意的替换预期的 JAR(相当于 DLL 和 SO)。
这是一个漏洞,自 Java 的第一个版本以来,使用各种机制对其进行了攻击。
在类加载器中有一些保护,以确保 java.* 类不能从 rt.jar(运行时 jar)外部加载。
此外,可以设置安全策略,以确保从不同来源加载的类被限制为仅执行一组特定的操作-最明显的例子是小程序。小程序受到 Java 安全策略模型的限制,无法读取或写入文件系统等;签名的小程序可以请求某些权限。
JAR 也可以被签名,并且这些签名可以在加载时在运行时进行验证。
包也可以被密封以确保它们来自相同的代码源。这可以防止攻击者将类放入您的包中,但能够执行“恶意”操作。
如果您想知道为什么所有这些都很重要,请想象一个注入到类路径中的 JDBC 驱动程序,它能够将所有 SQL 语句及其结果传输到远程第三方。
在阅读了大多数回复之后,我认为您的问题已经以间接的方式得到了回答。我只是想直接指出这一点。Java 不会遇到您在 C / C ++ 中看到的相同问题,因为它可以保护开发人员免受这些类型的内存攻击(缓冲区溢出,堆溢出等)。
他们现在发生在一个更高的水平。SQL 注入,XSS,DOS 等。你可以想出一个办法让 Java 远程加载恶意代码,但要做到这一点,意味着你需要利用一些其他的漏洞在服务层远程推送代码到一个目录,然后触发 Java 通过一个类加载器加载。远程攻击在理论上是可能的,但与 Java 它更复杂的利用。而且通常如果你可以利用一些其他的 java 的漏洞,然后你
多年来我在 Java 中看到的唯一具有远程代码潜力的漏洞来自 VM 加载的本机代码。libzip 漏洞,gif 文件解析等。而这只是少数问题。也许每 2-3 年一次。再说一次,漏洞是 JVM 加载的本机代码,而不是 Java 代码。
作为一种语言,Java 非常安全。即使我讨论过的这些理论上可以被攻击的问题在平台上也有钩子来防止它们。签名代码阻碍了大部分工作。但是,很少有 Java 程序运行安装了 Security Manager。主要是因为性能,可用性,但主要是因为这些漏洞充其量在范围上非常有限。Java 中的远程代码加载尚未上升到 90 年代后期 / 2000 年代 C / C ++ 的缓冲区溢出所达到的流行水平。
Java 作为一个平台并不是防弹的,但它比树上的其他水果更难被利用。黑客们投机取巧,追求那些低垂的果实。
我不是一个安全专家,但有一些模块在我们公司,我们不能在 java 代码,因为它是如此容易反编译 java 字节码。我们看着混淆,但如果你想真正的混淆,它只带来了很多问题(性能命中 / 调试信息丢失)。
一个可以窃取我们的逻辑,用修改后的版本,将返回不正确的结果等替换模块...
所以与 C / C ++ 相比,我想这是一个突出的“漏洞”。
我们的 java 模块中也内置了软件许可机制,但这也可以通过反编译和修改代码来轻松破解。
包括第三方类文件并调用它们基本上意味着您正在运行不安全的代码。如果您没有打开安全性,该代码可以做任何事情。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(87条)