(OWASP汉化)攻击系列大全(四十四):移动代码–非final的公共领域

最新版本(mm/dd/yy): 04/23/2009
翻译至non-final public field

概述

此攻击(非final的公共领域:non-final public field)旨在通过在其中注入恶意值来操纵移动代码中使用的非最终公共变量,主要是在Java和C ++应用程序中。

当移动代码中使用的公共成员变量或类未声明为final时,可以通过任何有权访问它的函数来恶意操纵其值,以便扩展应用程序代码或获取有关应用程序的关键信息。

风险因素

待定(TBD)

实例

来自某个应用程序的Java小程序(java applet)被攻击者获取并破坏。然后,他让受害者接受并运行准备好用来处理非最终对象状态和行为的木马或恶意代码。该代码被实例化,并使用受害者机器上的默认JVM连续执行。当受害者使用相同的JVM从原始应用程序调用Java小程序时,恶意进程可能会与原始小程序混合,因此它会修改非最终对象的值并在受害者凭证下执行。

在以下示例中,类“any_class”被声明为final,然而“server_addr”变量不是:

public final class any_class extends class_Applet {
public URL server_addr;
…
}

在这种情况下,“server_addr”变量的值可以由任何有权访问的其他函数设置,从而改变应用程序的行为。声明这个变量的正确方法是:

public class any_class extends class_Applet {
public final URL server_addr;
…
}

当一个变量声明为final时,它的值不能被修改。

相关的威胁代理

待定(TBD)

相关攻击

相关漏洞

相关控件

参考文献