On Mon, Jun 26, 2017 at 02:41:46PM +0200, Nick Wellnhofer wrote:
> On 22/06/2017 22:29, Daniel Veillard wrote:
> >    No limit on text node and one can be DoS'ed, there is many kind
> > of recursive attacks on XML, and libxml2 uses a combination of "entities
> > density" and text node size to try to catch those, it's complex.
> >    By offloading the choice of the maximum text size to the application
> > developper you then put them in charge of doing the checking, i.e. too
> > big a size and the app can be DoS'ed in practice, it just depends on the
> > computer speed and memory anount. They need to be aware of that.
> 
> Right, this is something I overlooked. xmlParserEntityCheck should not use
> the user-provided max text length. Otherwise, xmlSetMaxTextLength(ctxt,
> SIZE_MAX) would disable one of the checks which wasn't my intention. We
> should keep the hardcoded limit there.
> 
> > The change of the size of the parsing context can bite some apps, that
> > happen in the past when I did this, maybe they have all been corrected,
> > but I would doubt it's gonna be 100% without side effects.
> 
> OK, I could revert this part of the change.
> 
> But thinking more about it, I come to the conclusion that libxml2 shouldn't
> impose a limit on the maximum size of text nodes at all. If there's a
> reliable mechanism to catch abusive entity expansions, the size of a text
> node is bounded by the size of the input document. In fact, processing a
> document containing a single 1 GB text node uses much less resources than a
> document with 1 GB of "<e/>"s. The former should consume just a bit more
> than 1 GB of memory for the text node, the latter will create 250 million
> element nodes, consuming around 30 GB of memory on x86-64.

  I still think that one need to protect users with a default max
text node side. The problem is that libxml2 is very often used on untrusted
data, and if they can push a 30 GB document (not that hard on current networks)
then you're DoS'ed as well.
  Same for max depth of a document (1 GB of "<e>"), etc ...

Daniel

-- 
Daniel Veillard      | Red Hat Developers Tools http://developer.redhat.com/
veill...@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to