(OWASP汉化)攻击系列大全(四十五):移动代码:对象劫持

最新版本(mm/dd/yy): 04/23/2009
翻译至Obect hijack

概述

这个攻击(对象劫持:Obect hijack)由一种技术组成–通过利用基于Java的clone()方法来创建没有构造函数方法的对象。

如果某个类实现了声明为public的cloneable()方法,但没有公共构造方法或声明为final,则可以将其扩展为新类并使用clone()方法创建对象。

clonable()方法保证clone()方法正常工作。克隆对象具有原始对象的相同属性(变量值),但对象是独立的。

风险因素

待定(TBD)

实例

在这个例子中,公共类“BankAccount”实现了声明“Object clone(string accountnumber)”的clonable()方法:

public class BankAccount implements Cloneable{
public Object clone(String accountnumber) throws
CloneNotSupportedException
     {
      Object returnMe = new BankAccount(account number);
      …
     }
}

攻击者可以实现扩展父级BankAccount类的恶意公共类,如下所示:

public class MaliciousBankAccount extends BankAccount implements
                                                      Cloneable{
public Object clone(String accountnumber) throws CloneNotSupportedException 
              {
               Object returnMe = super.clone();
               …
              }
}

来自某个应用程序的Java小程序被攻击者获取并破坏。然后,他让受害者接受并运行准备好操纵对象状态和行为的木马或恶意代码。该代码被实例化,并使用受害者机器上的默认JVM连续执行。当受害者使用相同的JVM从原始应用程序调用Java小程序时,攻击者会克隆该类,然后操纵属性值,然后将原始对象替换为恶意程序。

相关的威胁代理

待定(TBD)

相关攻击

相关漏洞

相关控件

参考文献