Die Compiler-Optimierung ist ein entscheidender Bestandteil zur Verbesserung der Programmleistung. Der Rustc-Optimierungsprozess kann jedoch aufgrund algorithmischer Fehler oder Probleme, die aus der Interaktion von Komponenten entstehen, Schwachstellen einführen. Bestehende Testmethoden stehen vor mehreren Herausforderungen, darunter hohe Zufälligkeit der Testfälle, unzureichende Fokussierung auf anfällige Schwachstellenbereiche und minderwertige anfängliche Fuzzing-Seed-Werte. Diese Arbeit schlägt eine Methode zur Generierung von Testfällen basierend auf großen Sprachmodellen (LLMs) vor, die Anforderungs-Vorlagen und Optimierungsalgorithmen nutzt, um Code zu generieren, der für bestimmte Optimierungsdurchläufe relevant ist, insbesondere für Echtzeit-Steuerungslogik und sicherheitskritische Module, die im Bereich der industriellen Steuerung einzigartig sind. Ein Ansatz zur Schwachstellenscreening basierend auf statischer Analyse und Regelabgleich wurde entwickelt, um potenzielle Risikopunkte in den Optimierungsbereichen der MIR- und LLVM-IR-Schichten sowie in unsicheren Codeabschnitten zu lokalisieren. Darüber hinaus wird die gezielte Fuzzing-Strategie durch die Gestaltung von Seed-Warteschlangen und Auswahlalgorithmen, die die Korrelation zwischen Optimierungsbereichen berücksichtigen, verbessert. Das implementierte System, RustOptFuzz, wurde sowohl an benutzerdefinierten Datensätzen als auch an realen Programmen evaluiert. Im Vergleich zu modernen Tools verbessert RustOptFuzz die Fähigkeit zur Schwachstellenerkennung um 16 %–50 % und reduziert die Zeit zur Reproduktion von Schwachstellen erheblich, wodurch die Gesamteffizienz bei der Erkennung von optimierungsbezogenen Schwachstellen in Rustc verbessert wird und technische Unterstützung für die Zuverlässigkeit von industriellen Steuerungssystemen bereitgestellt wird.
Xie et al. (Mittwoch,) untersuchten diese Frage.