File tree Expand file tree Collapse file tree 3 files changed +17
-1
lines changed
src/semmle/code/java/security
test/query-tests/security/CWE-611 Expand file tree Collapse file tree 3 files changed +17
-1
lines changed Original file line number Diff line number Diff line change 1+ lgtm,codescanning
2+ * The query "Resolving XML external entity in user-controlled data" (` java/xxe ` ) has been improved to report fewer false positives when a ` SAXParserFactory ` is configured safely.
3+
4+
Original file line number Diff line number Diff line change @@ -481,6 +481,10 @@ class SAXParserFactoryConfig extends ParserConfig {
481481class SafeSAXParserFactory extends VarAccess {
482482 SafeSAXParserFactory ( ) {
483483 exists ( Variable v | v = this .getVariable ( ) |
484+ exists ( SAXParserFactoryConfig config | config .getQualifier ( ) = v .getAnAccess ( ) |
485+ config .enables ( singleSafeConfig ( ) )
486+ )
487+ or
484488 exists ( SAXParserFactoryConfig config | config .getQualifier ( ) = v .getAnAccess ( ) |
485489 config
486490 .disables ( any ( ConstantStringExpr s |
Original file line number Diff line number Diff line change 22
33import javax .xml .parsers .SAXParser ;
44import javax .xml .parsers .SAXParserFactory ;
5-
5+ import javax . xml . XMLConstants ;
66import org .xml .sax .helpers .DefaultHandler ;
77
88public class SAXParserTests {
@@ -72,4 +72,12 @@ public void misConfiguredParser3(Socket sock) throws Exception {
7272 SAXParser parser = factory .newSAXParser ();
7373 parser .parse (sock .getInputStream (), new DefaultHandler ()); //unsafe
7474 }
75+
76+ public void safeParser2 (Socket sock ) throws Exception {
77+ SAXParserFactory factory = SAXParserFactory .newInstance ();
78+ factory .setFeature (XMLConstants .FEATURE_SECURE_PROCESSING , true );
79+ factory .setFeature ("http://apache.org/xml/features/disallow-doctype-decl" , true );
80+ SAXParser parser = factory .newSAXParser ();
81+ parser .parse (sock .getInputStream (), new DefaultHandler ()); //safe
82+ }
7583}
You can’t perform that action at this time.
0 commit comments