Eigentlich kann man es kein Sicherheitsupdate nennen. Ich sehe eigentlich nur eine sicherheitsrelevante Änderung in:
- atltransactionmanager.h (ATL)
Hier wird das Laden der ktmw32.dll jetzt mit einer neuen Funktion AtlLoadSystemLibraryUsingFullPath durchgeführt, die in atlcore.h hinzugefügt wird. Diese Funktion lädt eine DLL nur aus dem Windows-System Verzeichnis. Damit wird Binary-Planting verhindert, aber dies betrifft eigentlich nurWindows Vista / 7 / 2008Windows 2003 und Windows XP (Nachtrag am 18.08. siehe dazu Kommentar von Stefan Kuhr) und diejenigen die den Kernel Transaction Manager mit der ATL nutzen.
Bugfixes habe ich folgende gefunden:
- afxtoolbarimages.cpp (MFC)
In CPngImage::LoadFromBuffer wurde bei der Verwendung dieser Funktion in Speicherblock eines Streams nicht freigegeben (falsche Nutzung von CreateStreamOnHGlobal). - dbcore (MFC / ODBC)
In CRecordset::BuildUpdateSQL in der ODBC Implementierung, wird bei Abfrage eines Cursornamens ein Puffer von 18 Zeichen Länge verwendet (MAX_CURSOR_NAME). Ist der Cursorname länger so wurde eine Exception geworfen. Jetzt wird erkannt, dass der Buffer zu klein ist und es wird ein dynamischer Buffer mit ausreichender Größe alloziert und der Name dann abgefragt. - xutility (STL und auch CRT)
In der Basisklasse der Iteratoren wurde eine Änderung gemacht. Scheinbar hat die Zuweisung eines „leeren/nicht initialisierten“ Iterators bisher einen Iterator gar nicht verändert. Der alte Iterator wurde nicht aufgelöst durch _Orphan_me. Dies bringt dann Probleme mit sich wenn der _ITERATOR_DEBUG_LEVEL mit 2 genutzt wird.
Da dieser STL Code auch komplett in der CRT verwendet wird, hat dies auch Einfluß auf die CRT.
Auf die Release Version aber hat diese Code-Änderung jedoch keinen Einfluss, soweit ich das erkennen kann.
Es gibt noch einige andere Dateien, die geändert wurde, aber hier haben sich nur unwichtige Kommentare geändert.
Fazit: Alles in allem ein Sicherheitspatch, der eher Bugfixes enthält, aber selbst die sind nicht sonderlich weitreichend. Und der Nutzerbereich, der mit der ATL den Kernel Transaction Manager nutzt, wird wohl eher klein sein…
PS: Die Dateien dieses Sicherheitspatches haben die Version 10.0.40219.325.
Die Dateien aus dem VS-2010 SP1 haben die Versionsnummer 10.0.30319.1.
Nachtrag 01.12.2011, MSDN Links:
Sicherheits Bullentin: MS11-025
Knowledge Base-Artikel (KB-Artikel): KB2565057
Martin, es ist gerade *nicht* „… Windows Vista / 7 / 2008 …“ betroffen, denn da ist standardmaessig „SafeDllSearchMode“ am Start und ausserdem ktmw32.dll (nicht ktmw32.dl) immer da und wird aus dem system32-Verzeichnis geladen statt aus dem current working directory (das waere die binary planting attack). Vielmehr ist Windows XP und Server 2003 betroffen, weil es da diese DLL nicht im system32 gibt und sie ein Angreifer im current working directory unterschieben koennte. Betroffen sind also Programme, die die Klasse CAtlTransactionManager benutzen und gleichzeitig auch auf XP oder Server 2003 laufen (und dabei eben die Fallbackimplementierung dieser Klasse benutzen). Nur diese Konstellationen sind angreifbar.
@Stefan: Upps. Mein Fehler. Danke Stefan für Deinen Beitrag. Ich habe eine entsprechende Anmerkung in meinem Artikel gemacht.