Github user alopresto commented on the issue:

    https://github.com/apache/nifi/pull/1946
  
    Upon testing this feature, I'm not sure it's necessary. Java SE 5+ has a 
[restriction on entity expansion to 64,000 elements enabled by 
default](https://docs.oracle.com/javase/1.5.0/docs/guide/xml/jaxp/JAXP-Compatibility_150.html#JAXP_security)
 ([more information from Blaise Doughan 
here](http://blog.bdoughan.com/2011/03/preventing-entity-expansion-attacks-in.html)),
 so if I try to ingest the following XXE file, I get an appropriate error 
response:
    
    ```
    <!DOCTYPE foo [ 
    <!ENTITY a "1234567890" > 
    <!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;" > 
    <!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;" > 
    <!ENTITY d "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;" > 
    <!ENTITY e "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;" > 
    <!ENTITY f "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;" > 
    <!ENTITY g "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;" > 
    <!ENTITY h "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;" > 
    <!ENTITY i "&h;&h;&h;&h;&h;&h;&h;&h;&h;&h;" > 
    <!ENTITY j "&i;&i;&i;&i;&i;&i;&i;&i;&i;&i;" > 
    ]> 
    <foo>&j;</foo>
    ```
    
    Error when trying to view flowfile content in "formatted" view (current 
master):
    
    `2017-06-28 15:02:40,226 ERROR [NiFi Web Server-18] 
o.a.nifi.web.ContentViewerController Unable to generate view of data: Unable to 
transform content as XML: net.sf.saxon.trans.XPathException: 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; JAXP00010001: 
The parser has encountered more than "64000" entity expansions in this 
document; this is the limit imposed by the JDK.`
    
    When routed to a `TransformXML` processor, I get an identical stacktrace in 
all three of the following scenarios:
    
    1. Current master
    2. This patch applied with "Secure processing" `false`
    3. This patch applied with "Secure processing" `true`
    
    Stacktrace:
    
    ```
    2017-06-28 15:04:49,456 ERROR [Timer-Driven Process Thread-9] 
o.a.n.processors.standard.TransformXml 
TransformXml[id=efe47d1c-015c-1000-7bae-719994808e8a] Unable to transform 
StandardFlowFileRecord[uuid=9f91546e-f7b4-4113-97fa-6abb1006b8c9,claim=StandardContentClaim
 [resourceClaim=StandardResourceClaim[id=1498687343214-1, container=default, 
section=1], offset=485, length=485],offset=0,name=xxe.xml,size=485] due to 
org.apache.nifi.processor.exception.ProcessException: IOException thrown from 
TransformXml[id=efe47d1c-015c-1000-7bae-719994808e8a]: java.io.IOException: 
net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; lineNumber: 
1; columnNumber: 1; JAXP00010001: The parser has encountered more than "64000" 
entity expansions in this document; this is the limit imposed by the JDK.: {}
    org.apache.nifi.processor.exception.ProcessException: IOException thrown 
from TransformXml[id=efe47d1c-015c-1000-7bae-719994808e8a]: 
java.io.IOException: net.sf.saxon.trans.XPathException: 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; JAXP00010001: 
The parser has encountered more than "64000" entity expansions in this 
document; this is the limit imposed by the JDK.
        at 
org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2806)
        at 
org.apache.nifi.processors.standard.TransformXml.onTrigger(TransformXml.java:234)
        at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
        at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1120)
        at 
org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)
        at 
org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)
        at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.IOException: net.sf.saxon.trans.XPathException: 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; JAXP00010001: 
The parser has encountered more than "64000" entity expansions in this 
document; this is the limit imposed by the JDK.
        at 
org.apache.nifi.processors.standard.TransformXml$2.process(TransformXml.java:261)
        at 
org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2785)
        ... 13 common frames omitted
    Caused by: net.sf.saxon.trans.XPathException: 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; JAXP00010001: 
The parser has encountered more than "64000" entity expansions in this 
document; this is the limit imposed by the JDK.
        at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:460)
        at net.sf.saxon.event.Sender.send(Sender.java:171)
        at net.sf.saxon.Controller.transform(Controller.java:1692)
        at 
net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:547)
        at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:179)
        at 
org.apache.nifi.processors.standard.TransformXml$2.process(TransformXml.java:259)
        ... 14 common frames omitted
    Caused by: org.xml.sax.SAXParseException: JAXP00010001: The parser has 
encountered more than "64000" entity expansions in this document; this is the 
limit imposed by the JDK.
        at 
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at 
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
        at 
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
        at 
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
        at 
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
        at 
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1317)
        at 
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1241)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1902)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3058)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:118)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:504)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
        at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:440)
        ... 19 common frames omitted
    ```
    
    If this protection is enabled by the JRE, and disabling "Secure processing" 
doesn't affect it, what does this feature provide?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to