Re: Research about vulnerabilities
Aleksey Sanin <[email protected]> Tue, 29 Oct 2019 15:41:23 -0700
| Newsgroups | gmane.comp.gnome.lib.xml.general |
|---|---|
| Message-ID | <[email protected]> |
People do attack XML parsing (as well as any other input), the encryption on the wire doesn't stop a malicious client from crafting special input and sending it to the server. I did a cursory look at the code and I believe Nick is correct that the function in question is never called with a user-input for the format string. Thus, I don't believe this particular issue is really a vulnerability. LibXML2 was tested by Coverity (last test from 2018 build): https://scan.coverity.com/projects/libxml2 It might make sense to upload a fresh build and see what Coverity finds. Looks like in 2018 it found a few issues (though hard to say how real are those without deeper look). Best, Aleksey On 10/29/19 3:05 PM, Eric Eberhard wrote: > I agree. I also don’t think people attack XML parsing. The > sending/receiving can be done encrypted. This seems a lot like a > theoretical problem, not a real-world problem. > > My feelings are that protecting against all possible attacks is not > possible. Or stupid programming. > > Take the physical world. Maybe you just lock your house. Or maybe you > have an alarm system. Or maybe locked gates. Maybe patrolled by > Dobermans. Maybe patrolled by armed guards with machine guns. > > My point is – people can pick locks. Defeat alarms. Scale gates. Kill > dogs. Kill guards. It can get silly. Maybe one should make an > underground compound with fingerprint and retina scans as well. > > You have to stop it someplace. If this was CIA or FBI or something I’d > go along with the complaint. But most of us use this in a business > setting and we apply *reasonable *security measures, not insanely > overkill measures. > > Eric > > *From:*xml [mailto:[email protected]] *On Behalf Of *Webb Scales > *Sent:* Tuesday, October 29, 2019 7:18 AM > *To:* Raphael de Carvalho Muniz <[email protected]> > *Cc:* [email protected] > *Subject:* Re: [xml] Research about vulnerabilities > > Raphael, > > First, the disclaimers: I'm not an XML maintainer or even a > contributor; and, I've only given this a cursory glance. > > Here are my reactions. > > First, the routine in question is declared to be of module static > scope. I believe that this means that any exploitation of it would have > to be indirect, coming from within LibXML2. > > Second, the code appears to properly protect against buffer overflow, so > the only exploitation that I see is the one that you illustrated, > leaking memory position information. However, the function in question > does nothing that its caller could not do -- it calls malloc() and (in > the example you provided) returns the address of what might be a stack > location (although, really, it could be any random junk, I think). By > definition, the caller already knows the stack location, and the caller > certainly has its own access to malloc(). > > So, I for one, don't see any weakness exposed by the code which you > provided. This doesn't mean that there is no weakness in LibXML2, but, > to find it if it's there, you'll have to interrogate the code which > calls this routine. > > > Webb > > > On 10/29/19 9:30 AM, Raphael de Carvalho Muniz wrote: > > Dear libxml2 owners, > > I am performing research about weaknesses in C open source programs. > As part of my research, I am studying weaknesses that may be > vulnerabilities in the Libxml2 project. > > I found in the commit history of Libxml2 (commit 9acef28) the > presence of the following code snippet in the libxml.c file (Lines > 1,597 - 1,612). I believe that this commit presents a weakness that, > If format strings can be influenced by an attacker, they can be > exploited. This weakness is characterized by CWE Project as CWE-134: > Use of Externally-Controlled Format String. When an attacker can > modify an externally-controlled format string, this can lead to > buffer overflows, denial of service, or data representation problems. > > Moreover, I performed a software testing strategy with respect to > confirm the vulnerability. We provide as input to the char *msg the > value "%xtest" and the function libxml_buildMessage return the > value"fc0c748ex", exposing a memory position. > > This is the GitHub link to the commit: > > https://github.com/GNOME/libxml2/commit/9acef289285008f81b4b66b4880baf600773cf67 > > Code snippet: > > static char * > libxml_buildMessage(const char *msg, va_list ap){ > int chars; > char *str; > > str = (char *) xmlMalloc(1000); > if (str == NULL) > return NULL; > > chars = vsnprintf(str, 999, msg, ap); > if (chars >= 998) > str[999] = 0; > > return str; > } > > > Looking at this code snippet, I am wondering if you could answer the > following brief questions: > We understand that this code has a weakness. Do you agree? > How do you detect weaknesses? Do you use any tool to detect them? > We would be very grateful if you say to us if you agree, and if you > are going to fix it. > > -- > > Raphael de Carvalho Muniz, M.Sc. > > Lattes: http://lattes.cnpq.br/1454914002384966 > e-Mail: [email protected] <mailto:[email protected]> / > [email protected] <mailto:[email protected]> > > Fone: +55 84 98801 1218 > > > > _______________________________________________ > > xml mailing list, project pagehttp://xmlsoft.org/ > > [email protected] <mailto:[email protected]> > > https://mail.gnome.org/mailman/listinfo/xml > > -- > > Webb Scales > Principal Software Architect > 603-673-2306 > www.ursasecure.com <https://www.ursasecure.com> > [email protected] <mailto:[email protected]> > > > _______________________________________________ > xml mailing list, project page http://xmlsoft.org/ > [email protected] > https://mail.gnome.org/mailman/listinfo/xml > _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] https://mail.gnome.org/mailman/listinfo/xml