描述
产品违反Enterprise javabean (EJB)规范使用类加载器。
扩展描述
Enterprise JavaBeans规范要求每一个bean提供者遵循一组编程指南,旨在确保bean将便携式和行为始终在任何EJB容器。在这种情况下,EJB产品违反下列指南:“企业bean不得试图创建一个类装入器;获得当前类装入器;设置上下文类加载器;设置安全管理器;创建一个新的安全经理;停止JVM;或改变的输入、输出和错误流。”The specification justifies this requirement in the following way: "These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment."
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围
影响
可能性
保密 完整性 可用性 其他
技术的影响: 执行未经授权的代码或命令;不同的上下文
示范例子
示例1
以下Java示例是一个简单的无状态的企业JavaBean,检索点的数量的利率抵押贷款。不同的利率从本地文件系统上的XML文档检索,和EJB使用EJB类的类加载器获取XML文档作为输入流从本地文件系统。
@Stateless
公共类InterestRateBean实现InterestRateRemote {
私人文档interestRateXMLDocument =零;
公共InterestRateBean () {
尝试{
/ /从本地文件系统获取XML文档作为输入流
/ /使用这个类的类加载器
类加载器加载程序= this.getClass () .getClassLoader (); InputStream的= loader.getResourceAsStream (Constants.INTEREST_RATE_FILE);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
DocumentBuilder db = dbf.newDocumentBuilder (); interestRateXMLDocument = db.parse (interestRateFile);
}捕捉(IOException特异){…}
}
公共BigDecimal getInterestRate(整数点){
返回getInterestRateFromXML(点);
}
/ *成员函数来检索XML文档利率从本地文件系统* /
私人BigDecimal getInterestRateFromXML(整数点){…}
}
这使用Java类装入器的类企业内任何类型的JavaBean违反EJB规范的限制与获取当前的类装入器,因为这可能妥协的安全使用的EJB应用程序。
示例2
EJB也限制创建一个自定义类加载器和创建一个类,类装入器的类的实例,如以下示例所示。
@Stateless
公共类LoaderSessionBean实现LoaderSessionRemote {
公共LoaderSessionBean () {
尝试{
类加载器加载程序= new CustomClassLoader (); 类c = loader.loadClass (“someClass”); 对象obj = c.newInstance (); / *执行一些任务,使用新的类实例成员变量或函数* / …
}捕捉(例外的前女友){…}
}
公开课CustomClassLoader扩展类加载器{
}
}
潜在的缓解措施
阶段:体系结构和设计;实现
不使用类加载器在编写ejb。
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
分类法映射
映射分类名称
节点ID
适合
映射节点名
软件故障模式
SFP3
使用不当的API