|
Hi,
A heap overflow exists in libxslt when processing a crypto-related
built-in function.
Full technical details:
http://scary.beasts.org/security/CESA-2008-003.html
The faulty code can be summarized:
static void
exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
...
key = xmlXPathPopString (ctxt);
key_len = xmlUTF8Strlen (str);
...
padkey = xmlMallocAtomic (RC4_KEY_LENGTH);
key_size = xmlUTF8Strsize (key, key_len);
memcpy (padkey, key, key_size);
memset (padkey + key_size, '\0', sizeof (padkey));
...
A statically-sized heap buffer is populated with an arbitrary-length
string from an incoming XSL function argument.
And the malicious XSL to trigger this: