Un « & » mal placé à l'origine d'une faille critique dans Internet Explorer
La faille de sécurité affectant Internet Explorer et pour laquelle Microsoft vient de publier un patch est due à une esperluette mal placée.
Le 28 juillet dernier, Microsoft sortait de son cycle habituel de publication de correctifs pour mettre à disposition en urgence deux mises à jour, dont une pour Internet Explorer.
Cette faille, jugée critique par l'éditeur lui même, venait d'une simple erreur typographique dans le code, apprend-on d'un responsable sécurité de Microsoft. Une simple esperluette (&) mal placée permettait aux pirates de prendre le contrôle des machines sur les différentes versions du navigateur, d'IE5 à IE8.
« Le caractère "&" supplémentaire dans le code vulnérable permettait d'écrire des données fausses, non vérifiées », explique Michael Howard sur l'un des blogs officiels de MSDN. Cette brèche permettait à des pirates de s'attaquer au contrôle vidéo Active X du navigateur dans le but d'installer sur les PC tournant avec Windows 2000, Vista et XP des logiciels malveillants du type spywares.
Le code à l'origine de la faille
Michael Howard a publié sur son blog le code à l'origine de la faille :
__int64 cbSize;
hr = pStream->Read((void*) &cbSize, sizeof(cbSize), NULL);
BYTE *pbArray;
HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast(&pbArray));
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);
Il aurait fallu écrire :
hr = pStream->Read((void*)pbArray, (ULONG)cbSize, NULL);(sans &)
(Source 01 Net)