Tips publié le vendredi 24 novembre 2006Une faille a été découverte dans le code de traitement des URLs NNTP de ces logiciels à la popularité croissante. Il s'agit d'un problème de débordement de tampon, cas de figure hélas plus que fréquent en C. Un débordement de tampon rend potentiellement possible l'exécution de code malveillant sur la machine hôte. Voici le code incriminé:
if (result)
{
char *resultPtr = result;
while (1)
{
char ch = *commandSpecificData++;
if (!ch)
break;
if (ch == '\\')
{
char scratchBuf[3];
scratchBuf[0] = (char) *commandSpecificData++;
scratchBuf[1] = (char) *commandSpecificData++;
scratchBuf[2] = '\0';
int accum = 0;
PR_sscanf(scratchBuf, "%X", &accum);
*resultPtr++ = (char) accum;
}
else
*resultPtr++ = ch;
}
*resultPtr = '\0';
}
return result;
}
Si commandSpecificData pointe sur une chaîne se terminant par "\\", le zéro de fin de chaîne ne sera pas testé dans le bloc if (ch = '\\) et commandSpecificData sera incrémenté de façon imprévisible, provoquant ainsi la corruption du tampon result. Pour en savoir plus et notamment voir un morceau de code Javascript exploitant cette faille, allez à https://bugzilla.mozilla.org/show_bug.cgi?id=264388.
Pour vous protéger de ce problème mettez à jour pour Thunderbird 1.0 et Mozilla 1.7.5