Das weltweit tätige Handelsunternehmen setzt aus historischen Gründen zahlreiche MS Office Makros zur Abbildung seiner Geschäftsprozesse ein. Diese Makros werden in der Regel dezentral von den Fachbereichen selbst erstellt und gepflegt (IDV-Anwendungen). Zum Teil unterstützen diese Makros essenziell geschäftsrelevante Prozesse und sind von entsprechender Wichtigkeit. Durch die dezentral gepflegten Anwendungen ist die Kontrolle der Sicherheitsstandards durch die zentrale IT stark eingeschränkt, was neben der allgemeinen Sicherheitsproblematik von Office Makros / VBA zu einem erheblichen Risiko führt. Um dieses Risiko zu reduzieren, werden alle im Unternehmen genutzten Makros einer Sicherheitsbewertung durch die zentrale IT unterzogen. Wird die Sicherheitsbewertung erfolgreich durchlaufen, werden diese Makros digital signiert. Ab einem bestimmten Zeitpunkt sind nur noch diese signierten Makros durch die Anwender auf allen Kundensystemen ausführbar und nicht signierte Makros werden per Policy geblockt.
Da der Umfang der weltweit eingesetzten Makro-Anwendungen ein Mengengerüst von mehreren 100.000 Dateien umfasst, erfolgt die Sicherheitsüberprüfung automatisiert. Es existiert ein Web-Portal, in das die Anwender ihre zu prüfenden Makros hochladen bzw. den Verarbeitungsstatus verfolgen können. Die Dateien werden einem zweistufigen Sicherheitscheck unterzogen. In der Stufe 1 werden die Dateien in einer abgesicherten Sandbox geöffnet und von diversen Viren / Malware-Scannern auf eventuellen Schadcode untersucht. Im zweiten Schritt erfolgt eine maschinelle Codeanalyse in einer individuell erstellten Anwendung. Hier wird auf auffälligen bzw. risikobehafteten VBA-Code geprüft (z.B. Zugriffe auf das Dateisystem). Je nach Kritikalität des Codes wird ein entsprechender Score ermittelt, der auf Ebene einer Makro-Datei kumuliert wird. Überschreitet der Score einen bestimmten Schwellwert, wird die Datei einer manuellen Codeüberprüfung unterzogen. Ist der Score unterhalb des Schwellwertes, wird automatisch signiert.
Die Aufgabe der PTA besteht in der Weiterentwicklung der maschinellen bzw. statischen Codeanalyse. Diese Anwendung ist in Java erstellt und zerlegt den gesamten Code eines Makros in automatisiert identifizierbare Blöcke (z.B. Funktionen, Variablen, IF-THEN-ELSE-Blöcke etc.). Unterstützt wird diese Zerlegung durch den ANTLR Parsergenerator (sog. Grammatik des Codes). Im Ergebnis erhält man einen logischen Codebaum des gesamten Makros im Speicher, welcher durch das Java Programm hinsichtlich potenzieller Code-Risiken analysiert wird. Die einzelnen Statements werden gegen ein umfassendes Regelwerk geprüft, wobei jede Regel einen entsprechenden Score enthält. Da der Code aller gelieferten Makros nicht vorhersagbar ist und sich daher beliebige Code-Kombinationen ergeben können, tritt häufig der Fall ein, dass bestimmte Konstrukte noch nicht von der (konfigurierbaren) ANTLR-Grammatik abgedeckt sind. In diesen Fällen ist das Problem zu analysieren und der Grammatik bzw. der verarbeitende Java-Code anzupassen.