[English]Noch ein weiterer Hinweis auf Probleme mit Softwarepaketen aus dem Microsoft-Umfeld. Die von Microsoft bereitgestellten Visual C++ Runtime-Pakete werden mit veralteten Wix-Versionen zu Installer-Paketen zusammen gebaut.
Anzeige
Worum geht es bei der Visual C++ Runtime?
Für in Visual C++-Programme ist eine Visual C++-Laufzeitumgebung, die VC-Runtime, erforderlich. Microsoft bietet für Windows diverse Versionen seiner Visual C++ Runtime-Umgebung als Redistributable-Pakete an.
Eine Aufstellung der VC-Redistributable-Versionen für Windows findet sich auf dieser Microsoft-Seite. So weit so gut – vielleicht mal abgesehen von der Tatsache, dass es immer mal wieder Ärger mit diesen Paketen gibt und dann Fehlfunktionen bei der Installation und Nutzung von Programmen gibt.
Wandelnde Schwachstelle Visual C++ Runtime?
Leider scheinen die Visual C++ Runtime-Pakete eine wandelnde Sicherheits-Baustelle zu sein. Ich bin heute auf Twitter mal wieder an meine alten Beiträge vom Dezember 2017 erinnert worden.
The problem with C++ Redists & 3rd Party security patches – I to III
Posted on 2017-12-19 by @etguennihttps://t.co/yAvtB8Ionlhttps://t.co/DDQvWwKeW2https://t.co/4tT7fFXoiu
— Crysta T. Lacey (@PhantomofMobile) 22. August 2018
Anzeige
Nach einem Hinweis von Blog-Leser Karl hatte ich in der Artikelreihe auf potentielle Schwachstellen bei Sicherheitsupdates hingewiesen. Die deutschsprachigen Blog-Beiträge sind in den Artikeln verlinkt. Mit dem Tweet bekommt das Ganze möglicherweise etwas mehr Aufmerksamkeit.
Aber es gibt eine weitere Baustelle, die schon einige Tage bei mir als Thema schlummert und der Veröffentlichung harrt. Stefan Kanthak hat mich auf ein Problem und seinen Mail-Austausch mit Microsoft aufmerksam gemacht. Vor lauter Baustellen komme ich aber erst heute dazu, das aufzubereiten.
Nächste Baustelle Wix-Toolset für die vc-Installer
Es geht um das Wix Toolset, mit dem Microsoft seine Installer-Pakete baut. Auf der Webseite des Anbieters heißt es:
WiX Toolset build tools includes everything you need to create installations on your development and build machines.
Ausweislich des obigen Screenshots ist momentan das WIX Toolset v3.11.1 aktuell. Aufgefallen ist mir, dass die Webseite noch über http angeboten wird – das Toolset selbst wird über GitHub bereitgestellt. Rob Mensching, ich meine, ein Ex-Microsoft-Mitarbeiter und Entwickler des WIX Toolset (siehe den WikiPedia-Eintrag), bietet auf dem Visual Studio Market Place die Möglichkeit, das Wix Toolset Visual Studio 2017 Extension für Visual Studio (kostenfrei) zu erwerben.
Microsoft nutzt WIX-Toolsets von Anno Dutt
Auf den Microsoft-Download-Seiten für die VC-Redistributable kann man ja die betreffenden Pakete herunterladen. Diese wurden so vor ca. 6 Wochen aktualisiert – was zu begrüßen ist. Stefan Kanthak hat diese Pakete aber seit längerem im Fokus, weil die Installer-Dateien von Microsoft mit dem WIX-Toolset erstellt werden. Das wäre erst einmal nicht schlimm. Aber es gibt 'Merkwürdigkeiten', die ich kurz zusammen stelle:
Die Installationspakete der VC-Redistributables vom Sommer 2018 wurden mit dem WIX Toolset Version 3.7.3813.0 (und älter) erstellt. Bereits im Januar 2016 wurde die Version 3.10.2 des WIX-Toolset freigegeben. Bei FireGiant gibt es einen Artikel, in dem man folgendes lesen kann: 'WiX v3.10.2 is an important security release of WiX. We encourage all users of WiX to upgrade to WiX v3.10.2.' Scheint Microsoft aber nicht zu jucken.
Stefan Kanthak hat sich dann diese VC-Redistributable von Microsoft heruntergeladen und mit ein paar Tools analysiert. Hier die Ergebnisse der Inspektion:
Take 1:
~~~~~~~| C:\Users\Stefan\Downloads>CURL.exe -q -I -L https://aka.ms/vs/15/release/vc_redist.x86.exe
...
| Last-Modified: Tue, 22 May 2018 17:35:06 GMTThe installer is quite new, published about 10 weeks ago.
Take 2:
~~~~~~~| C:\Users\Stefan\Downloads>SIGNTOOL.exe Verify /V vc_redist.x86.exe
...
| The signature is timestamped: Tue May 15 08:08:31 2018The installer was built or digitally signed about 11 weeks ago,
just one week prior to its release.
Take 3:
~~~~~~~| C:\Users\Stefan\Downloads>FILEVER.exe /V vc_redist.x86.exe
| --a-- W32i APP ENU 14.14.26429.4 shp 14,611,496 05-22-2018 vc_redist.x86.exe
|
| Language 0x0409 (Englisch (USA))
| CharSet 0x04e4 Windows, Multilingual
| OleSelfRegister Disabled
| CompanyName Microsoft Corporation
| FileDescription Microsoft Visual C++ 2017 Redistributable (x86) - 14.14.26429
| InternalName setup
| OriginalFilenam VC_redist.x86.exe
| ProductName Microsoft Visual C++ 2017 Redistributable (x86) - 14.14.26429
| ProductVersion 14.14.26429.4
| FileVersion 14.14.26429
| LegalCopyright Copyright (c) Microsoft Corporation. All rights reserved.
Take 4:
~~~~~~~| C:\Users\Stefan\Downloads>LINK.exe /DUMP /HEADERS /DEPENDENTS vc_redist.x86.exe
...
| FILE HEADER VALUES
| 14C machine (x86)
| 7 number of sections
| 54DE53A8 time date stamp Fri Feb 13 20:42:32 2015
Da steckt schon Brisanz drin. Die VC-Redistributable trägt ein Dateidatum vom 15. Mai 2018, wurde aber am 13. Februar 2015 im Linker erstellt. Erstellt wurde die Installationsdatei mit der Laufzeitbibliothek mit dem Wix Toolset 3.7, wie in den folgenden Auszügen erkennbar ist:
Take 4, continued:
~~~~~~~~~~~~~~~~~~| OPTIONAL HEADER VALUES
| 10B magic # (PE32)
| 10.00 linker version
~~~~~
...
| 5.01 operating system version
| 0.00 image version
| 5.01 subsystem version| Image has the following dependencies:
|
| gdiplus.dll
| ADVAPI32.dll
| USER32.dll
| OLEAUT32.dll
| GDI32.dll
| SHELL32.dll
| ole32.dll
| KERNEL32.dll
| Cabinet.dll
| CRYPT32.dll
| msi.dll
| RPCRT4.dll
| WININET.dll
| WINTRUST.dll
| VERSION.dllDebug Directories
|
| Time Type Size RVA Pointer
| -------- ------ -------- -------- --------
| 54DE53A8 cv 46 00052F60 51760 ... E:\delivery\Dev\wix37\build\ship\x86\burn.pdb
Ich bin da nicht so fit in der Versionierung – der Installer wurde mit Visual Studio 2010 zur Verwendung unter Windows XP und neueren Versionen erstellt. Im Februar 2015 war Windows XP aber längst aus dem Support gefallen (April 2014 endete der Support). Irgendwie will Microsoft wohl noch die alte Plattform unterstützen, stolpert aber über die alten Probleme.
Im Auszug sieht man zudem, dass eine ganze Sammlung an DLLs als Abhängigkeiten enthalten sind. Diese werden von Windows nicht als 'known DLLs' angesehen. Sprich: Bei der Installation könnte Malware diese Dateien im Verzeichnis mit den Installationsdateien ersetzen und sich in die Installation einklinken. Ich hatte die Problematik im Artikel Classic Shell heißt jetzt Open-Shell-Menü angesprochen.
Die Liste der Probleme, die Stefan Kanthak mir geschickt hat, geht in diesem Gusto weiter – ich erspare deren Wiedergabe. Es ist eine Folge von Fehlern, die Sicherheitslücke um Sicherheitslücke aufreißen. Und Microsoft verteilt das Ganze auf Millionen Windows-Maschinen. Kanthak hat versucht, Microsoft auf das Thema aufmerksam zu machen, ohne dass was passiert. Die Kollegen bei The Register haben das gerade aufgegriffen. Was läuft da momentan bei Microsoft?
Anzeige
Und täglich grüßt das Murmeltier…
Gibt in manchen Regionen viele Murmeltiere – und dann ist das Gelände plötzlich löchrig wie ein Schweizer Käse. Wieso kommt mir diese Metapher jetzt plötzlich in den Sinn?
"Was läuft da momentan bei Microsoft?"
Momentan?
Microsoft schlampt seit VIELEN Jahren und macht immer wieder dieselben blutigen Anfängerfehler.
"software engineering", "defense in depth", "trustworthy computing" sind FREMDWÖRTER, es fehlen die GRUNDLAGEN!
Beispiele siehe http://seclists.org/bugtraq/2012/Aug/65, http://seclists.org/fulldisclosure/2014/Dec/102
MS bekommt es noch nicht einmal gebacken, die aktuellen Runtimes ihrer eigenen Software beizulegen. Stattdessen liefern sie (potentiell) verwundbare Runtimes aus. Beispiel SQL Server 2017. Dessen ISO wurde im August 2018 zusammengebaut und im Oktober 2017 wurde der SQL Server 2017 veröffentlicht. Auf dem ISO befindet sich VC++ 2015 Version 14.0.23506.0.
Die folgenden Versionen der VC++ Runtimes 2015 sind – laut Versionsnummer – allesamt neuer als die mitgelieferte, veröffentlicht zwischen März und August 2016:
14.0.23918.0
14.0.24210.0
14.0.24212.0
14.0.24215.1
Eigentlich könnten sie sogar die 2017er (Versionen 14.10 bis 14.15) beilegen, weil diese ja die 2015er komplett ersetzt. Aber das hat vielleicht Gründe.
Grüße
"MS bekommt es noch nicht einmal gebacken, die aktuellen Runtimes ihrer eigenen Software beizulegen."
Ersetze MS durch Adobe, AMD, Google, HP, Intel, Mozilla, VMware, … diese Schlamperei und Unfähigkeit ist INDUSTRIESTANDARD!
Eine dieser Klitschen hat noch vor 3 Monaten neue Versionen ihrer Tools mit Visual C++ Runtime 2005 RTM und SQL Server Compact 3.5 SP2 zusammengefrickelt, nachdem ich sie auf die Anfängerfehler in ihren selbstgestrickten Installationsprogrammen hingewiesen habe.
Erstere ist war zu diesem Zeitpunkt erst 2+5 Jahre "end of life" https://support.microsoft.com/en-us/lifecycle/search?alpha=Microsoft+Visual+C%2B%2B+2005, letztere nur einen Monat https://support.microsoft.com/en-us/lifecycle/search?alpha=Microsoft+SQL+Server+Compact+3.5
Die vor 7 bzw. 9 Jahren veröffentlichten Sicherheitsupdates https://support.microsoft.com/en-us/help/2467175
und https://support.microsoft.com/en-us/help/2538242/ms11-025-description-of-the-security-update-for-visual-c-2005-sp1-redi will diese Frickelbude NICHT ausliefern, trotz https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads und https://support.microsoft.com/en-us/help/2661358/minimum-service-pack-levels-for-microsoft-vc-redistributable-packages
JFTR: den Installer für diese URALT MSVCRT hat Microsoft mit WiX 3.6 gefrickelt.
Durchaus richtig. Ich wollte nur auf den Umstand hinweisen, dass MS es bei der _eigenen_ Software nicht hinbekommt und stattdessen 1,5 Jahre alte Runtimes mitliefert. So haben die anderen Unternehmen _noch weniger_ Anreiz und Vorbild, es richtig zu machen, nach dem Motto "MS macht's doch auch nicht"; schuld sind sowieso immer die anderen…
Noch schlimmer und peinlicher sind übrigens Anwendungen, die _zwingend_ eine VC++ Runtime in einer ganz bestimmten (potentiell) verwundbarenVersion brauchen und ohne diese gar nicht mehr funktionieren.
So passiert beim Lenovo PowerManager (Energiemanager) vor einigen Jahren. Der brachte eine alte Version einer VC++ Runtime mit, die ich später deinstallierte (weil schon eine neuere drauf war). Irgendwann wunderte ich mich, warum die Software nicht mehr startete – kein Splash, keine Fehlermeldung etc. Durch Reinstallation der Software war das Problem behoben. Nach "etwas" Rumfummeln war dann der Zusammenhand hergestellt.
Echt seltsam, was "manche" Unternehmen so treiben und fabrizieren.
Grüße
Lies einfach (noch)mal http://seclists.org/fulldisclosure/2012/Aug/113, und danach (noch)mal http://seclists.org/fulldisclosure/2009/Sep/0, http://seclists.org/fulldisclosure/2010/Jun/589, http://seclists.org/fulldisclosure/2012/Oct/37, http://seclists.org/fulldisclosure/2012/Nov/20, http://seclists.org/fulldisclosure/2013/Jun/6, http://seclists.org/fulldisclosure/2015/Aug/12, …
Dann hoffen wir mal, dass der Stefan Kanthak noch keinen Herzinfarkt erlitten hat.