Das Problem mit C++ Redists & 3rd Party Sicherheitspatches–Teil 1

[English]Blog-Leser Karl (al Qamar) hat mich vor einiger Zeit auf ein Problem im Zusammenhang mit Sicherheitsupdates für die Visual C++ Laufzeitbibliotheken (Redistributables) aufmerksam gemacht. Ich habe sein Material mal als Blog-Beitrag aufbereitet und stelle es hier zur Information und ggf. Diskussion ein. An dieser Stelle mein Dank an Karl für den Hinweis.


Anzeige

Worum geht es genau?

Die meisten Programme benötigen Laufzeitbibliotheken, um ausgeführt zu werden. Bei Visual C++ ist das die Redistributables (Runtime-Bibliotheken), die mit der jeweiligen Anwendung mit installiert werden. Karl schreibt:

In aller Regel ist es leider so, dass MS sich bei seinen für fast alle Programme notwendigen 3rd Party Komponenten die als Laufzeitbibliotheken aka C++ Runtimes bekannt sind, konzeptionell einen ziemlichen Bock geschossen hat. Darauf bin ich selbst erst um 2013 aufmerksam geworden.

Der Haken bei VC++Runtime-Updates

Werden VC++Runtime-Bibliotheken durch Sicherheitsupdates aktualisiert, installiert Windows diese in den meisten Fällen Side-by-Side. Karl schreibt:

Durch einen konzeptionellen Irrtum werden die C++ Redists nämlich in den meisten Fällen Side-by-Side installiert, d.h. alte unsichere Redist verbleiben auf den Systemen, dies betrifft Clients wie Server.

Ein paar Worte zu Side-by-Side und WinSxS

Warum man die Laufzeitbibliotheken Side-by-Side installieren muss, habe ich im Blog-Beitrag Windows 7/8.1/10: Fehler Side-by-Side-Konfiguration ungültig in anderem Zusammenhang erläutert.

In kurz: Laufzeitbibliotheken werden zentral gespeichert, damit die Anwendungen nicht jedes Mal die gleichen DLLs separat in Programmordner installieren müssen. Man kann durch gemeinsame Nutzung der Bibliotheken Speicherplatz sparen.

Das Problem: Verwenden zwei Anwendungen unterschiedliche Versionen einer Laufzeitbibliothek, käme es zu Konflikten, wenn die zuletzt installierte Anwendung einfach die bereits vorhandenen Runtime-Dateien überschreiben würde.  Dann kommt es bei der Installation der Anwendung zu einem Konflikt, der früher als "DLL hell" bekannt war.

Um dieses dieses Problem elegant zu umgehen, wurden die Side by Side-Konfiguration im Ordner WinSxS (Windows component store) eingeführt. Bei der Installation einer Anwendung werden die Laufzeitbibliotheken, DLLs, und ggf. andere Ressourcen, in einem eigenen Unterordner des Ordners WinSxS gespeichert. Dadurch behindern sich nicht mehrere Dateien gleichzeitig. Weitere Insides finden sich im genannten Blog-Beitrag.

Weiteres Problem: Windows Update und WSUS

Karl weist noch auf einige zusätzliche Probleme im Zusammenhang mit diesen Sicherheitsupdates hin.

Aus unerklärlichen Gründen stellt Microsoft die aktuellen Versionen [der Redistributables] zwar (teilweise) zum Download bereit, jedoch nicht alle aktuellen Versionen ebenfalls per WSUS oder WU. Dies betrifft insbesondere C++ 2008-2012.

Wenn die Updates über WSUS oder WU installiert werden, führt dies in den meisten Fällen zu o.g. Side-by-Side Installation, da MS erst mit Einführung von C++ 2013 einen Versionscheck im MSI Installer durchführt.

Ferner gelten die Updates als 3rd Party und per Default ist die Einstellung seit Windows XP so, dass nur Windows Updates installiert werden, also keine anderen Microsoft Updates, zu denen die C++ Redists, Office Updates oder SQL / Exchange Server Updates gehören. Ist die Option aktiviert, werden Office-und Treiber-Updates installiert.

In WSUS müsste man zudem die Kategorien von Visual Studio (Platzbedarf!) aktivieren, da die Redists blöderweise keine eigene Kategorie besitzen.

Da schleppt man also eine Altlast mit. Karl schrieb mir in einer Mail: Ich finde das Ganze – auch in Hinblick auf die [in der angehängten Email] weiteren Probleme mit Libraries ziemlich traurig.


Anzeige

Auf die E-Mail-Korrespondenz zwischen Karl und dem Microsoft Security Response Center (MSRC) gehe ich in Teil 2 ein. In Teil 3 findet sich noch eine FAQ und ein Lösungsansatz.

Artikelreihe:
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 1
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 2
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 3

Ähnliche Artikel:
Windows 7/8.1/10: Fehler Side-by-Side-Konfiguration ungültig


Cookies blockieren entzieht uns die Finanzierung: Cookie-Einstellungen

Dieser Beitrag wurde unter Sicherheit, Update, Windows abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

7 Antworten zu Das Problem mit C++ Redists & 3rd Party Sicherheitspatches–Teil 1

  1. Herr IngoW sagt:

    Interessant, bin gespannt was man da tun kann. Ist doch auch sicher für privat interessant oder?

  2. Frank sagt:

    Hallo,

    eine Side-by-Side Installation sollte keine Gefahr darstellen, da sie nicht systemweit zu Verfügung steht. Gefährlich wäre es selbst eine nicht mehr unterstützte Version zu installieren, die vermeintlich von einem älteren Programm benötigt wird, oder auch in der Hoffnung, eine höhere Version wäre sicherer.

    MfG

  3. Martin Feuerstein sagt:

    Wie ist dann die Empfehlung?
    – die neueste Version einer Hauptversion installieren, da diese alle älteren Dateien enthält?
    – immer die älteste Version einer Hauptversion installieren und über WU/WSUS updaten so viel wie eben kommt?
    – alle Versionsstände innerhalb einer Hauptversion nacheinander in entsprechender Reihenfolge von Hand installieren?

    Ich stelle in verwalteten Umgebungen die Software in der Regel per Softwareverteilung über Gruppenrichtlinien zur Verfügung (funktioniert auch für einige C++-Runtime-Versionen), einige Anwendungen (wie auch einzelne C++-Runtime-Versionen) per Skript.

  4. Karl (al Qamar) sagt:

    "eine Side-by-Side Installation sollte keine Gefahr darstellen, da sie nicht systemweit zu Verfügung steht."

    Hallo Frank das ist richtig. Jedoch ist das Programm welches die veraltete side-by-side Library nutzt, zur Laufzeit über diese angreifbar. Es gibt neben elevated rights Attacken noch bestimmt 15 weitere Angriffsszenarien.

    "Gefährlich wäre es selbst eine nicht mehr unterstützte Version zu installieren"

    Was Windows Programme stetig tun, weil die Entwickler ihre Umgebungen nicht patchen und immer davon ausgehen müssen der Kunde hätte diese Runtime nicht, oder eine noch ältere.
    So gelangen immer unsichere alte C++ Installer in Umlauf. Bei fast allen Steamspielen und Adobe und sogar bei Microsoft Produkten kann man das sehr schön im repository beobachten.

    "die vermeintlich von einem älteren Programm benötigt wird, oder auch in der Hoffnung, eine höhere Version wäre sicherer."

    Das möchte ich den Artikeln von Günter nicht vorgreifen.

  5. Ingo sagt:

    Die Kategorie "Visual Studio" im WSUS zu aktivieren ist normalerweise völlig unproblematisch. WSUS lädt dann ja nicht jegliche möglichen Updates herunter, sondern erweitert nur die Liste der verfügbaren Updates, welche Clients anfordern können. Nur die dann auch tatsächlich von den Clients angefragten Updates werden auch freigegeben und heruntergeladen.

    Es sei denn, man hat seinen WSUS völlig bescheuert konfiguriert. Aber dann wäre die Visual Studio Kategorie auch wirklich das kleinste Problem. ;-)

  6. Karl Wester-Ebbinghaus (@tweet_alqamar) sagt:

    Hierüber werden nicht die aktuellsten C++ Redists verteilt. Es hört bei 2008/2012 auf.
    Dafür hat man dann aber den WSUS voll mit Gigabytes an Updates für Visual Studioentwicklungsumgebungen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Bitte beachtet die Regeln zum Kommentieren im Blog (Erstkommentare und Verlinktes landet in der Moderation, gebe ich alle paar Stunden frei, SEO-Posts/SPAM lösche ich rigoros). Kommentare abseits des Themas bitte unter Diskussion.