Auf dieser Seite

Sichere Nutzung der Qt-Entwicklertools

Hinweise zum sicheren Einsatz der Qt-Entwicklertools.

Übersicht

Das Qt-Framework enthält einen umfassenden Satz an Werkzeugen für die Entwicklung von Qt-Anwendungen: Frontends für das Build-System wie qmake und qt-cmake; Compiler und Generatoren wie „Meta-Object Compiler “ (moc), „User Interface Compiler “ (uic), „Resource Compiler “ (rcc), „Qt Shader Baker“ (qsb) sowie die Codegeneratoren für Schnittstellenbeschreibungen wie den „Qt Remote Objects -Compiler“ (repc) oder den „Qt D-Bus -XML-Compiler“ (qdbusxml2cpp); QML-Tools wie qmllint und der QML-Typ-Compiler; Asset-Importer; sowie Bereitstellungstools wie windeployqt, macdeployqt und androiddeployqt. Eine vollständige Liste finden Sie unter „Tools und Dienstprogramme“.

Die meisten Werkzeuge sind Befehlszeilenwerkzeuge, die Eingabedateien in Ausgabedateien umwandeln und als Teil eines Projekt-Build-Systems ausgeführt werden. Andere Werkzeuge laufen im Hintergrund, beispielsweise um Code-Vervollständigung oder Syntaxprüfung in einer IDE bereitzustellen.

Auf dieser Seite werden das Sicherheitsmodell der bereitgestellten Entwicklertools sowie deren sichere Verwendung erläutert. Sie ist Teil des Qt Shared Security Model, das beschreibt, wie die Sicherheitsverantwortung zwischen Anwendungsentwicklern, Qt und Betreibern oder Geräteherstellern aufgeteilt ist.

Sicherheitsmodell der Entwicklertools

Die Tools sind darauf ausgelegt, komplexe Eingabedateien effizient zu verarbeiten. Sie prüfen die Eingaben zwar auf allgemeine Gültigkeit, sind jedoch nicht dafür ausgelegt, vor böswillig gestalteten Eingaben zu schützen oder diese zu behandeln. Es wird daher davon ausgegangen, dass die Eingaben vertrauenswürdig sind.

Im Sinne des Qt Shared Security Model liegen die Entwicklerwerkzeuge und die von ihnen verarbeiteten Projekte eindeutig im Verantwortungsbereich des Entwicklers. Qt ist für die Integrität der von ihm ausgelieferten Werkzeuge verantwortlich; Sie sind dafür verantwortlich, ihnen nur Eingaben zuzuführen, denen Sie vertrauen.

Warum dies wichtig ist

Da die Werkzeuge auf ihre Eingaben reagieren, ohne diese als bösartig einzustufen, kann ein böswilliges oder fehlerhaftes Projekt bereits während der Entwicklungs-, Konfigurations- oder Erstellungsphase Schaden anrichten, noch bevor die resultierende Anwendung überhaupt ausgeführt wird.

Insbesondere führen die Werkzeuge folgende Aktionen durch:

  • Lesen sie Dateien. Das Build-System liest möglicherweise auch Dateien außerhalb des Projektverzeichnisses, entweder über absolute oder relative Pfade (Path Traversal).
  • Schreiben Dateien. Ausgabepfade werden aus der Eingabe abgeleitet. Dies kann dazu führen, dass Dateien außerhalb des vorgesehenen Ausgabeverzeichnisses geschrieben oder vorhandene Dateien überschrieben werden.
  • Rufen externe Prozesse auf. Build-Frontends und einige Generatoren starten Compiler, Skripte oder andere ausführbare Dateien. Nicht vertrauenswürdige Eingaben können beeinflussen, welche Programme mit welchen Argumenten ausgeführt werden.
  • Code generieren, der später kompiliert und ausgeführt wird. Viele Tools erzeugen C++-, QML- oder andere Quelldateien, die Teil Ihrer Anwendung werden. Manipulierte Eingaben können die generierte Ausgabe beeinflussen und damit den Code, der schließlich in der Qt-Anwendung oder auf dem Gerät landet.

Die praktische Konsequenz ist, dass das Erstellen eines nicht vertrauenswürdigen Projekts zur Ausführung von beliebigem Code auf Ihrem Build-Rechner führen kann – mit Ihren Berechtigungen und mit Zugriff auf alles, was sich in dieser Umgebung befindet, wie beispielsweise Anmeldedaten, Signaturschlüssel oder Quellcode. Dies kann Ihre privaten Daten offenlegen, Ihren Rechner kompromittieren und schließlich die von Ihnen erstellte Anwendung oder das Gerät – und damit alle deren Nutzer – gefährden.

Dieses Risiko besteht nicht nur aufgrund der Qt-Tools. Wenn Sie ein Projekt mit CMake, einem beliebten Build-System für C++, konfigurieren, ermöglichen Sie es dem Projekt, lokale Programme an beliebigen Pfaden auszuführen (execute_process()) oder Netzwerkressourcen ohne weitere Überprüfungen abzurufen (FetchContent -Modul). Dies ist auch der Grund, warum IDEs manchmal vor der Konfiguration von Projekten warnen; siehe beispielsweise „Workspace Trust“ in Visual Studio Code.

Empfehlungen

  • Öffnen und erstellen Sie nur Projekte, denen Sie vertrauen. Konfigurieren oder erstellen Sie keine Projekte aus einer unbekannten oder nicht vertrauenswürdigen Quelle – genauso, wie Sie keine Skripte unbekannter Herkunft ausführen würden.
  • Isolieren Sie nicht vertrauenswürdige Builds. Wenn Sie mit einem Projekt arbeiten müssen, dem Sie nicht vollständig vertrauen, tun Sie dies in einer isolierten Umgebung, wie beispielsweise einem Container oder einer virtuellen Maschine. Führen Sie den Build mit minimalen Berechtigungen und ohne Zugriff auf Geheimnisse, Anmeldedaten oder Signaturschlüssel aus.
  • Schränken Sie den Netzwerkzugriff während des Builds ein. Streben Sie an, dass Builds vollständig lokal erfolgen. Wenn ein Projekt für den Build Zugriff auf eine Remote-Ressource benötigt, kann dies nicht nur zu Problemen aufgrund der Verfügbarkeit führen – einschließlich der Blockierung Ihres Build-Rechners durch den Remote-Server, falls dieser mit Anfragen überlastet wird –, sondern stellt auch einen weiteren Angriffsvektor dar, über den die Build-Umgebung und das Build-Ergebnis kompromittiert werden können.
  • Beziehen Sie Qt aus einer vertrauenswürdigen Quelle. Installieren Sie Qt und die dazugehörigen Tools ausschließlich über offizielle Kanäle und halten Sie sie auf dem neuesten Stand, damit Sie Sicherheitsupdates erhalten. Siehe „Sicherheit in Qt“.
  • Sorgen Sie dafür, dass die Build-Umgebung vertrauenswürdig bleibt. Stellen Sie beispielsweise sicher, dass die Verzeichnisse in Ihrer „ PATH “ und die darin enthaltenen Werkzeuge vertrauenswürdig sind, damit die Entwicklerwerkzeuge keine unerwarteten ausführbaren Dateien aufrufen.

Geltungsbereich

Diese Seite behandelt die Entwicklertools für die Erstellungsphase, die auf Ihrem eigenen Rechner ausgeführt werden. Das Qt-Framework enthält außerdem Tools mit unterschiedlichen Bedrohungsmodellen:

  • Benutzerorientierte Werkzeuge, die ein Benutzer auf einem Endbenutzersystem installieren und ausführen kann, wie z. B. Qt LinguistQt Widgets Designer und Qt Assistant. Sicherheitshinweise zu diesen Tools finden Sie in den jeweiligen Handbuchseiten.
  • Hilfstools, die indirekt von Bibliotheken oder anderen Tools gestartet werden. Da sowohl das Tool als auch sein Startmechanismus Teil der Angriffsfläche sind, verdienen diese besondere Aufmerksamkeit.

Allgemeine Hinweise zur Verarbeitung von Daten aus nicht vertrauenswürdigen Quellen zur Laufzeit finden Sie unter „Umgang mit nicht vertrauenswürdigen Daten“.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.