【问题标题】:How can Heap Pollution cause a security flaw [closed]堆污染如何导致安全漏洞[关闭]
【发布时间】:2016-04-16 16:24:30
【问题描述】:

我在 Java 的 CERT 安全编码标准中遇到了这条规则。 Heap Pollution。我知道这会导致程序在运行时抛出异常,但我不明白这会如何导致像 dos 之类的安全问题。有人能解释一下攻击者可以利用堆污染的场景吗?

【问题讨论】:

    标签: java security heap-pollution


    【解决方案1】:

    攻击者需要能够创建任意对象。例如,如果您公开 Java 序列化,这是可能的。您可以从 Java 序列化构造对象,该对象在泛型术语中是无效的,因此可能导致异常发生。

    但是,还有更严重的问题需要担心,例如反序列化对象可能会以非预期的方式执行代码。不幸的是,一些通用库允许这样做。例如http://www.darkreading.com/informationweek-home/why-the-java-deserialization-bug-is-a-big-deal/d/d-id/1323237

    【讨论】:

      【解决方案2】:

      理论上参数化类型可以被来自不受信任来源的受信任代码接受(可以通过序列化,但也可以是不受信任的代码)。理论上,间接传递的值在使用通用超类型(值得注意的toString(可能有意外的转义字符或可能更改值)和equals(可能是谎言或恶意实现可能会更改参数对象)上的方法调用时可能表现不同) .

      实际上这不会发生。 Java 库参数化类型本身通常是不可信的。不可信对象的可信参数化类型并不常见,并且在使用它们的地方通常会隐式检查强制转换,即使使用来自 Object 的方法也是如此。

      【讨论】:

        猜你喜欢
        • 2015-08-01
        • 2021-06-30
        • 2018-03-16
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        相关资源
        最近更新 更多