【问题标题】:What are common Java desktop app exploits?常见的 Java 桌面应用程序漏洞有哪些?
【发布时间】:2011-03-23 01:55:13
【问题描述】:

我了解常见的 Web 漏洞,例如 SQL 注入、脚本注入、窃取 cookie 等。但是,我对桌面 Java 应用程序的安全问题了解不多。有哪些好的资源可以帮助您了解更多信息?

具体来说,我说的是在 PC 或 Mac 桌面上运行的 Java 应用程序(不是小程序或服务器)。

我可以想象 Java 应用程序的一些问题是更改注册表设置、安装 rootkit、击键记录、弄乱文件系统等。除了最后一个,我不知道该怎么做或者如果它甚至可能的话,所以我不知道它是多么容易实施,因此有潜在的危险。此外,如果我了解它是如何完成的,我就能理解如果有什么东西可以防止它发生的话。

我觉得文件系统可能会造成很多损害,包括删除文件、窃取数据、更改存储设置文件的程序的设置等。我听说 Java 有沙盒模式,但我没有确定在沙盒模式下运行程序是如何工作的,或者程序如何知道它处于沙盒模式。

有哪些很好的学习资源?

【问题讨论】:

  • 也许,你可以开始了解Java的SecurityManager:javaworld.com/javaworld/jw-11-1997/jw-11-hood.html
  • Java 的安全准则:oracle.com/technetwork/java/seccodeguide-139067.htmlThe Java platform has its own unique set of security challenges. One of its main design considerations is to provide a secure environment for executing mobile code. While the Java security architecture can protect users and systems from hostile programs downloaded over a network, it cannot defend against implementation bugs that occur in trusted code. Such bugs can inadvertently open the very holes that the security architecture was designed to contain...
  • 在这篇文章中,它说:infoq.com/news/2010/10/java-exploit-uptick ...In particular, three long-known issues with the Oracle JVM around Calendar deserialization, long file URLs, and RMI connections represent an outsized portion of attacks. ...和Java developers often assume that their applications are immune to security holes because of the sandbox that the JVM supplies. But under the bytecode, the JVM implementation itself still has direct access to memory and is implemented in an un-sandboxed language like C.

标签: java security


【解决方案1】:

Java 不受 C 程序员可能面临的许多问题的影响(缓冲区溢出就是一个很好的例子)。首先,如果要在 jar 中移动代码,请确保混淆代码,因为 java 反编译很容易完成。

此外,请确保您编写的代码不能将您的应用程序(可能作为 jar 分发)作为库编译类。这会引发很多问题,例如键盘记录程序等。

接下来,这听起来可能很愚蠢,但是,它已经发生在过去,如果您要保存登录信息,请确保它不能被您的应用程序以外的任何人读取!

如果您使用应用程序连接到服务器,请通过加密数据来防范数据包嗅探器。

编辑:我完全同意开源的想法。如果可以,请开源您的代码。它会为您省去很多麻烦。

【讨论】:

  • 反其道而行之:将您的源代码作为开源发布。封闭代码就是死亡代码。编写可重用的代码。它使用得越频繁,就越容易发现错误。启用并鼓励重复使用。
【解决方案2】:

这是一个攻击面问题。您必须问自己:攻击者如何影响此应用程序?在 Web 应用程序中,它明确的 GET 和 POST 变量。在不使用网络的桌面应用程序中,可能存在攻击面。如果桌面应用程序以提升的权限运行并且具有较低权限的攻击者可以影响此应用程序以获得其权限,则该桌面应用程序可能对攻击者有用。

用 Java 编写的用于删除文件的恶意应用程序不是漏洞。它只是无趣的恶意软件。 Here 是一大堆漏洞利用列表。

说实话,您为学校编写的大多数应用程序都没有安全概念。您正在编写一个链表实现或一些简单的 CLI 应用程序。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 2010-09-27
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多