Skip to content

Commit 5e910a4

Browse files
authored
Merge pull request github#1724 from aschackmull/java/google-xmlreader
Java: Treat SecureJDKXercesXMLReader as a secure XMLReader.
2 parents 36043d0 + 41763e6 commit 5e910a4

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

java/ql/src/Security/CWE/CWE-611/XmlParsers.qll

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -725,21 +725,27 @@ private class CreatedSafeXMLReaderFlowConfig extends DataFlow3::Configuration {
725725
}
726726

727727
/** An `XMLReader` that is obtained from a safe source. */
728-
class CreatedSafeXMLReader extends MethodAccess {
728+
class CreatedSafeXMLReader extends Call {
729729
CreatedSafeXMLReader() {
730730
//Obtained from SAXParser
731731
exists(SafeSAXParserFlowConfig safeParser |
732-
this.getMethod().getDeclaringType() instanceof SAXParser and
733-
this.getMethod().hasName("getXMLReader") and
732+
this.(MethodAccess).getMethod().getDeclaringType() instanceof SAXParser and
733+
this.(MethodAccess).getMethod().hasName("getXMLReader") and
734734
safeParser.hasFlowToExpr(this.getQualifier())
735735
)
736736
or
737737
//Obtained from SAXReader
738738
exists(SafeSAXReaderFlowConfig safeReader |
739-
this.getMethod().getDeclaringType() instanceof SAXReader and
740-
this.getMethod().hasName("getXMLReader") and
739+
this.(MethodAccess).getMethod().getDeclaringType() instanceof SAXReader and
740+
this.(MethodAccess).getMethod().hasName("getXMLReader") and
741741
safeReader.hasFlowToExpr(this.getQualifier())
742742
)
743+
or
744+
exists(RefType secureReader, string package |
745+
this.(ClassInstanceExpr).getConstructedType() = secureReader and
746+
secureReader.hasQualifiedName(package, "SecureJDKXercesXMLReader") and
747+
package.matches("com.google.%common.xml.parsing")
748+
)
743749
}
744750

745751
predicate flowsTo(SafeXMLReaderFlowSink sink) {

0 commit comments

Comments
 (0)