Qt Test Sicherheitshinweise
Das „ Qt Test “-Framework verwaltet die Ausführung von Tests und erstellt Berichte über deren Ergebnisse. Bei der Verwendung sollten viele der Überlegungen im Zusammenhang mit der sicheren Nutzung der Qt-Entwicklertools berücksichtigt werden. Wie im Qt Shared Security Model für Qt allgemein erläutert, müssen Nutzer von „ Qt Test “ darauf achten, wie sie „ Qt Test “ und die dabei erzeugten Daten verwenden.
Eine gute Testsuite belastet den zu testenden Code stellenweise stark und birgt daher die Gefahr von Fehlern, einschließlich Abstürzen oder der Auslösung von undefiniertem Verhalten. Da sich der zu testende Code weiterentwickelt, werden dadurch von Zeit zu Zeit Fehler aufgedeckt, bevor sie die Endbenutzer erreichen. Solche Fehler können überraschende Nebenwirkungen haben, darunter die Beschädigung anderer Ressourcen, auf die der Testprozess zugreifen kann, wie z. B. Quellcode oder Build-Artefakte.
Ein Testfehler kann mit zusätzlichen Informationen einhergehen, die die Art des Fehlers beschreiben. Selbst wenn Tests erfolgreich sind, können sie oder der von ihnen getestete Code Ausgaben erzeugen, sei es durch das Auslösen von Warn- oder Debug-Meldungen oder als Reaktion auf Befehlszeilenoptionen. Die Form dieser Daten kann in manchen Fällen die Berichterstellung erschweren oder die Formatierung eines Berichts beeinträchtigen, in den sie aufgenommen werden – sei es direkt durch „ Qt Test “ oder durch einen anderen Prozess, der die von „ Qt Test “ erzeugte Ausgabe verarbeitet.
Benutzern von Qt Test wird empfohlen, folgende Punkte zu beachten:
- Die Testausgabe kann sensible Daten enthalten, wodurch diese für jeden zugänglich sind, der die Ausgabe lesen kann.
- Insbesondere wenn der Testcode oder der zu testende Code nicht als absolut vertrauenswürdig gilt, sollten Tests nach Möglichkeit von einem Prozess ohne Sonderrechte und in einer Sandbox (z. B. einer virtuellen Maschine) ausgeführt werden, aus der nach Abschluss der Tests nur der Bericht mit den Testergebnissen aufbewahrt wird.
- Es sollte nicht davon ausgegangen werden, dass auf dem Testsystem vorhandene Artefakte nach der Testausführung noch in demselben Zustand sind wie vor der Testausführung.
- Obwohl „ Qt Test “ alle erdenklichen Vorkehrungen trifft, um Daten, die es in seine Testausgabe einbettet, zu maskieren oder anderweitig anzupassen, damit die Ausgabe dem gewünschten Format entspricht, sollten Sie sicherstellen, dass Tools, die diese Ausgabe verarbeiten, robust gegenüber den Arten von Ausgaben sind, die Ihre Tests erzeugen könnten.
Artefakte zur Erstellungszeit
Noch bevor der Testcode kompiliert wird, kann die Build-Konfiguration eines Tests die Build-Umgebung anpassen, beispielsweise durch Hinzufügen einer Anforderung an die für die Tests benötigte Software zur Build-Konfiguration.
Daher ist es wichtig zu verstehen, welche Auswirkungen solche Anpassungen auf den Build selbst haben können. Dazu können Änderungen gehören, wo Build-Tools den einzubindenden Quellcode oder die zu verknüpfenden Bibliotheken finden. Soweit möglich, sollten für einen Test erforderliche Anpassungen nicht auf den Build von für Endbenutzer bestimmten Ergebnissen angewendet werden, sondern nur auf den Build jedes einzelnen Tests, der sie benötigt.
Dies ist besonders wichtig, wenn Änderungen an der Konfiguration während der Erstellung aus nicht vertrauenswürdigen Quellen stammen. Solche Änderungen wurden bereits mit Sicherheitsverletzungen bei Softwarepaketen in Verbindung gebracht.
Allgemeine Überlegungen
Automatisierte Tests sind kein Allheilmittel. Bestehende Tests können versehentliche Fehler oder böswillige Änderungen möglicherweise nicht erkennen, und allein die Tatsache, dass Tests ausgeführt werden, kann einer solchen Änderung die Möglichkeit geben, Schaden anzurichten. Neue Tests, die mit einer Änderung am zu testenden Code hinzugefügt werden, können möglicherweise wesentliche Probleme in der Änderung oder Probleme im bestehenden Code, die infolge der Änderung zutage treten, nicht erkennen.
Die Befolgung der Best Practices unter „Qt Test “ kann dazu beitragen, das Testverhalten vorhersehbarer zu gestalten und Risiken, einschließlich Sicherheitsrisiken, leichter zu vermeiden. Wie dort erwähnt, können externe Abhängigkeiten zu Problemen führen, wie unter „Externe Abhängigkeiten vermeiden“ beschrieben.
Was die „Sichere Nutzung der Qt-Entwicklertools“ betrifft, so sind Sie für die Integrität der Testumgebung, des Testcodes und des zu testenden Codes verantwortlich. „ Qt Test “ ist nicht dafür ausgelegt, mit bösartigem Testcode oder zu testendem Code umzugehen, sondern dient lediglich als praktisches Framework zum Schreiben von Tests, die aussagekräftige Berichte liefern, wenn diese Tests fehlschlagen.
Trennung von Test- und Produktions-Builds
Es ist generell ratsam, auslieferbare Software-Artefakte getrennt von Test-Artefakten zu erstellen und die auslieferbaren Artefakte an einem Ort zu speichern, an dem weder das Erstellen von Test-Artefakten noch die Auswirkungen der Testausführung diese beeinträchtigen können.
Diese Trennung vermeidet potenzielle Probleme, die aufgrund von Fehlfunktionen beim Erstellen der Tests, bei den Tests selbst oder beim zu testenden Code entstehen können. Alle diese Prozesse haben potenziell die Möglichkeit, Dateien auf der Festplatte zu ändern. Dies kann besonders bedenklich sein, wenn einer dieser Schritte eine Netzwerkverbindung zu einem Remote-Server nutzt, der möglicherweise kompromittiert ist.
Testartefakte sollten in Produktionssystemen normalerweise nicht benötigt werden. Wenn Tests auf Produktionssystemen erforderlich sind, ist es ratsam, die Tests getrennt von dem Code, den sie testen, zu verpacken, um ihre Deinstallation zu erleichtern, sobald die Tests auf dem System ausgeführt wurden, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Dies ermöglicht es zudem, auf Kopien des Produktionssystems nur die primären Lieferergebnisse zu installieren, sobald genügend Kopien getestet wurden, um die Gewissheit zu erlangen, dass alle Systeme wie vorgesehen funktionieren.
Überprüfen Sie die Namen der Ausgabedateien
Wie bei jeder Software, die in Dateien schreibt, verfügen Programme von „ Qt Test “ über Optionen, mit denen gesteuert werden kann, wo die Ausgabe gespeichert wird und in welchem Format.
Wenn die an solche Optionen übergebenen Namen der Ausgabedateien automatisch generiert werden, beispielsweise durch das Build-System oder ein Qualitätsmanagementsystem, das die Tests ausführt, muss sorgfältig darauf geachtet werden, dass die generierten Namen den Erwartungen entsprechen. Das System, das solche Namen automatisch generiert, sollte überprüfen, ob die generierten Namen den Erwartungen entsprechen und die Ausgabe nicht an Orten ablegt, an denen sie von anderen Systemen falsch interpretiert werden könnte, Daten aus anderen Quellen überschreibt oder ersetzt oder selbst Gefahr läuft, durch solche Daten überschrieben oder ersetzt zu werden.
© 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.