Java堆栈内省

6

我希望有人能够帮助我解决以下问题:

我对Java堆栈内省(可能有点过于简化)的理解是,进程生成一个堆栈帧,然后将其添加到堆栈中。当进程需要进行系统调用时,堆栈内省算法会检查主体(即试图访问资源的进程)是否被允许使用特定资源,然后相应地注释该帧(授权或禁止访问)。

我的问题是:

  1. 上述是否正确,我有遗漏吗?
  2. JVM如何决定授予或限制访问权限?用户是否参与此决策?
  3. 这项研究中,有一个示例(图2),其中一个框架继承/被告知前一个框架的“信念集”!在此示例中有什么可以防止恶意代码执行(即获得不应访问的资源)?

1
@NiklasB。这可能不是一个问题,我想甚至当时也不是,但我就是看不出它是如何工作的!(即防止执行恶意代码的措施) - mixkat
好的,没问题 :) 这是一个有趣的问题。 - Niklas B.
Java的基本内部堆栈安全机制是doPrivileged - Hot Licks
1个回答

3
“JVM如何决定是否授予或限制访问权限?用户参与这个决策吗?”
它委托给当前安装的SecurityManager。
“上述内容是否正确或者我遗漏了什么?”
SecurityManager可以检查堆栈,或者使用其他标准。运行在浏览器中的小程序相关的SecurityManager会进行内省,因此在至少一个领域中是正确的。
“在这项研究中,有一个例子(图2),其中一个框架继承/被告知前一个框架的“信念集”!什么阻止恶意代码在这个例子中被执行(即获得不应该访问的资源)?”
实际上没有任何阻止。Java安全性很混乱,许多人建议在浏览器中关闭Java,因为现在很少有合法网站使用它。
来自2010年的{{link1:“Sun Java by far the most vulnerable plug-in”}}。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接