Sur cette page

Considérations relatives à la sécurité multimédia

Diagramme de flux de données

Ce diagramme présente les éléments généraux de traitement des données dans Qt Multimedia qui contribuent à la gestion sécurisée des sources multimédias non fiables.

Flux de données liées à la sécurité

Hypothèses

À l’instar du reste de Qt, Qt Multimedia part du principe que l’environnement dans lequel il s’exécute est correctement configuré et n’a pas été compromis. En particulier, l’environnement du processus, les chemins de recherche à partir desquels les bibliothèques et les plugins sont chargés, ainsi que les pilotes de décodage matériel installés sont supposés être contrôlés par la personne qui déploie l’application, et non par un attaquant. Les attaques nécessitant un environnement de processus déjà non sécurisé ne relèvent pas de la responsabilité de Qt en matière de sécurité, comme décrit dans le modèle de sécurité partagée de Qt.

Le contenu multimédia lui-même n’est pas couvert par cette hypothèse. Les données multimédias, ainsi que les URL qui y font référence, sont traitées comme des entrées non fiables et font l’objet de la suite de cette page. Voir également Gestion des données non fiables.

Certains des points ci-dessous sont donc mentionnés non pas parce qu’ Qt Multimedia s s’en protège, mais parce qu’ils relèvent de la responsabilité du développeur de l’application et doivent être pris en compte lors du déploiement d’une application.

Risques

En théorie, si une application permet aux utilisateurs de lire des sources multimédias non fiables et qu’un attaquant a connaissance d’une vulnérabilité dans l’un des éléments illustrés dans la figure ci-dessus, il peut créer une source multimédia qui exploite cette vulnérabilité et la fournir à l’application de la manière prévue.

Les risques ci-dessous sont regroupés en fonction de la personne chargée de les traiter, conformément aux rôles définis dans le modèle de sécurité partagé de Qt.

Risques pris en charge par Qt

  • Vulnérabilités dans les bibliothèques tierces fournies avec Qt Multimedia. Qt Multimedia ne cherche pas à contenir une bibliothèque tierce compromise ; c’est donc la mise à jour régulière de ces bibliothèques qui protège l’application. Nous suivons les vulnérabilités signalées concernant les bibliothèques que nous fournissons, les mettons à jour dès que des correctifs sont disponibles et signalons les défauts que nous détectons nous-mêmes aux projets en amont.
  • Des failles dans les éléments de flux de données propres à Qt Multimedia pouvant entraîner un comportement indéfini. Le domaine le plus sensible est le traitement de la structure des données des trames multimédias natives et backend. Nous suivons les bonnes pratiques de codage sécurisé, soumettons ce code à des tests manuels et automatisés, et effectuons des tests de fuzz sur Qt Multimedia en interne afin de détecter les défauts que ces tests ne parviennent pas à repérer.

Risques pris en charge par le développeur de l’application

  • Plusieurs API d’ Qt Multimedia prennent une URL comme source ou destination et effectuent des accès au système de fichiers ou au réseau pour le compte de l’application. Cela inclut QMediaPlayer::setSource, QAudioDecoder::setSource, QSoundEffect::setSource et QMediaRecorder::setOutputLocation. Transmettre une URL non validée à ces API permet donc à quiconque contrôle cette URL de décider quels fichiers sont lus ou écrits, et quels hôtes sont contactés.
  • Avec le backend multimédia GStreamer, le fait de transmettre une description malveillante et personnalisée de pipeline GStreamer à QGStreamerVideoSource ou QMediaPlayer. Nous recommandons vivement de ne jamais exécuter un pipeline multimédia GStreamer non fiable avec Qt Multimedia, sauf si vous êtes en mesure de prétraiter et de valider de manière significative les descriptions de pipeline GStreamer.
  • Un backend multimédia n’est utilisé que si son plugin peut effectivement être chargé. Le backend multimédia FFmpeg s’associe dynamiquement aux bibliothèques FFmpeg ; ainsi, si ces binaires ne sont pas déployés avec l’application, ou s’ils ne peuvent pas être résolus par l’éditeur de liens dynamiques lors du chargement du plugin, Qt Multimedia bascule vers un autre backend disponible sans avertissement. Les backends restants sont testés dans l’ordre dans lequel leurs plugins sont énumérés, et non selon un ordre de préférence documenté ; une erreur de déploiement peut donc entraîner l’exécution de l’application sur un backend qui n’a jamais été testé pour celle-ci. Si aucun backend ne peut être chargé, seuls QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink et QAudioSource restent fonctionnels.

Risques liés à l’environnement d’exécution

Ces risques proviennent de l’environnement dans lequel l’application s’exécute, plutôt que d’ Qt Multimedia e lui-même, et Qt Multimedia ne peut ni les détecter ni les prévenir. Le développeur de l’application doit en tenir compte lors du déploiement de l’application.

  • Configuration incorrecte de l’environnement ou des pilotes de décodage matériel. Assurez-vous que l’environnement est correctement configuré et que les pilotes de décodage matériel sont correctement installés et à jour.
  • Qt Multimedia sélectionne son backend multimédia lors de l’exécution, et cette sélection peut être remplacée par la variable d’environnement ` QT_MEDIA_BACKEND `, comme décrit dans la section « Changement de backend ». Toute personne capable d’influencer l’environnement du processus de l’application peut donc faire en sorte que celle-ci s’exécute sur un backend multimédia différent de celui pour lequel elle a été développée et testée, avec un ensemble différent de formats et de protocoles pris en charge, ainsi qu’une surface d’attaque différente.

Impact

L’exploitation des vulnérabilités énumérées ci-dessus peut entraîner les conséquences suivantes en matière de sécurité :

  • Comportement indéfini, entraînant concrètement des fuites de mémoire, des plantages ou des blocages de l’application.
  • L'exécution de code à distance pourrait être possible dès lors qu'un attaquant parvient à contrôler de manière significative la corruption du tas.
  • Pour les formats multimédias tels que m3u, qui permettent l’utilisation de différents protocoles dans les entrées de liste de lecture, une configuration incorrecte peut permettre à un attaquant de lire le système de fichiers ou de contacter des hôtes réseau arbitraires. Par défaut, les protocoles potentiellement dangereux sont bloqués, mais ce comportement peut être modifié via l’une des options suivantes :

Notez que, selon le format multimédia, même une source multimédia valide ne se conforme pas nécessairement de manière stricte à la norme multimédia correspondante. Il existe également de nombreuses façons dont une source peut être corrompue ou rendue invalide. Malgré les tests manuels et automatisés effectués sur Qt Multimedia et les bibliothèques tierces par leurs communautés respectives, nous ne pouvons pas garantir la gestion correcte de chaque source multimédia mal formée. Tenez compte de cette limitation lors du développement d’applications présentant des exigences de sécurité avancées.

Mesures d’atténuation

  • Traitez toute URL ne provenant pas de l’application elle-même comme une entrée non fiable, et validez-la avant de la transmettre à Qt Multimedia. Privilégiez une liste blanche (allowlist) des schémas d’URL et des hôtes acceptés plutôt qu’une liste noire (denylist) de ceux rejetés. Si l’application dispose déjà des données multimédias, ou peut les obtenir elle-même, QMediaPlayer::setSourceDevice permet à l’application de garder le contrôle sur la manière dont les données sont lues.
  • Limitez les protocoles que le backend multimédia est autorisé à utiliser. Pour le backend multimédia FFmpeg, consultez la section « Configuration des protocoles réseau autorisés » dans la section « Configuration avancée de FFmpeg ».
  • Contrôlez le backend multimédia que l’application déployée est autorisée à utiliser. Le déploiement exclusif du plugin de backend multimédia dont l’application a besoin constitue ici un contrôle efficace, car cela ne laisse à QT_MEDIA_BACKEND aucun autre plugin à sélectionner. Notez que le simple fait de choisir un backend par défaut différent n’est pas suffisant : ` QT_MEDIA_BACKEND ` a priorité sur la valeur par défaut, y compris sur une valeur définie avec l’option de configuration ` -default-media-backend ` lorsque ` Qt Multimedia ` est compilé à partir du code source.
  • Vérifiez, dans le cadre des tests de déploiement, que l’application s’exécute bien sur le backend multimédia prévu. La catégorie de journalisation « qt.multimedia.plugin » indique quel backend a été chargé, ainsi que les plugins dont le chargement a échoué avant celui-ci.
  • Les binaires Qt Multimedia fournis avec Qt Online Installer sont liés dynamiquement aux bibliothèques FFmpeg suivantes : avcodec, avutil, avformat, swscale et swresample. Un développeur d’application ou un utilisateur final peut donc déployer ses propres versions de ces bibliothèques compatibles au niveau binaire — c’est-à-dire des versions de la même version majeure de FFmpeg — afin de corriger les vulnérabilités de FFmpeg sans attendre la publication d’un correctif Qt.

© 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.