![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMH-5l2_hH3CZqjvvKX86zXzamQtMACCv87mJMpl8uBLrAh5dTtulRPpkyiZj0VC9QdT0WwK9UvsuSiwI0p9XJ4lnxglaF-BhTeGQm13ZDBLBCkOFdqo8tTlVEIo21_HymP2cm3MHyyBg/s320/f7fcc_ie-bug.jpg)
Manager-ul compartimentului securitate al Microsoft, Michael Howard, a explicat că această greşeală a ruinat codul de control ActiveX, folosit de browser. Potrivit lui, acest cod a fost înfiinţat de Microsoft, folosind coduri de bibliotecă mai vechi care aveau încorporate vulnerabilitatea. Din cauza prezenţei acestor vulnerabilitaţi, codul creat permite înscrierea datelor neverificate, ceea ce a creat mari posibilitaţi pentru folositea browser-ului de către cyber-infractori.
Ca urmare, compania a fost obligată să-i elibereze marţi (29.07) un patch pentru IE neordinar, care în conformitate ei blochează exploatarea vulnerabilităţilor în ActiveX. O versiune alternativă a bibliotecii Active Template Library (ATL) este utilizată în Visual Studio, deci patch-ul pentru acest "instrument" a fost eliberat în aceeaşi zi cu patch-ul pentru IE.
În blog-ul său, Howard, a oferit posibilitatea cititorilor de a găsi greşeala în cod, avertizînd că este ascunsă într-un singur semn. Iată codul:
__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);
Răspunsul corect:"Uită-te la ultimul rând. Primul argument este incorect. Ar trebui să arate astfel: hr = pStream->Read((void*)pbArray, (ULONG)cbSize, NULL); ".
Howard a recunoscut necesitatea de a purifica procesul de scriere a coduilor, şi a raportat că Microsoft a înoit instrumentele care sunt utilizate pentru a detecta astfel de erori. În plus, compania va obliga toţi programatorii ei să utilizeze numai versiunile noi de ATL.