安全研究

安全漏洞
JBoss Seam order参数远程SQL注入漏洞

发布日期:2007-11-01
更新日期:2007-12-14

受影响系统:
JBoss Group JBoss Seam 2.0 CR3
JBoss Group JBoss Seam 2.0 CR2
JBoss Group JBoss Seam 2.0 CR1
不受影响系统:
JBoss Group JBoss Seam 2.0 GA
描述:
BUGTRAQ  ID: 26850

JBoss Seam是一个Java EE5框架,把JSF与EJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。

JBoss Seam在处理用户请求数据时存在输入验证漏洞,远程攻击者可能利用此漏洞执行SQL注入攻击。

JBoss Seam的org.jboss.seam.framework.Query类中没有正确地验证传送给getRenderedEjbql()方式的order参数便将其用于创建EJBQL查询:

if ( getOrder()!=null ) builder.append(" order by ").append( getOrder() );
return builder.toString();

这可能允许通过SQL注入攻击控制EJBQL查询,从而在数据库中执行任意代码。

<*来源:Antoni Jakubiak
  
  链接:http://jira.jboss.com/jira/browse/JBSEAM-2084
        http://secunia.com/advisories/28077/
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

@Name("blaList")
public class BlaList extends EntityQuery {
[...]
private static final String[] ORDERS = {"name asc","name desc","id asc","id desc"};

@Override
public void setOrder(String order) {
  if (Arrays.asList(ORDERS).contains(order)) {
    super.setOrder(order);
  }
}

厂商补丁:

JBoss Group
-----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://downloads.sourceforge.net/jboss/jboss-seam-2.0.0.GA.tar.gz?modtime=1193930784&big_mirror=1

浏览次数:2812
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障