You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "Peter Bacsko (JIRA)" <ji...@apache.org> on 2016/06/15 16:29:09 UTC
[jira] [Comment Edited] (OOZIE-2362) SQL injection in
BulkJPAExecutor
[ https://issues.apache.org/jira/browse/OOZIE-2362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15331966#comment-15331966 ]
Peter Bacsko edited comment on OOZIE-2362 at 6/15/16 4:28 PM:
--------------------------------------------------------------
Examples:
{code}
*** Action query: SELECT a.id, a.actionNumber, a.errorCode, a.errorMessage, a.externalId, a.externalStatus, a.statusStr, a.createdTimestamp, a.nominalTimestamp, a.missingDependencies, c.id, c.appName, c.statusStr FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId = :bundleId AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN ('FAILED','KILLED') ORDER BY a.jobId, a.createdTimestamp
*** Count query: SELECT COUNT(a) FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId IN ('0000000-160615161217850-oozie-pbac-B') AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN ('FAILED','KILLED')
{code}
vs
{code}
*** Action query: SELECT a.id, a.actionNumber, a.errorCode, a.errorMessage, a.externalId, a.externalStatus, a.statusStr, a.createdTimestamp, a.nominalTimestamp, a.missingDependencies, c.id, c.appName, c.statusStr FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId = :bundleId AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN (:status0, :status1) ORDER BY a.jobId, a.createdTimestamp
*** count query: SELECT COUNT(a) FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId IN (:count0) AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN (:status0, :status1)
Param set - count0: 0000000-160615160302963-oozie-pbac-B
Param set - status0: FAILED
Param set - status1: KILLED
{code}
was (Author: pbacsko):
Examples:
{code}
*** Action query: SELECT a.id, a.actionNumber, a.errorCode, a.errorMessage, a.externalId, a.externalStatus, a.statusStr, a.createdTimestamp, a.nominalTimestamp, a.missingDependencies, c.id, c.appName, c.statusStr FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId = :bundleId AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN ('FAILED','KILLED') ORDER BY a.jobId, a.createdTimestamp
*** Count query: SELECT COUNT(a) FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId IN ('0000000-160615161217850-oozie-pbac-B') AND a.nominalTimestamp <= :endNominal AND a.nominalTimestamp >= :startNominal AND a.createdTimestamp <= :endCreated AND a.createdTimestamp >= :startCreated AND a.statusStr IN ('FAILED','KILLED')
{code}
vs
{code}
*** Action query: SELECT a.id, a.actionNumber, a.errorCode, a.errorMessage, a.externalId, a.externalStatus, a.statusStr, a.createdTimestamp, a.nominalTimestamp, a.missingDependencies, c.id, c.appName, c.statusStr FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId = :bundleId AND c.appName IN (:param0, :param1) AND a.statusStr IN (:status0) ORDER BY a.jobId, a.createdTimestamp
*** count query: SELECT COUNT(a) FROM CoordinatorActionBean a, CoordinatorJobBean c WHERE a.jobId = c.id AND c.bundleId IN (:count0) AND c.appName IN (:param0, :param1) AND a.statusStr IN (:status0)
Param set - count0: 0000000-160615160306739-oozie-pbac-B
Param set - status0: KILLED
Param set - param0: Coord1
Param set - param1: Coord2
{code}
> SQL injection in BulkJPAExecutor
> --------------------------------
>
> Key: OOZIE-2362
> URL: https://issues.apache.org/jira/browse/OOZIE-2362
> Project: Oozie
> Issue Type: Bug
> Components: core, security
> Affects Versions: 4.2.0
> Reporter: thierry accart
> Assignee: Peter Bacsko
> Priority: Critical
> Labels: patch
> Fix For: trunk
>
> Attachments: 0001-OOZIE-2362-SQL-injection-in-BulkJPAExecutor.patch, OOZIE-2362-001.patch
>
>
> In method inClause of org.apache.oozie.executor.jpa.BulkJPAExecutor there is a poosibility for SQL injection (https://www.owasp.org/index.php/SQL_injection) : there is no validation of content of string name before it's included in sql script, opening a possibility for a malicious user to inject sql commands.
> A simple validation of strings using .matches(...) would fix problem.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)