Utilisation sécurisée des outils de développement Qt
Conseils pour utiliser les outils de développement Qt en toute sécurité.
Présentation
Le framework Qt fournit un ensemble complet d’outils pour le développement d’applications Qt : des interfaces de système de compilation telles que qmake et qt-cmake; des compilateurs et des générateurs tels que Meta-Object Compiler (moc), User Interface Compiler (uic), Resource Compiler (rcc), Qt Shader Baker (qsb), ainsi que les générateurs de code pour les descriptions d’interface tels que le compilateur «Qt Remote Objects » (repc) ou le compilateur XML «Qt D-Bus » (qdbusxml2cpp); les outils QML tels que qmllint et le compilateur de types QML; les importateurs de ressources ; et les outils de déploiement tels que windeployqt, macdeployqt et androiddeployqt. Pour une liste complète, consultez la section Outils et utilitaires.
La plupart des outils sont des outils en ligne de commande qui convertissent des fichiers d'entrée en fichiers de sortie, et sont exécutés dans le cadre d'un système de construction de projet. D'autres outils s'exécutent en arrière-plan, par exemple pour fournir la complétion de code ou la vérification syntaxique dans un IDE.
Cette page explique le modèle de sécurité des outils de développement fournis et comment les utiliser en toute sécurité. Elle s’inscrit dans le cadre du modèle de sécurité partagée de Qt, qui décrit la manière dont les responsabilités en matière de sécurité sont réparties entre les développeurs d’applications, Qt et les opérateurs ou fabricants d’appareils.
Modèle de sécurité des outils de développement
Ces outils sont conçus pour traiter efficacement des fichiers d’entrée complexes. Ils vérifient certes la validité générale des données d’entrée, mais ne sont pas conçus pour se prémunir contre des entrées malveillantes ni pour les gérer. Les données d’entrée sont donc supposées fiables.
Dans le cadre du modèle de sécurité partagée de Qt, les outils de développement et les projets qu’ils traitent relèvent entièrement de la responsabilité du développeur. Qt est responsable de l’intégrité des outils qu’il fournit ; vous êtes quant à vous responsable de ne leur fournir que des données d’entrée auxquelles vous faites confiance.
Pourquoi est-ce important ?
Comme les outils traitent les données d'entrée sans les considérer comme hostiles, un projet malveillant ou mal formé peut causer des dommages lors du développement, de la configuration ou de la compilation, avant même que l'application résultante ne soit exécutée.
En particulier, les outils :
- Lisent des fichiers. Le système de compilation peut lire des fichiers situés en dehors du répertoire du projet, via des chemins absolus ou relatifs (traversée de chemins).
- Écrivent des fichiers. Les chemins de sortie sont dérivés des données d’entrée. Cela peut entraîner l’écriture de fichiers en dehors du répertoire de sortie prévu, ou l’écrasement de fichiers existants.
- Lancent des processus externes. Les interfaces de compilation et certains générateurs lancent des compilateurs, des scripts ou d’autres exécutables. Des données d’entrée non fiables peuvent influencer le choix des programmes exécutés et les arguments qui leur sont passés.
- Générer du code qui sera ensuite compilé et exécuté. De nombreux outils produisent du code C++, QML ou d’autres sources qui viennent s’intégrer à votre application. Des données d’entrée spécialement conçues peuvent influencer la sortie générée, et donc le code qui se retrouve finalement dans l’application Qt ou sur le périphérique.
En pratique, cela signifie que la compilation d’un projet non fiable peut conduire à l’exécution de code arbitraire sur votre machine de compilation, avec vos privilèges et un accès à tout ce que cet environnement contient, comme des identifiants, des clés de signature ou du code source. Cela peut exposer vos données privées, compromettre votre machine et, finalement, compromettre l’application ou l’appareil que vous compilez, et donc tous ses utilisateurs.
Ce risque n’est pas uniquement lié aux outils Qt. Lorsque vous configurez un projet avec CMake, un système de compilation courant pour le C++, vous autorisez le projet à exécuter des programmes locaux à des chemins d’accès arbitraires (execute_process()) ou à récupérer des ressources réseau sans vérification supplémentaire (moduleFetchContent ). C’est également la raison pour laquelle les IDE affichent parfois des avertissements avant la configuration des projets ; voir par exemple la fonctionnal ité « Workspace Trust » de Visual Studio Code.
Recommandations
- N’ouvrez et ne compilez que des projets auxquels vous faites confiance. Ne configurez pas et ne compilez pas de projets provenant d’une source inconnue ou non fiable, de la même manière que vous n’exécuteriez pas de scripts d’origine inconnue.
- Isolez les compilations non fiables. Si vous devez travailler sur un projet auquel vous ne faites pas entièrement confiance, faites-le dans un environnement isolé, tel qu’un conteneur ou une machine virtuelle. Lancez la compilation avec un minimum de privilèges, et sans accès aux secrets, aux identifiants ou aux clés de signature.
- Limitez l’accès au réseau pendant la compilation. Privilégiez les compilations entièrement locales. Si un projet a besoin d’accéder à une ressource distante pour la compilation, cela peut non seulement causer des problèmes liés à la disponibilité (notamment le blocage de votre machine de compilation par le serveur distant si elle le submerge de requêtes), mais constitue également un vecteur d’attaque supplémentaire susceptible de compromettre l’environnement de compilation et le résultat de la compilation.
- Procurez-vous Qt auprès d’une source fiable. Installez Qt et ses outils uniquement via les canaux officiels, et maintenez-les à jour afin de bénéficier des correctifs de sécurité. Consultez la section « Sécurité dans Qt ».
- Veillez à ce que l’environnement de compilation reste fiable. Assurez-vous, par exemple, que les répertoires de votre `
PATH` et les outils auxquels ils renvoient sont fiables, afin que les outils de développement n’invoquent pas d’exécutables inattendus.
Portée
Cette page traite des outils de développement utilisés lors de la compilation et qui s’exécutent sur votre propre machine. Le framework Qt fournit également des outils présentant différents modèles de menace :
- des outils destinés aux utilisateurs, qu’un utilisateur peut installer et exécuter sur un système d’utilisateur final, tels que Qt LinguistQt Widgets Designer et Qt Assistant. Consultez les pages de manuel correspondantes pour obtenir des conseils de sécurité sur ces outils.
- des outils auxiliaires lancés indirectement par des bibliothèques ou d’autres outils. Étant donné que l’outil et son mécanisme de lancement font tous deux partie de la surface d’attaque, ceux-ci méritent une attention particulière.
Pour des conseils généraux sur le traitement des données provenant de sources non fiables lors de l’exécution, consultez la section « Gestion des données non fiables ».
© 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.