首页 文章

什么是常见的Java漏洞?

提问于
浏览
8

有哪些常见的Java漏洞可以被利用来获得对系统的某种访问?我最近一直在考虑它,并没有能够提出任何东西 - 整数溢出 - 也许?竞争条件 - 它给你带来了什么?

我不是在寻找像“在Web应用程序中注入SQL”之类的东西 . 我正在寻找类似缓冲区溢出的关系 - c / c .

那里的任何安全专家都可以提供帮助吗?谢谢 .

4 回答

  • 5

    恶意代码注入 .

    因为Java(或在运行时使用解释器的任何语言)在运行时执行链接,所以可以在运行时将预期的JAR(相当于DLL和SO)替换为恶意的JAR .

    这是一个漏洞,自Java的第一个版本以来,它使用各种机制进行了对抗 .

    • 类加载器中的位置有保护,以确保无法从rt.jar(运行时jar)外部加载java . *类 .

    • 此外,可以使用安全策略来确保从不同来源加载的类仅限于执行某组操作 - 最明显的例子是applet . Java安全策略模型限制小程序读取或写入文件系统等;签名的applet可以请求某些权限 .

    • JAR也可以进行签名,这些签名可以在加载时在运行时进行验证 .

    • 包也可以密封,以确保它们来自相同的代码源 . 这可以防止攻击者将类放入您的包中,但能够执行'malicious'操作 .

    如果你想知道为什么所有这些都很重要,想象一下注入到类路径中的JDBC驱动程序,它能够将所有SQL语句及其结果传输给远程第三方 . 好吧,我猜你现在得到的照片 .

  • 1

    包括第三方类文件并调用它们基本上意味着您运行的是不安全的代码 . 如果您没有启用安全性,该代码可以执行任何操作 .

  • 1

    我在java中使用'm not a security expert, but there are some modules in our company that we can'代码,因为它很容易解编译java字节码 . 我们研究了混淆,但如果你想要真正的混淆,它只会带来很多问题(性能损失/调试信息丢失) .
    人们可以窃取我们的逻辑,用修改后的版本替换模块,返回错误的结果等...

    因此,与C / C相比,我认为这是一个突出的“漏洞” .

    我们还在我们的java模块中内置了一个软件许可证机制,但是通过反编译和修改代码也很容易被攻击 .

  • 1

    在阅读了大部分回复之后,我认为您的问题已经以间接方式得到了回答 . 我只想直接指出这一点 . Java不会遇到您在C / C中看到的相同问题,因为它可以保护开发人员免受这些类型的内存攻击(缓冲区溢出,堆溢出等) . 那些事情不可能发生 . 因为语言中存在这种基本保护,安全漏洞已经向上移动 .

    他们现在正处于更高的水平 . SQL注入,XSS,DOS等你可以想办法让Java远程加载恶意代码,但这样做意味着你需要利用服务层的其他漏洞将代码远程推送到目录中然后触发Java加载类加载器 . 远程攻击在理论上是可行的,但使用Java时,它的使用起来会更复杂 . 通常,如果你可以利用其他一些漏洞,那么为什么不去追求并将java从循环中删除 . 可以使用从中加载Java代码的世界可写目录 . 但是在这一点上,问题或者你的系统管理员或其他可以利用的服务的供应商真的是Java吗?

    多年来我在Java中看到的唯一带来远程代码潜力的漏洞来自VM加载的本机代码 . libzip漏洞,gif文件解析等等 . 这只是一些问题 . 也许每2 - 3年一次 . 而且,vuln是由JVM加载的本机代码而不是Java代码 .

    作为一种语言,Java非常安全 . 即使我讨论过的这些问题在理论上也可以被攻击,但在平台上有一些钩子可以防止这些问题 . 签名代码阻止了大部分内容 . 但是,安装了安全管理器的Java程序很少 . 主要是因为性能,可用性,但主要是因为这些漏洞的范围非常有限 . Java中的远程代码加载没有上升到90年代末/ 2000年代C / C缓冲区溢出的流行程度 .

    Java作为一个平台不是防弹的,但它比树上的其他水果更难开发 . 而黑客则是机会主义者,并为那些低调的果实而努力 .

相关问题