IBM Security AppScan Source Utilities Version 9.0.2 Benutzerhandbuch IBM Security AppScan Source Utilities Version 9.0.2 Benutzerhandbuch (C) Copyright IBM Corp. and its licensors 2003, 2015. Alle Rechte vorbehalten. IBM, das IBM Logo, ibm.com, Rational, AppScan, Rational Team Concert, WebSphere und ClearQuest sind Marken oder eingetragene Marken der International Business Machines Corp. Weitere Produkt- und Servicenamen können Marken von IBM oder anderen Herstellern sein. Eine aktuelle Liste der IBM Marken finden Sie auf der Webseite "Copyright and trademark information" unter http://www.ibm.com/legal/copytrade.shtml. Linux ist eine eingetragene Marke von Linus Torvalds in den USA und/oder anderen Ländern. Microsoft, Windows, Windows NT und das Windows-Logo sind Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Unix ist eine eingetragene Marke von The Open Group in den USA und anderen Ländern. Java und alle auf Java basierenden Marken und Logos sind Marken oder eingetragene Marken der Oracle Corporation und/oder ihrer verbundenen Unternehmen. Dieses Programm enthält Jacorb 2.3.0, Copyright 1997-2006 The JacORB project; sowie and XOM1.0d22, Copyright 2003 Elliotte Rusty Harold, die jeweils unter der GNU Library General Public License (LGPL) zur Verfügung gestellt werden. Eine Kopie ist in der Notices-Datei verfügbar, die im Lieferumfang dieses Programms enthalten ist. Inhaltsverzeichnis Kapitel 1. Builddienstprogramm Ounce/ Make . . . . . . . . . . . . . . . . 1 Voraussetzungen . . . . . . . . . . . . . 1 Was Ounce/Make unterstützt. . . . . . . . . 2 Betrieb . . . . . . . . . . . . . . . . 3 Ounce/Make ausführen . . . . . . . . . 3 Projektdateien benennen . . . . . . . . . 3 Ounce/Make-Ausgabe . . . . . . . . . . 5 Ounce/Make-Befehlssyntax und Make-Optionen . . 5 Ounce/Make-Eigenschaftendatei. . . . . . . . 8 Ouncemake - Elemente der Eigenschaftendatei . . 9 Beispieleigenschaftendateien . . . . . . . . 15 Beispiele . . . . . . . . . . . . . . . 15 Beispiel 1: Ounce/Make ohne Optionen . . . . 16 Beispiel 2: Ounce/Make mit rekursiver Option 16 Beispiel 3: Ounce/Make im Einprojektmodus mit rekursiver Option . . . . . . . . . . . 17 Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) . . . . . . . . . 19 Objekte und Kontext . . . . . . . . . . . Berechtigungen für die AppScan Source-Befehlzeilenschnittstelle (CLI) . . . . . . . . . . . AppScan Source-Befehlzeilenschnittstelle (CLI) starten . . . . . . . . . . . . . . . . . AppScan Source-Befehlzeilenschnittstelle (CLI) in Landessprachen anzeigen. . . . . . . . . Befehlssyntax . . . . . . . . . . . . . . Befehle für die AppScan Source-Befehlzeilenschnittstelle (CLI) . . . . . . . . . . . . . . Zusammenfassung der Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI) . . . . . about (a) . . . . . . . . . . . . . . delete (del) . . . . . . . . . . . . . deleteassess (da) . . . . . . . . . . . deleteuser (du). . . . . . . . . . . . delvar (dv) . . . . . . . . . . . . . details (det) . . . . . . . . . . . . echo . . . . . . . . . . . . . . . . getaseinfo (gase) . . . . . . . . . . . help (?) . . . . . . . . . . . . . . import (im) . . . . . . . . . . . . . info (i) . . . . . . . . . . . . . . list (ls, dir) . . . . . . . . . . . . listassess (la). . . . . . . . . . . . listgroups (lgrp) . . . . . . . . . . . listusers (lu) . . . . . . . . . . . . log . . . . . . . . . . . . . . . . login (in) . . . . . . . . . . . . . Anmeldedatei . . . . . . . . . . . . . login_local (local) . . . . . . . . . . logout (out) . . . . . . . . . . . . . moduser (mu) . . . . . . . . . . . . . newuser (nu) . . . . . . . . . . . . . openapplication (oa) . . . . . . . . . . © Copyright IBM Corp. 2003, 2015 19 20 20 20 21 22 22 27 27 28 28 28 29 30 30 30 31 32 32 33 33 34 34 35 36 37 37 37 39 41 openassessmentfile (oaf) . . . . password (passwd) . . . . . . . printuser (pu) . . . . . . . . publishassess (pa) . . . . . . publishassessase (pase). . . . . quit . . . . . . . . . . . . record (rc) . . . . . . . . . refresh (rf) . . . . . . . . . register (reg) . . . . . . . . removeassess (da) . . . . . . . report (rpt) . . . . . . . . . scan (sc) . . . . . . . . . . script (scr) . . . . . . . . . setaseinfo (sase) . . . . . . . setcurrentobject (set, cd) . . . setvar (sv) . . . . . . . . . unregister (unreg) . . . . . . Automatisierte Beurteilungen durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kapitel 3. Das Ounce/Ant-Buildtool Integration von Ounce/Ant und Apache/Ant Ounce/Ant-Eigenschaften . . . . . Eigenschaften festlegen . . . . . . Projekte erstellen . . . . . . . . . ounceCreateProject . . . . . . . ounceSourceRoot. . . . . . . . . ounceWeb . . . . . . . . . . . ounceExclude . . . . . . . . . . Projekte benennen . . . . . . . . Anwendungen erstellen und benennen . . Integration eines Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 43 45 45 46 46 46 47 47 49 50 51 53 53 54 54 . . 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 59 59 60 60 61 61 61 62 62 Kapitel 4. AppScan Source-Data Access-API . . . . . . . . . . . . . . 63 Data Access-API-Objektmodell . . . . . . Data Access-API verwenden . . . . . . . Beurteilung aus einer Datei öffnen. . . . Liste der Ergebnisse ausgeben . . . . . Liste veröffentlichter Beurteilungen abrufen Trace ausgeben . . . . . . . . . . Klassen und Methoden der Data Access-API . AssessedFile . . . . . . . . . . . Beurteilung . . . . . . . . . . . AssessmentDiff . . . . . . . . . . AssessmentFilter . . . . . . . . . AssessmentResults . . . . . . . . . Call . . . . . . . . . . . . . . ClassificationType . . . . . . . . DateProximityUnit . . . . . . . . . Factory. . . . . . . . . . . . . Finding. . . . . . . . . . . . . Trace . . . . . . . . . . . . . SeverityType . . . . . . . . . . . OunceException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 66 66 66 67 67 68 68 69 71 71 72 75 77 78 78 81 87 87 88 iii Kapitel 5. Ounce/Maven-Plug-in . . . . 89 Ounce/Maven installieren . . . . . . . Ounce/Maven verwenden . . . . . . . Ounce/Maven-Szenarios . . . . . . . . Anwendungs- und Projektdateien erstellen . Anwendungen überprüfen . . . . . . Berichterstellung. . . . . . . . . . Berichte mit dem Siteziel integrieren . . . Ounce/Maven-Zielanfragen . . . . . . . ounce:application . . . . . . . . . ounce:project . . . . . . . . . . ounce:project-only . . . . . . . . ounce:scan . . . . . . . . . . . ounce:report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 90 90 90 91 91 91 91 92 92 93 93 93 Kapitel 6. AppScan Source for Automation . . . . . . . . . . . . . . . . 95 Berechtigungsnachweise für Automatisierungsserver über Befehlszeile angeben . . . . . . . . . 95 Konfigurationsdatei für den Automatisierungsserver 96 Automatisierungsserver-Protokollierung . . . . . 97 ounceauto über die Befehlszeile verwenden . . . . 98 GenerateReport . . . . . . . . . . . . 98 PublishAssessment . . . . . . . . . . 100 PublishAssessmentASE . . . . . . . . . 100 ScanApplication . . . . . . . . . . . 101 Wait . . . . . . . . . . . . . . . 102 Kapitel 7. Framework for FrameworksAPIs handhaben . . . . . . . . . . 103 Framework for Frameworks-API - Hauptkomponenten. . . . . . . . . . . . . . . Framework for Frameworks-APIs verwenden . iv . 104 . 104 IBM Security AppScan Source Utilities: Benutzerhandbuch Informationen zu diesem Beispiel . . . . . Beispielprojekt in Eclipse oder Rational Application Developer for WebSphere Software (RAD) importieren . . . . . . . . . . . . . Klasse erstellen, die F4FHandler implementiert Manifestdatei für Ihren Handler erstellen . . . JAR für Ihren Handler erstellen . . . . . . JAR in waflgens exportieren . . . . . . . Vom Handler ausgeführte allgemeine Aktionen . . Framework for Frameworks API classes and methods . . . . . . . . . . . . . . . . F4FActions . . . . . . . . . . . . . F4FApp . . . . . . . . . . . . . . F4FHandler . . . . . . . . . . . . . TaintedParam . . . . . . . . . . . . Übergeordnete synthetische Methoden . . . . . VDB-Format . . . . . . . . . . . . . Verwendung von übergeordneten synthetischen Methoden . . . . . . . . . . . . . Beispiel: Synthetische Methoden erstellen . . . Neues Web-Service-Framework for FrameworksHandler mit dem vorhandenen angepassten Web Service Description Language-Scanner integrieren . Den Web-Service-F4F-Handler mit dem angepassten WSDL-Scanner verbinden . . . . . Signaturzuordnung . . . . . . . . . . 105 105 108 109 109 112 112 113 114 118 120 121 122 123 124 126 129 129 131 Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten . 133 Bemerkungen . . . . . . . . . . . 147 Index . . . . . . . . . . . . . . . 151 Kapitel 1. Builddienstprogramm Ounce/Make Bei Ounce/Make handelt es sich um ein Tool, das den Import von Konfigurationsdaten, die aus Buildumgebungen stammen, die mit makefile arbeiten, in AppScan Source automatisiert. Mit Ounce/Make muss der Import von Konfigurationsdaten aus Makefiles (makefile) nicht mehr manuell durchgeführt werden. Das Dienstprogramm Ounce/Make stellt eine Befehlszeilenschnittstelle zum Erstellen von AppScan Source-Projektdateien (.ppf) aus Makedateien (makefiles) bereit. (Eine Makedatei (makefile) stellt dabei eine Möglichkeit zum Erstellen einer ausführbaren Anwendung oder Bibliothek über die Quellendateien bereit.) Die erstellten ppf-Dateien enthalten alle Angaben, die AppScan Source benötigt, um den Quellcode zu analysieren, für dessen Kompilierung die entsprechende Makefile verantwortlich ist. Nachdem Ounce/Make die .ppf-Dateien erstellt hat, können Sie die Projektdateien in AppScan Source importieren oder hinzufügen. So starten Sie das Dienstprogramm: v Führen Sie auf Windows-Systemen die Datei <installationsverzeichnis>\bin\ ouncemake.exe aus (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Beispiel für Windows (32-Bit): C:\Programme\IBM\AppScan Source\bin\ouncemake.exe v Führen Sie auf Linux-Systemen die Datei <installationsverzeichnis>/bin/ ouncemake aus. Beispiel: /opt/ibm/appscansource/bin/ouncemake Make ist das Tool, das die Kompilierung und Verbindung von Programmen automatisiert und hierbei die gegenseitigen Abhängigkeiten von Modulen sowie deren Änderungszeitpunkte berücksichtigt. Make liest Anweisungen aus einer Makefile (makefile), die einen Satz zu erstellender Ziele, die hierfür erforderlichen Dateien und die Befehle angibt, die zu ihrer Erstellung ausgeführt werden müssen. Voraussetzungen Um AppScan Source-Projektdateien erfolgreich erstellen zu können, müssen Sie Ounce/Make in einer geeigneten Umgebung ausführen. Die folgende Liste führt die Voraussetzungen für eine erfolgreiche Ausführung von Ounce/Make auf. Wenn nicht alle diese Voraussetzungen erfüllt sind, schlägt Ounce/Make fehl. v Das Verzeichnis, aus dem Ounce/Make ausgeführt wird, muss eine gültige Makefile enthalten. v Die Buildumgebung muss einen Make-Befehl absetzen können, der auch erfolgreich sein muss. v Führen Sie den Befehl 'make clean' vor der Ausführung von Ounce/Make aus. Sie können 'make clean' explizit vor der Ausführung von Ounce/Make ausführen oder den Befehl mit Ounce/Make einschließen, indem Sie die Option clean angeben. v Makefiles, die Ounce/Make vorfindet, dürfen unter den folgenden Umständen keine fest codierten absoluten Pfade enthalten: – Zur ausführbaren Make-Datei, wenn eine andere Makefile aufgerufen wird: Beispielsweise dürfen Sie den Pfad /usr/bin/make -f makefile.mk nicht referenzieren. In der Makefile referenzieren Sie 'make' über die ausführbare make© Copyright IBM Corp. 2003, 2015 1 Datei oder eine Variable. Die Variable kann das Make-Makro ${MAKE} oder eine andere Variable sein, die Sie in der Eigenschaftendatei angeben. – Zur ausführbaren Compilerdatei bei der Kompilierung des Quellcodes: Beispiel: /usr/bin/gcc -I.. -DFOO -o myfile.o myfile.cpp – Zur ausführbaren Linkerdatei beim Verknüpfen von Objektdateien Beispiel: /usr/bin/ld file1.o file2.o v In #include-Anweisungen. Um eine #include-Anweisung zu verwenden, fügen Sie die folgende Markierung zur Projektdatei als Option der Konfiguration hinzu: --remote_root <fernes_Verzeichnis> Hierbei definiert <fernes_Verzeichnis> den Mountpunkt des fernen Verzeichnisses. Anmerkung: Sie können nur ein einzelnes fernes_Stammverzeichnis angeben. Alle fest codierten Pfade zu #include-Anweisungen müssen auf einen einzelnen Mountpunkt aufgelöst werden. v Geben Sie keine Makros für die ausführbaren Make-, Compiler- und Linkerdateien in der Befehlszeile an, wenn Sie 'make' aufrufen (z. B. make CC=gcc LD=ld). Was Ounce/Make unterstützt Ounce/Make unterstützt mehrere Computerplattformen, Compiler und make-Versionen. Plattformen Sie können Ounce/Make auf allen von AppScan Source unterstützten Plattformen ausführen. Make-Versionen Ounce/Make unterstützt die folgenden make-Versionen: v make: Das UNIX-Hilfsprogramm make ist ein Software-Engineering-Tool zur Verwaltung und Wartung von Computerprogrammen. v gmake: GNU Make ist ein Tool, das die Erzeugung ausführbarer Dateien und anderer Nicht-Quellendateien eines Programms aus den Quellendateien dieses Programms steuert. v nmake: NMAKE.exe (Microsoft Program Maintenance Utility) ist ein 32-Bit-Tool, das Projekte auf der Basis von Befehlen in einer Beschreibungsdatei erstellt. Compiler Ounce/Make unterstützt die folgenden Compiler: v GCC: GNU Compiler Collection. AppScan Source unterstützt die C- und C++Front-Ends. v cl: cl.exe ist der Compiler zu Microsoft Visual C++. 2 IBM Security AppScan Source Utilities: Benutzerhandbuch Betrieb Ounce/Make extrahiert mithilfe Ihrer Make-Datei die erforderlichen Konfigurationsdaten aus Ihren Makefiles und erstellt geeignete AppScan Source-Projektdateien (ppf). Zu diesem Zweck macht es Ounce/Make erforderlich, dass Sie bestimmte Angaben zur Buildumgebung machen, z. B. die verwendete Version von 'make'. Beschreiben Sie mit der Eigenschaftendatei die Buildumgebung (siehe „Ounce/Make-Eigenschaftendatei” auf Seite 8). Ounce/Make ausführen Sie können Ounce/Make aus jedem beliebigen Verzeichnis heraus ausführen, in dem ein Make-Befehl erfolgreich ausgeführt werden kann. In den meisten Fällen befindet sich die ausführbare Datei ouncemake nicht in dem Verzeichnis, in dem Sie sie aufrufen. Aus diesem Grund wird empfohlen, das Verzeichnis, das ouncemake enthält, zur Umgebungsvariablen PATH hinzuzufügen, um ouncemake ohne großen Aufwand aufrufen zu können. Wenn Ihr Quellcode und/oder Ihre Makefile im Verzeichnis \development\srcdir abgelegt sind, müssen Sie, um ouncemake auszuführen, zunächst in dieses Verzeichnis wechseln: %cd \development\srcdir Danach führen Sie ouncemake aus: %ouncemake <Optionen> Anmerkung: Aus Gründen der Abwärtskompatibilität wird der Befehl pmake noch akzeptiert. Allerdings wird pmake in einem zukünftigen Release möglicherweise entfernt. Projektdateien benennen Ounce/Make verwendet die in diesem Abschnitt beschriebenen Konventionen zur Benennung von AppScan Source-Projektdateien. v Beim Erstellen von AppScan Source-Projektdateien verwendet Ounce/Make den relativen Verzeichnispfad aus dem Verzeichnis, in dem Sie ouncemake aufgerufen haben, zu dem Verzeichnis, in dem ouncemake die Projektdatei erstellt. v Das Verzeichnis, in dem Sie ouncemake aufrufen, wird zur ersten Komponente des Pfadnamens. v Unterstriche ersetzen alle Pfadtrennzeichen wie z. B. Backslashs (\) unter Windows oder den Schrägstrich (/) unter Linux. v Wenn die Länge des Dateinamens die Begrenzungen des Betriebssystems überschreitet, streicht Ounce/Make links beginnend Komponenten des Pfades, bis die Dateinamenslänge den Benennungskonventionen des Systems entspricht. v Wenn Sie ouncemake im Stammverzeichnis eines Dateisystems ausführen (z. B. / oder c:\), erstellt ouncemake eine AppScan Source-Projektdatei namens root.ppf. AppScan Source speichert die erstellte .ppf-Datei an der Speicherposition neben der Makefile, die die ppf-Datei darstellt. Wenn Sie beispielsweise Ounce/Make ausführen und dabei eine einzelne Projektdatei erstellen, speichert AppScan Source die ppf-Datei in dem Verzeichnis, aus dem Sie Ounce/Make aufgerufen haben. Die ppf-Dateien, die im Mehrprojektmodus erstellt werden, sehen Sie in „Beispiel 2: Ounce/Make mit rekursiver Option” auf Seite 16. Kapitel 1. Builddienstprogramm Ounce/Make 3 Anmerkung: Wenn mehrere Makefiles in einem Verzeichnis vorhanden sind, erstellt Ounce/Make nur eine .ppf-Datei im Verzeichnis. Beispiel 1 Dieses Beispiel veranschaulicht eine ppf-Datei, die mit durch Unterstriche ersetzten Pfadtrennzeichen erstellt wurde. Rufen Sie ouncemake aus dem folgenden Verzeichnis auf: C:\development\source Im Verlauf der Ausführung erstellt Ounce/Make eine AppScan Source-Projektdatei in: C:\development\source\components\server Der Name der ppf-Datei lautet source_components_server.ppf: Path separator replacements source_components_server.ppf Directory that invoked ouncemake Subdirectories containing project file AppScan source project file extension Beispiel 2 Microsoft Windows und Linux begrenzen Pfad- und Dateinamen. Diese Betriebssysteme begrenzen die Anzahl der Zeichen auf 255. Beispiel 2 zeigt den Fall eines Dateinamens, der die Längenbegrenzung für Pfade überschreitet. Der Benutzer ruft Ounce/Make aus dem folgenden Verzeichnis auf: C:\path1\path2\path3\path4\path5\development\source Im Verlauf der Ausführung erstellt Ounce/Make ein AppScan Source-Projekt im folgenden Verzeichnis: C:\path1\path2\path3\path4\path5\development\source\components\server Wenn der Dateiname aufgrund von Pfadbegrenzungen maximal 25 Zeichen lang sein kann, lautet der resultierende Dateiname: components_server.ppf Projekt explizit benennen Sie können optional die Umgebungsvariable OUNCE_PROJ_NAME verwenden, um explizit einen Namen für ein neu erstelltes Projekt anzugeben. Definieren Sie die Umgebungsvariable OUNCE_PROJ_NAME=value wie jede andere Umgebungsvariable auch. Wenn der Name nicht festgelegt ist, wird er entsprechend der vorhandenen Projektnamenskonvention generiert. 4 IBM Security AppScan Source Utilities: Benutzerhandbuch So geben Sie beispielsweise den Projektnamen MyMakeProject über die Befehlszeile an: $(MAKE) $(MAKE_ARGS) all OUNCE_PROJ_NAME=MyMakeProject Ounce/Make-Ausgabe Bei der Ausführung generiert Ounce/Make eine Ausgabe, die Sie über bestimmte Ereignisse informiert. Die folgenden Ereignisse lösen Ausgabenachrichten aus: v Projekterstellung v Aufruf von Make v Fehler Projekterstellung Wenn Ounce/Make eine AppScan Source-Projektdatei erstellt, gibt es eine Nachricht aus, die den ppf-Namen einschließt. Das folgende Beispiel ist eine Ounce/ Make-Ausgabenachricht zur Projekterstellung: AppScan Source-Projekt ’<Projektname>.ppf’ wurde erstellt in Verzeichnis <Verzeichnis>. Aufruf von Make Wenn Ounce/Make die ausführbare Make-Datei aufruft, werden der Name der ausführbaren Datei und die Optionen ausgegeben. Das folgende Beispiel zeigt die Ausgabe, die generiert wird, wenn Ounce/Make Ihre Make-Datei aufruft. /usr/bin/gmake -f makefile.mk release Fehler Wenn bei der Ausführung ein Fehler auftritt, gibt Ounce/Make eine Fehlernachricht aus, die den Fehler beschreibt. Wenn der Fehler auftrat, während die ausführbare Make-Datei ausgeführt wurde, ist die angezeigte Fehlernachricht der Fehler der ausführbaren Make-Datei. Wenn der Fehler für Ounce/Make spezifisch war, wird eine passende Fehlernachricht angezeigt, die die Ounce/Make-Fehlerbedingung beschreibt. Ounce/Make-Befehlssyntax und Make-Optionen Ounce/Make unterstützt zahlreiche Optionen, die das Verhalten bei der Ausführung ändern können. Sie können diese Optionen in der Eigenschaftendatei festlegen (weitere Informationen in „Ounce/Make-Eigenschaftendatei” auf Seite 8) oder sie in die Befehlszeile einschließen. Wenn Sie die Optionen in der Eigenschaftendatei festlegen, ist es nicht erforderlich, sie bei jeder Ausführung von Ounce/Make erneut in der Befehlszeile anzugeben. Übersicht Ounce/Make unterstützt die folgende Syntax: ouncemake [options] [-- make_options] Kapitel 1. Builddienstprogramm Ounce/Make 5 Optionen Ein Bindestrich (-) muss allen Optionen vorangestellt werden. Sie müssen Optionen gesondert angeben, d. h., Sie dürfen sie nicht nach einem einzelnen Bindestrich in verketteter Form angeben. Beispielsweise wird die folgende Syntax des Befehls ouncemake -sr nicht unterstützt; Sie können aber Folgendes ausführen: ouncemake -s -r Anmerkung: Jede Option muss durch ein Leerzeichen getrennt sein. Wenn Sie Ounce/Make ausführen, können Sie die abgekürzte Option oder das vollständige Wort verwenden. Die folgende Tabelle enthält Spalten, die die einzelnen Optionen beschreiben. v Option: Gibt die Option an, die Ounce/Make beim Aufruf versteht. v Standard: Erläutert, sofern anwendbar, wie Ounce/Make standardmäßig vorgeht, wenn Sie die Option nicht angeben. v Beschreibung: Ounce/Make-Verhalten bei Verwendung dieser Option. Option Standard, wenn keine Option angegeben wird. -a <Anwendungsname> Inaktiv Wenn angegeben, erstellt Ounce/Make eine Anwendungsdatei namens <Anwendungsname>.paf, die alle von Ounce/Make erstellten Projekte enthält. Die Datei wird in dem Verzeichnis erstellt, in dem ouncemake ausgeführt wurde. Inaktiv Führt den Build bei der Zusammenstellung der MakeOptionen aus. -application <Anwendungsname> -b -build Beschreibung Diese Option ist nicht kompatibel mit Cygwin. -r Nicht rekursiv Ounce/Make folgt rekursiv allen Aufrufen anderer Makefiles. Wenn eine Makefile beispielsweise im Stammverzeichnis eines Quellcodebaums vorhanden ist, um alle Makefiles in den Unterverzeichnissen aufzurufen, dann bewirkt der Aufruf ouncemake -r in dem Verzeichnis, das die StammMakefile enthält, dass Ounce/Make den Aufrufen der Makefiles in den Unterverzeichnissen folgt. Nicht rekursiv Ounce/Make folgt den Aufrufen anderer Makefiles nicht. -recursive -nr -non_recursive 6 IBM Security AppScan Source Utilities: Benutzerhandbuch Option Standard, wenn keine Option angegeben wird. -s Mehrprojektmodus -single_project Beschreibung Einprojektmodus. Im Einprojektmodus generiert Ounce/Make nur eine einzelne Projektdatei in dem Verzeichnis, aus dem heraus es aufgerufen wurde. Sofern nicht anders angegeben, läuft Ounce/Make im Mehrprojektmodus. -ns Mehrprojektmodus Mehrprojektmodus. In diesem Modus generiert Ounce/Make eine AppScan Source-Projektdatei in jedem Verzeichnis, in dem es eine Makefile vorfindet. Nicht ausführlicher Modus Nicht ausführlicher Modus. Ounce/Make gibt nur seine eigenen Ausgabenachrichten aus. Make-Ausgaben werden unterdrückt. Ausführlicher Modus Ausführlicher Modus. Ounce/Make gibt die MakeAusgaben sowie seine eigene an die Standardausgabe aus. 1 (inaktiv) 1 bis 10. 10 bietet die ausführlichste Protokollierung. Inaktiv Falls angegeben, interpretiert Ounce/Make <Bereinigungsbefehl> als Befehl und führt ihn aus. <Bereinigungsbefehl> sollte der Befehl sein, den der Benutzer normalerweise zur Bereinigung ausführt. 'make clean' beispielsweise ist ein Befehl, der häufig zur Bereinigung ausgeführt wird. Beachten Sie, dass Sie den Befehl in Anführungszeichen setzen müssen. -non_single_project -m -multiple_project -nv -non_verbose -q -quiet -v -verbose -l log_level -c <Bereinigungsbefehl> -clean <Bereinigungsbefehl> Da Ounce/Make vor der Ausführung eine Bereinigung benötigt, wird, wenn Sie diese Option nicht angeben, eine Eingabeaufforderung angezeigt, die anfragt, ob Sie fortfahren möchten. -nc -no_clean Inaktiv Weist Ounce/Make an, 'clean' nicht auszuführen und keine Eingabeaufforderung anzuzeigen, die daran erinnert, dass keine Bereinigung ausgeführt werden wird. Kapitel 1. Builddienstprogramm Ounce/Make 7 Option Standard, wenn keine Option angegeben wird. -p <Eigenschaftendatei> nicht zutreffend Gestattet Benutzern die Angabe einer Eigenschaftendatei zur Verwendung durch Ounce/ Make. <Eigenschaftendatei> muss ein absoluter Pfad zu der Eigenschaftendatei sein, die Ounce/Make verwenden soll. -? nicht zutreffend Hilfe zu den Ounce/MakeOptionen. -h Beschreibung -help Ounce/Make-Eigenschaftendatei Die Ounce/Make-Eigenschaftendatei (ouncemake_properties.xml) ist eine XMLDatei, die Details zu Ihrer Buildumgebung enthält. Wenn Ounce/Make ausgeführt wird, sucht es die Eigenschaftendatei basierend auf dem Suchpfad oder der Option -p. In der Eigenschaftendatei müssen der in Ihrer Buildumgebung verwendete Compiler, der Linker und Make-Elemente angegeben sein. Informationen zu den erforderlichen und optionalen Elementen, die in der Eigenschaftendatei angegeben sind, finden Sie in „Ouncemake - Elemente der Eigenschaftendatei” auf Seite 9. Wenn Sie Ounce/Make ausführen und dabei die Option -p nicht in der Befehlszeile angeben, durchsucht Ounce/Make seinen Suchpfad nach der Datei ouncemake_properties.xml (Informationen zum Angeben von Optionen für die Befehlszeile finden Sie in „Ounce/Make-Befehlssyntax und Make-Optionen” auf Seite 5). Der Ounce/Make-Suchpfad ist plattformabhängig. Der Microsoft Windows-Suchpfad ist: v Aktuelles Arbeitsverzeichnis v <datenverzeichnis>\config (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird) Der Linux-Suchpfad ist: v Aktuelles Arbeitsverzeichnis v <datenverzeichnis>/config (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird) v Ausgangsverzeichnis des Benutzers v /etc Anmerkung: v Wenn Sie unter Linux nicht die Option -p angeben und die Eigenschaftendatei im Suchpfad nicht vorhanden ist, erstellt AppScan Source automatisch eine im aktuellen Arbeitsverzeichnis. 8 IBM Security AppScan Source Utilities: Benutzerhandbuch v Aus Gründen der Abwärtskompatibilität erkennt Ounce/Make auch pmake_properties.xml. Wenn sowohl pmake_properties.xml als auch ouncemake_properties.xml im selben Verzeichnis vorhanden sind, hat ouncemake_properties.xml Vorrang. Ouncemake - Elemente der Eigenschaftendatei OuncemakeProperties, das Stammelement der Eigenschaftendatei, enthält die Elemente, die in diesem Abschnitt aufgelistet sind. Erforderliche Elemente: v Compiler v Linker v Make Optionale Elemente: v MakeOptions v Options v GlobalProjectOptions v FileOptions v Executable v MountRoot Compiler Das Element Compiler gibt eine ausführbare Compilerdatei in Ihrer Buildumgebung an. Der Wert dieses Elements muss ein absoluter Pfad zu einer ausführbaren Datei sein. Dieses Element umfasst genau ein optionales Attribut macro, das den Namen der Variablen, die die ausführbare Compilerdatei bei der Erstellung speichert, und einen Wert angibt, der für den Pfad zum Compiler spezifisch ist. Wenn Sie das Attribut macro nicht angeben, setzt Ounce/Make das Attribut macro standardmäßig auf CC. Die Eigenschaftendatei kann mehrere Compiler-Elemente enthalten, doch ist mindestens eines erforderlich. Der Wert des Attributs macro muss für alle Compiler-Elemente eindeutig sein. Sie können beispielsweise CC nicht mehrmals als macro-Attribut auflisten. Beispiel <Compiler macro=CXX>/usr/bin/gcc</Compiler> Beschreibung CXX: Ihre Makefiles referenzieren diesen Compiler mit dem Makro CXX. /usr/bin/gcc: Informiert Ounce/Make darüber, dass Sie den Compiler /usr/bin/gcc verwenden. Linker Das Element Linker gibt eine ausführbare Linker-Datei an, die in der Buildumgebung verwendet wird. Der Wert dieses Elements muss ein absoluter Pfad zu einer ausführbaren Datei sein. Die Eigenschaftendatei kann mehrere Linker-Elemente enthalten, doch ist mindestens eines erforderlich. Kapitel 1. Builddienstprogramm Ounce/Make 9 Dieses Element umfasst genau ein Attribut macro, das den Namen der Variablen angibt, die die ausführbare Linker-Datei bei der Erstellung speichert. Wenn Sie das Attribut macro nicht angeben, wird LD zum Standardwert für macro von Linker. Der Wert des Attributs macro muss für alle Linker-Elemente eindeutig sein. Sie können beispielsweise LD nicht mehrmals als Linker-Attribut auflisten. Beispiel <Linker macro=LD>/usr/bin/ld</Linker> Beschreibung LD: Informiert Ounce/Make darüber, dass Sie das Makro LD verwenden. /usr/bin/ld: Informiert Ounce/Make darüber, dass Sie den Linker /usr/bin/ld verwenden. Make Das Element Make gibt eine ausführbare Make-Datei in Ihrer Buildumgebung an. Der Wert dieses Elements muss ein absoluter Pfad zu der ausführbaren Datei sein. Die Eigenschaftendatei kann mehrere Make-Elemente enthalten, doch ist mindestens eines erforderlich. Dieses Element umfasst genau ein Attribut macro, das den Namen der Variablen angibt, die die ausführbare Make-Datei bei der Erstellung speichert. Wenn Sie das Attribut macro nicht angeben, setzt Ounce/Make das Attribut standardmäßig auf MAKE. Der Wert des Make-Attributs macro muss für alle Make-Elemente eindeutig sein. Beispiel <Make macro=MAKE>/usr/bin/make</Make> Beschreibung v MAKE: Informiert Ounce/Make darüber, dass Sie das Makro MAKE verwenden. v /usr/bin/make: Informiert Ounce/Make darüber, dass Sie die Make-Datei in /usr/bin/make verwenden. MakeOptions Das Element MakeOptions gibt die Optionen an, die an die ausführbare Make-Datei übergeben werden müssen. Dieses Element ist optional und darf nicht mehrmals in der Eigenschaftendatei erscheinen. Beispiel <MakeOptions>-f makefile.mk release</MakeOptions> Beschreibung Die Optionen -f makefile.mk release werden an die ausführbare Make-Datei übergeben. 10 IBM Security AppScan Source Utilities: Benutzerhandbuch Options Das Element Options gibt Optionen an, die beim Aufruf an Ounce/Make übergeben werden. Dieses Element stellt eine Alternative zur Verwendung bestimmter Ounce/MakeBefehlszeilenoptionen dar, wie sie in „Ounce/Make-Befehlssyntax und Make-Optionen” auf Seite 5 beschrieben sind. Attribute verwenden folgende Syntax: <Option> = <true | false> Das Element Options und seine Attribute sind nicht erforderlich. Das Element Options kann die folgenden Attribute einschließen: Attribut Beschreibung recursive Boolescher Wert. Ist 'true' oder 'false'. Entspricht im Falle von 'true' der Befehlszeilenoption -r. single_project Boolescher Wert. Ist 'true' oder 'false'. Entspricht im Falle von 'true' der Befehlszeilenoption -s. verbose Boolescher Wert. Ist 'true' oder 'false'. Entspricht im Falle von 'true' der Befehlszeilenoption -v. clean Zeichenfolgewert in Anführungszeichen("), wie beispielsweise "make clean". Entspricht, sofern festgelegt, der Befehlszeilenoption -c. Der Wert sollte der Befehl sein, der auszuführen ist, um die Bereinigung auszuführen. Beispiel: gmake clean. build Boolescher Wert. Ist 'true' oder 'false'. Führt den Build bei der Zusammenstellung der Make-Optionen aus. Anmerkung: Nicht kompatibel mit Cygwin. application Zeichenfolgewert. Entspricht, sofern festgelegt, der Option -a. Der angegebene Wert sollte der gewünschte Anwendungsname sein. no_clean Boolescher Wert. Ist 'true' oder 'false'. Weist Ounce/Make an, 'clean' nicht auszuführen und zeigt keine Eingabeaufforderung an, die daran erinnert, dass keine Bereinigung ausgeführt werden wird. Anmerkung: Ounce/Make verwendet die Optionen, die in der Eigenschaftendatei festgelegt sind. Wenn Sie Ounce/Make jedoch mit in der Befehlszeile eingeschlossenen Optionen ausführen, haben diese Optionen Vorrang vor jenen, die in der Ei- Kapitel 1. Builddienstprogramm Ounce/Make 11 genschaftendatei festgelegt sind. Wenn Sie Ounce/Make ohne Optionen in der Befehlszeile ausführen, wendet Ounce/Make die Optionen in der Eigenschaftendatei an. Beispiel Nachfolgend eine Beispielzeile aus der Eigenschaftendatei, bei der alle Attribute verwendet werden: <Options recursive="true" single_project="false" verbose="false" clean="nmake.exe clean" no_clean="false"></Options> Beschreibung v recursive="true" v single_project="false" weist Ounce/Make an, im Mehrprojektmodus zu laufen. Beim Betrieb im Mehrprojektmodus sollte das Attribut 'recursive' ebenfalls auf true gesetzt werden. v verbose="false" inaktiviert die Ausführlichkeit. v clean="nmake.exe clean" bereinigt die Buildumgebung. v no_clean= "false" weist Ounce/Make an, einen 'clean'-Befehl auszuführen, wobei die Nachricht, die besagt, dass die Bereinigung ausgeführt wird, unterdrückt wird. GlobalProjectOptions Das Element GlobalProjectOptions gibt Optionen auf Projektebene für alle Dateien an, die im Projekt enthalten sind. Das Element GlobalProjectOptions und seine Attribute sind nicht erforderlich. Die folgende Liste beschreibt die Attribute für das Element GlobalProjectOptions: v include_paths: Zeichenfolgewert. Eine durch Semikola getrennte Liste von Include-Pfaden, die auf alle Dateien im Projekt angewendet werden können. v macros: Zeichenfolgewert. Eine durch Semikola getrennte Liste von Makros, die auf alle Dateien im Projekt angewendet werden können. v compiler_options: Zeichenfolgewert. Eine Liste der Compileroptionen, die auf alle Dateien im Projekt angewendet werden können. Geben Sie hier keine include-Pfade und Makros an. Beispiel Nachfolgend eine Beispielzeile aus der Eigenschaftendatei, bei der alle Attribute verwendet werden: <GlobalProjectOptions include_paths="/usr/include;/usr/local/include" macros="DEBUG;WIN32" compiler_options="-f non-const-strings"/> Beschreibung v include_paths="/usr/include;/usr/local/include" fügt den Pfad zum Abschnitt 'Includes' der Projektkonfiguration hinzu. v macros= "DEBUG;WIN32" fügt die Makros DEBUG und WIN32 zum Abschnitt 'Macros' der Projektkonfiguration hinzu. v compiler_options= fügt die Compileroptionen zum Abschnitt 'Options/ Command Line' der Projektkonfiguration hinzu. 12 IBM Security AppScan Source Utilities: Benutzerhandbuch FileOptions Das Element FileOptions ermöglicht die Angabe von Include-Pfaden, Makros und anderen Compileroptionen für Dateien mit einer bestimmten Erweiterung. Sie können FileOptions mehrfach verwenden, um verschiedene Optionen für Dateien mit unterschiedlichen Erweiterungen anzugeben. Wenn Sie beispielsweise wie nachfolgend gezeigt ein Projekt haben, das sowohl C- als auch C++-Dateien enthält, erstellen Sie zwei FileOptions-Elemente, nämlich je eines für jeden Dateityp. Die folgende Liste beschreibt die Attribute für das Element FileOptions: v extensions: Zeichenfolgewert. Eine durch Semikola getrennte Liste mit Dateierweiterungen. Jede Datei mit einer Erweiterung, die mit einer Erweiterung in dieser Liste übereinstimmt, übernimmt die von dieser Eigenschaft angegebenen Optionen. Wenn eine Dateierweiterung für mehrere Vorkommen der Eigenschaft FileOptions gilt, dann hat das erste Vorkommen in der Ounce/Make-Eigenschaftendatei Vorrang. v compiler_options: Zeichenfolgewert. Eine Liste der Compileroptionen, die auf alle Dateien mit der angegebenen Erweiterung angewendet werden können. Geben Sie hier keine include-Pfade und Makros an. v include_paths: Zeichenfolgewert. Eine durch Semikola getrennte Liste von include-Pfaden, die auf alle Dateien mit der angegebenen Erweiterung angewendet werden können. v macros: Zeichenfolgewert. Eine durch Semikola getrennte Liste von Makros, die auf alle Dateien mit der angegebenen Erweiterung angewendet werden können. Beispiele Die folgenden Beispiele für FileOptions zeigen, wie die Ounce/Make-Eigenschaftendatei konfiguriert werden muss, um die korrekten Optionen auf die C- und die C++-Dateien anzuwenden. Das Element FileOptions mit extensions="c" wendet seine anderen Attributwerte nur auf Dateien mit der Erweiterung c an (<Dateiname.c>). Das Element FileOptions mit extensions="cpp;cxx" wendet seine anderen Attributwerte nur auf Dateien mit den Erweiterungen cpp (<Dateiname.cpp>) oder cxx (<Dateiname.cxx>) an. <!-- g++-Optionen für C-Dateien --> <FileOptions extensions="c" compiler_options="-gcc_linux_i386" include_paths="/usr/local/include; /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include; /usr/include" macros=""/> <!-- g++-Optionen für C++-Dateien --> <FileOptions extensions="cpp;cxx" compiler_options="-g++_linux_i386" include_paths="/usr/include/c++/3.2.3; /usr/include/c++/3.2.3/i386-redhat-linux; /usr/include/c++/3.2.3/backward;/usr/local/include; /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include; /usr/include" macros="__GNUG__=3" /> Kapitel 1. Builddienstprogramm Ounce/Make 13 Beschreibung extensions="c" und extensions="cpp;cxx" gibt die Dateierweiterungen an, für die diese Dateioptionen gelten. Executable Das Element Executable ermöglicht die Verwendung beliebiger ausführbarer Dateien (außer compiler, linker, oder make) in der Buildumgebung. Der Wert dieses Elements muss ein absoluter Pfad zu einer ausführbaren Datei sein. Das Element Executable umfasst genau ein Attribut macro, das den Namen der Variablen angibt, die den Namen der ausführbaren Datei bei der Erstellung speichert. Der Wert des Attributs 'macro' muss für alle Executable-Elemente eindeutig sein. Die Eigenschaftendatei kann eine beliebige Anzahl Executable-Elemente enthalten. Das Element Executable ist optional und nur dann erforderlich, wenn Sie andere ausführbare Dateien in Ihrer Buildumgebung verwenden, die ein Fehlschlagen von Ounce/Make verursachen könnten. Durch Angeben dieser ausführbaren Dateien kann Ounce/Make einen Ausfall verhindern. Beispiel Nachfolgend eine Beispielzeile aus der Eigenschaftendatei: <Executable macro=ARCHIVE>/usr/bin/ar<Executable> Beschreibung Dieses Beispiel teilt Ounce/Make mit, dass der Build die ausführbare Datei /usr/bin/ar verwendet und dass die Makefiles diese ausführbare Datei mit dem Makro ARCHIVE referenzieren. MountRoot Das Element MountRoot ist erforderlich, wenn Sie Quellcode von einem fernen System aus beurteilen. MountRoot weist Ounce/Make an, den angegebenen Mountpunkt allen gefundenen absoluten include-Pfaden voranzustellen. Durch Angabe eines MountRoot-Elements fügt Ounce/Make die Option --remote_root implizit zur Liste der Compileroptionen in der resultierenden ppfDatei hinzu. MountRoot ist nur unter Linux gültig. Beispiel Nachfolgend eine Beispielzeile aus der Eigenschaftendatei: <MountRoot>/mnt/mount_point/usr/include</MountRoot> Beschreibung Wenn einer der angegebenen Include-Pfade /usr/include ist (z. B. gcc -I/usr/include ...stellt Ounce/Make /usr/include den Mountpunkt voran, sodass die resultierende ppf-Datei den korrekten Pfad enthält, z. B. /mnt/ mount_point/usr/include. 14 IBM Security AppScan Source Utilities: Benutzerhandbuch Beispieleigenschaftendateien Die AppScan Source-Installation umfasst die folgenden Beispiele für Eigenschaftendateien, die im Verzeichnis <datenverzeichnis>\config gespeichert sind (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird): v SampleOuncemakeProperties-Windows.xml v SampleOuncemakeProperties-Linux.xml Sie können diese Dateien ändern, um eine benutzerdefinierte Eigenschaftendatei zu erstellen. Wenn Sie mit XML nicht vertraut sind, verwenden Sie diese Beispiele als Schablonen, um Ihre Datei zu erstellen. Beispiele Dieser Abschnitt beschreibt drei Möglichkeiten zur Verwendung von Ounce/Make. „Beispiel 1: Ounce/Make ohne Optionen” auf Seite 16 veranschaulicht Ounce/ Make ohne Optionen. Hierbei wird eine einzige AppScan Source-Projektdatei erstellt, die nur auf der Makefile in dem Verzeichnis basiert, in dem Sie Ounce/Make aufrufen. „Beispiel 2: Ounce/Make mit rekursiver Option” auf Seite 16 verwendet Ounce/ Make mit der Option -r (rekursiv). Diese weist Ounce/Make an, rekursiv zu arbeiten und allen Aufrufen zu anderen Makefiles zu folgen. In „Beispiel 3: Ounce/Make im Einprojektmodus mit rekursiver Option” auf Seite 17 verwendet Ounce/Make sowohl die Option -r (rekursiv) als auch -s (Einprojektmodus). Hierbei wird eine einzelne AppScan Source-Projektdatei auf der Basis der rekursiven Verarbeitung aller Makefiles erstellt, die Ounce/Make vorfindet. Verzeichnisstruktur und Dateien Alle drei Beispiele verwenden dieselbe Verzeichnisstruktur und dieselben Dateien: Directory: /usr/source Contents: makefile, *.c, *.h Directory: /usr/source/database Contents: makefile, *.sql Directory: /usr/source/server Contents: makefile, *.c, . *.h Dieses Diagramm zeigt ein Stammverzeichnis (/usr/source), das eine Makefile und Quellendateien enthält. Das Verzeichnis /usr/source enthält die beiden Unterverzeichnisse /usr/source/database und /usr/source/server. Das Verzeichnis /usr/source/database enthält eine Makefile und SQL-Dateien. Das Verzeichnis /usr/source/server enthält eine Makefile und Quellendateien. Bei diesem Beispiel gelten die folgenden Voraussetzungen für die drei Makefiles: Kapitel 1. Builddienstprogramm Ounce/Make 15 v Die Makefile in /usr/source erstellt die Quellendateien in /usr/source und ruft die Makefiles in /usr/source/database und /usr/source/server auf. v Die Makefile in /usr/source/database importiert die SQL-Dateien in eine Datenbank. v Die Makefile in /usr/source/server erstellt die Quellendateien in /usr/source/ server. Beispiel 1: Ounce/Make ohne Optionen Dieses Beispiel veranschaulicht die nichtrekursive Verwendung von Ounce/Make. Im nichtrekursiven Modus berücksichtigt Ounce/Make nur die Makefile in dem Verzeichnis, aus dem es aufgerufen wurde. Wenn die Original-Makefile Aufrufe anderer Makefiles enthält, ignoriert Ounce/Make diese. In diesem Beispiel wird Ounce/Make aus /usr/source ausgeführt. In „Verzeichnisstruktur und Dateien” auf Seite 15 finden Sie eine grafische Erläuterung der Verzeichnisstruktur und der Dateien, die im vorliegenden Beispiel vorausgesetzt werden. Befehl ouncemake Das folgende Diagramm zeigt den Inhalt der Verzeichnisse nach der Ausführung von Ounce/Make: Directory: /usr/source Contents: source.ppf, makefile, *.c, *.h Directory: /usr/source/database Contents: makefile, *.sql Directory: /usr/source/server Contents: makefile, *.c, *.h Nach der Ausführung von Ounce/Make enthält /usr/source nun eine AppScan Source-Projektdatei namens source.ppf. Diese Projektdatei enthält alle notwendigen Angaben zur Beurteilung aller Quellendateien in /usr/source. Ounce/Make im nichtrekursiven Modus ignoriert die Aufrufe in der Makefile in /usr/source, das die Makefiles in /usr/source/database und /usr/source/server aufruft. Beispiel 2: Ounce/Make mit rekursiver Option Mit der Option -r arbeitet Ounce/Make rekursiv (d. h. Aufrufen anderer Makefiles, die in einer Makefile enthalten sind, wird gefolgt). Da der Mehrprojektmodus bei Verwendung der Option -r der Standardmodus ist, erstellt Ounce/Make eine AppScan Source-Projektdatei für jede vorgefundene Makefile, die Quellcode kompiliert. In „Verzeichnisstruktur und Dateien” auf Seite 15 finden Sie eine grafische Erläuterung der Verzeichnisstruktur und der Dateien, die im vorliegenden Beispiel vorausgesetzt werden. 16 IBM Security AppScan Source Utilities: Benutzerhandbuch Befehl ouncemake -r Die Option -r (rekursiv) weist Ounce/Make an, den Makefile-Aufrufen zu anderen Makefiles zu folgen. Eine ausführlichere Beschreibung der Rekursivoption entnehmen Sie der Tabelle in „Ounce/Make-Befehlssyntax und Make-Optionen” auf Seite 5. Das folgende Diagramm zeigt den Inhalt der Verzeichnisse nach der Ausführung von Ounce/Make: Directory: /usr/source Contents: source.ppf, makefile, *.c, *.h Directory: /usr/source/database Contents: makefile, *.sql Directory: /usr/source/server Contents: source_server.ppf, makefile, *.c, *.h In diesem Beispiel erstellt Ounce/Make eine AppScan Source-Projektdatei in /usr/source und /usr/source/server. Da die Makefile in /usr/source die Makefiles in /usr/source/database und /usr/source/server aufgerufen hat, hat Ounce/ Make geprüft, ob diese Makefiles Quellcode kompiliert haben. Im Fall der Makefile in /usr/source/database hat Ounce/Make festgestellt, dass diese Makefile keinen Quellcode kompiliert; aus diesem Grund wurde keine AppScan Source-Projektdatei erstellt. Allerdings wurde von Ounce/Make festgestellt, dass die Makefile in /usr/source/server die Quellendateien in diesem Verzeichnis kompiliert hat, und Ounce/Make erstellte daraufhin eine AppScan SourceProjektdatei für die Quellendateien in /usr/source/server. Beispiel 3: Ounce/Make im Einprojektmodus mit rekursiver Option Beispiel 3 veranschaulicht die rekursive Verwendung von Ounce/Make im Einprojektmodus. Ounce/Make generiert eine einzelne AppScan Source-Projektdatei für eine Kombination des Quellcodes, der von allen vorgefundenen Makefiles kompiliert wurde. In „Verzeichnisstruktur und Dateien” auf Seite 15 finden Sie eine grafische Erläuterung der Verzeichnisstruktur und der Dateien, die im vorliegenden Beispiel vorausgesetzt werden. Führen Sie den folgenden Befehl aus dem Verzeichnis /usr/source heraus aus: Befehl ouncemake -r -s Die Option -r (rekursiv) weist Ounce/Make an, den Makefile-Aufrufen zu anderen Makefiles zu folgen. Eine ausführlichere Beschreibung der Rekursivoption entnehmen Sie der Tabelle in „Ounce/Make-Befehlssyntax und Make-Optionen” auf Seite 5. Kapitel 1. Builddienstprogramm Ounce/Make 17 Die Option -s weist Ounce/Make an, nur eine einzelne AppScan Source-Projektdatei in dem Verzeichnis zu erstellen, aus dem heraus es aufgerufen wurde, statt für jede vorgefundene Makefile ein neues Projekt zu erstellen. Das folgende Diagramm zeigt den Inhalt der Verzeichnisse nach der Ausführung von Ounce/Make. Directory: /usr/source Contents: source.ppf, makefile, *.c, *.h Directory: /usr/source/database Contents: makefile, *.sql Directory: /usr/source/server Contents: makefile, *.c, *.h Eine einzelne AppScan Source-Projektdatei ist in /usr/source vorhanden. Diese AppScan Source-Projektdatei enthält die Konfigurationsdaten für den gesamten Quellcode in /usr/source und /usr/source/server. 18 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) Die CLI bildet die Schnittstelle zur Kernfunktionalität von AppScan Source. Die CLI unterstützt die Ausführung der Funktionen von AppScan Source über die Befehlszeile oder die Ausführung von Scriptdateien, die bei einer interaktiven Sitzung ausgegebene Befehle aufzeichnen. Die CLI gibt während der Ausführung Rückmeldungen für den Benutzer, die an der Konsole oder optional in eine Protokolldatei ausgegeben werden. Objekte und Kontext Die AppScan Source-Objektbaumstruktur Die Objektbaumstruktur zeigt die grundlegende Struktur der Objekte in AppScan Source an. Sie können alle Objekte (Anwendungen, Projekte oder Quellendateien) in der Baumstruktur überprüfen. AppScan Source root AllApplications>> Application (*.paf) Project (*.ppf, *.vbproj, *.jsproj, etc.) Source Source ... Project Source Source Project Application (*.paf) © Copyright IBM Corp. 2003, 2015 Project 19 Aktive Objekte und aktueller Kontext Viele Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI) sind nur im aktuellen Kontext anwendbar, also im Arbeitsverzeichnis oder auf eine angegebene Datei. Verwenden Sie den Befehl SetCurrentObject (SET, CD), um zu dem Objekt zu gelangen, bevor Sie Befehle aufrufen, die nur im aktuellen Kontext gültig sind. Außerdem sind einige Befehle der CLI nur auf aktive Objekte anwendbar. Das kann die aktuell ausgewählte Quellendatei, ein Projekt oder eine Anwendung mit einer Beurteilung sein. Berechtigungen für die AppScan Source-Befehlzeilenschnittstelle (CLI) Für viele CLI-Befehle ist es erforderlich, dass Sie über die entsprechenden AppScan Source-Berechtigungen verfügen. Wenn Sie keine Berechtigung für eine bestimmte Aktion haben, erscheint eine Fehlernachricht. Dabei ist zu beachten, dass die CLI-Befehle Scan (SC), Publish und Report (RPT) eine Lizenz für AppScan Source for Automation erfordern. Wenden Sie sich an Ihren Administrator, wenn Sie weitere Informationen benötigen. AppScan Source-Befehlzeilenschnittstelle (CLI) starten v Führen Sie auf Windows-Systemen die Datei <installationsverzeichnis>\bin\ AppScanSrcCli.exe aus (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Beispiel für Windows (32-Bit): C:\Programme\IBM\AppScanSource\bin\AppScanSrcCli.exe v Führen Sie auf Linux-Systemen <installationsverzeichnis>/bin/appscansrccli aus. Beispiel: /opt/ibm/appscansource/bin/appscansrccli Die CLI ermöglicht beim Anwendungsstart die Übergabe eines einzigen gültigen Befehls in der Befehlszeile. Beispiel: Die CLI übergibt den Befehl script zur automatischen Ausführung einer vollständigen CLI-Sitzung. <installationsverzeichnis>\bin\AppScanSrcCli script myscript.txt AppScan Source-Befehlzeilenschnittstelle (CLI) in Landessprachen anzeigen In diesem Abschnitt werden die Schritte beschrieben, die erforderlich sind, um die CLI in verschiedenen Landessprachen anzuzeigen. Vorgehensweise v Öffnen Sie die Datei <datenverzeichnis>\config\cli.cp in einem Texteditor (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). Fügen Sie die folgende Zeile der Datei hinzu: -Duser.language=<sprache> 20 IBM Security AppScan Source Utilities: Benutzerhandbuch Hierbei ist <sprache> die Sprache, die Sie anzeigen wollen. Folgende Werte werden unterstützt: – de für Deutsch – es für Spanisch – fr für Französisch – it für Italienisch – ja für Japanisch – ko für Koreanisch – ru für Russisch – pt_BR oder pt-BR für brasilianisches Portugiesisch – zh_CN oder zh-CN für vereinfachtes Chinesisch – zh_TW oder zh-TW für traditionelles Chinesisch Speichern Sie die Datei, nachdem Sie diese Zeile hinzugefügt haben. v Öffnen Sie die Datei <datenverzeichnis>\config\ounce.ozsettings in einem Texteditor. Suchen Sie die Einstellung locale in der Datei. Diese Einstellung ist der folgenden ähnlich: <Setting name="locale" value="" default_value="" description="The language (and optionally the Country/Region) in which UI and messages should be displayed. E.g. fr for French, or pt-BR for Portuguese (Brazil)" display_name="Locale" type="text" available_values="" read_only="false" hidden="false" force_upgrade="false" /> Ändern Sie in dieser Einstellung das Attribut value, so dass dafür die gleiche Spracheinstellung festgelegt ist, die im obigen Schritt angegeben wurde. Beispiel: wenn Sie im obigen Schritt -Duser.language=de, hinzugefügt haben, ändern Sie das Attribut value in value="de". Speichern Sie die Datei, nachdem Sie diese Einstellung geändert haben. v Starten Sie die CLI (wenn diese Änderungen vorgenommen wurden, während die CLI bereits ausgeführt wurde, müssen Sie die CLI neu starten). Befehlssyntax Die Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI) entsprechen einer Syntaxvorlage, die erforderliche und optionale Argumente enthält und einer Befehlsshell gleicht. Bei Befehlen der CLI muss die Groß-/Kleinschreibung nicht beachtet werden und sie erfordern keine Schalter zwischen verschiedenen Argumenten. Die Syntax für alle CLI-Befehle lautet wie folgt: Befehl erforderliche_Argumente [optionale_Argumente] Die Beschreibungen der Befehle und deren Verwendung halten an den folgenden Konventionen fest: v Befehl: Der eigentliche Befehl, an der Schriftart Courier fett erkenntlich. v Erforderliche Argumente: erkenntlich an der Schriftart Courier. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 21 Literale: erkenntlich an der Kursivschrift. Optionale Argumente: in eckigen Klammern [ ]. Erforderliche Argumente mit Optionen: in geschweiften Klammern {}. Einige Argumente benötigen zugeordnete Werte (erkennbar an den spitzen Klammern < >). Wenn diese Argumente ohne Werte verwendet werden, wird eine Fehlernachricht angezeigt. v Alle Befehle bestehen aus einem ausgeschriebenen Namen und einer Kurzform. Die Kurzform können Sie in runden Klammern in der Befehlsüberschrift finden. v Alle Befehlsnamen bestehen aus einem Wort ohne Leerzeichen oder Tabulatoren. v Argumente benötigen zwar keine Befehlsschalter, sind aber abhängig von der Reihenfolge. v v v v Wichtig: Diese Abhängigkeit von der Reihenfolge ist wichtig. Argumente können Leerzeichen und Tabulatoren enthalten. Schließen Sie Argumente, die Leerzeichen oder Tabulatoren enthalten, in einfache Anführungszeichen ein (’ ’), da sie sonst syntaktisch als multiple Argumente analysiert werden. Befehle für die AppScan Source-Befehlzeilenschnittstelle (CLI) Dieser Abschnitt beschreibt alle verfügbaren Befehle der CLI, erforderliche und optionale Argumente sowie Beispiele. Jeder Befehl entspricht einer bestimmten Befehlskategorie, wie in „Zusammenfassung der Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI)” beschrieben. Alle Befehle bestehen aus einem ausgeschriebenen Namen und einer Kurzform. Der Befehl zum Überprüfen einer Anwendung, eines Projekts oder einer Datei und zur Erstellung einer Beurteilung lautet beispielsweise scan mit der Kurzform sc. Zusammenfassung der Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI) Die folgende Tabelle enthält Befehle für die CLI, eine Beschreibung jedes Befehls und die Angabe, ob eine Anmeldung erforderlich ist. Tabelle 1. Befehle für die CLI 22 Befehl und Kurzform Beschreibung about (a) Zeigt die Befehlszeilenversion und Copyrightvermerke für AppScan Source an. delete (del) Löscht ein untergeordnetes Ja Objekt des aktuellen Objekts. deleteassess (da) Dieser Befehl wurde umbenannt. Weitere Informationen hierzu finden Sie in removeassess (da). deleteuser (du) Löscht einen Benutzer aus der AppScan Source-Datenbank. delvar (dv) Löscht eine einzelne Variable. Ja IBM Security AppScan Source Utilities: Benutzerhandbuch Anmeldung erforderlich Ja Tabelle 1. Befehle für die CLI (Forts.) Befehl und Kurzform Beschreibung Anmeldung erforderlich details (det) Zeigt Details der Beurteilung Ja des aktuellen Objekts an. echo Meldet alle Ein- und Ausgaben an den Bildschirm zurück. getaseinfo (gase) Zeigt die Einstellungen für den AppScan Enterprise Server an. help (?) Zeigt Hilfetexte für alle Befehle oder einen einzelnen Befehl an. import (im) Verwenden Sie den Befehl import, um Projekte (wie .ppf) einer bestehenden Anwendung hinzuzufügen. Ja info (i) Zeigt Informationen zu den Eigenschaften und Werten des aktuellen Objekts an. Ja list (ls, dir) Ja Zeigt alle untergeordneten Objekte des aktuellen Objekts in der Objektbaumstruktur an. Die Baumstruktur wird als grafische Darstellung von ObjektID, name und Typ angezeigt. listassess (la) Zeigt die Objekt-ID und Datum/Uhrzeit der Beurteilung für das aktuelle Objekt in der Objektbaumstruktur an. Verwenden Sie listassess, um eine ID für die Verwendung mit dem Befehl details zu erhalten. Ja listgroups (lgrp) Zeigt alle Gruppen, deren Berechtigungen und eine Beschreibung jeder Gruppe an. Ja listusers (lu) Listet alle AppScan SourceBenutzer auf. Ja log Schaltet die Nachrichtenprotokollierung ein oder aus. login (in) Meldet den Benutzer bei AppScan Enterprise Server an (ersetzt login_local (local)). Ja Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 23 Tabelle 1. Befehle für die CLI (Forts.) 24 Befehl und Kurzform Beschreibung Anmeldedatei Melden Sie sich bei AppScan Enterprise Server unter Verwendung einer Tokendatei an (Tokendateien werden mit der Option -persist des CLI „login (in)” auf Seite 35Befehls oder beim Erstellen des AppScan Source for Automation-Benutzers generiert). logout (out) Meldet den Benutzer von AppScan Source ab und beendet die AppScan SourceBefehlzeilenschnittstelle (CLI)-Sitzung der Befehlszeilenschnittstelle. Ja moduser (mu) Modifiziert Benutzerinformationen wie Berechtigungen, Benutzer-ID und namen für einen Benutzer von AppScan Source. Ja newuser (nu) Erstellt einen neuen AppScan Ja Source-Benutzer (ein gültiger Benutzername, Kennwort, vollständiger Name und EMail-Adresse sind erforderlich). AppScan SourceBenutzer können im Benutzerrepository von AppScan Enterprise Server sowie in der AppScan Source-Date nbank enthalten sein. Wenn es Benutzer gibt, die nicht auf den Server zugreifen sollen, können diese lokal als AppScan SourceBenutzer erstellt werden. Sie haben auch die Möglichkeit, einen neuen AppScan Source-Benutzer zu erstellen, der bereits auf dem AppScan Enterprise Server eingerichtet ist. openapplication (oa) Dieser Befehl kann verwenJa det werden, um eine vorhandene Anwendung zu öffnen, oder um eine neue AppScan Source-Anwendungsdatei zu erstellen. openassessmentfile (oaf) Öffnet eine Beurteilungsdatei Ja für AppScan Source (file_name.ozasmt). IBM Security AppScan Source Utilities: Benutzerhandbuch Anmeldung erforderlich Tabelle 1. Befehle für die CLI (Forts.) Befehl und Kurzform Beschreibung Anmeldung erforderlich password (passwd) Ja Sie können den Befehl password dazu verwenden, Ihr Kennwort oder, mit entsprechenden Administratorberechtigungen, das Kennwort eines anderen Benutzers zu ändern. printuser (pu) Der Befehl printuser (pu) Ja zeigt Informationen zu einem einzelnen Benutzer auf dem Bildschirm an. publishassess (pa) Ja Veröffentlicht die aktuelle Beurteilung oder eine ausgewählte Beurteilung in AppScan Source-Datenbank. Bei Verwendung dieses Befehls wird die Beurteilung einem AppScan Source-Client wie z.B. AppScan Source for Analysis zugänglich gemacht, jedoch nicht der AppScan Enterprise Console (verwenden Sie den Befehl „publishassessase (pase)” auf Seite 45, um sie in der AppScan Enterprise Console zu veröffentlichen). publishassessase (pase) Ja Veröffentlicht die aktuelle Beurteilung oder eine ausgewählte Beurteilung in AppScan Enterprise Console. Bei Verwendung dieses Befehls wird die Beurteilung AppScan Source-Clients wie z.B. AppScan Source for Analysis nicht zugänglich gemacht (verwenden Sie den Befehl „publishassess (pa)” auf Seite 43 für die Veröffentlichung in AppScan SourceClients). quit Beendet und schließt die aktuelle Sitzung der Befehlszeilenschnittstelle von AppScan Source. Ein Abmeldung erfolgt, wenn Sie angemeldet waren. record (rc) Schaltet die Befehlsaufzeichnung ein oder aus. refresh (rf) Refresh stellt das aktuelle Ja Projekt oder die aktuelle Anwendung von einem Datenträger wieder her. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 25 Tabelle 1. Befehle für die CLI (Forts.) Befehl und Kurzform Beschreibung Anmeldung erforderlich register (reg) Registriert Projekte und Anwendungen in der AppScan Source-Datenbank. Ja removeassess (da) Löscht die ausgewählte oder aktuelle Beurteilung im Hauptspeicher. Ja report (rpt) Ja Der Befehl Report erstellt einen Bericht des angegebenen Typs für AppScan Source, der Berichte über Untersuchungsergebnisse und AppScan Source-Berichte enthält. Zur Verwendung dieses Befehls ist eine gültige AppScan Source for Automation-Lizenz erforderlich. scan (sc) Durchsucht eine Anwendung Ja (oder alle Anwendungen), ein Projekt oder eine Datei, Zur Verwendung dieses Befehls ist eine gültige AppScan Source for Automation-Lizenz erforderlich. script (scr) Führt ein Befehlsscript aus. setaseinfo (sase) Legt die Einstellungen für Enterprise Console fest. setcurrentobject (set, cd) Ja Verwenden Sie setcurrentobject zum Navigieren in der Objektbaumstruktur. setvar (sv) Erstellt eine neue Variable oder ändert eine bestehende Variable. Ja unregister (unreg) Nimmt die Registrierung einer zuvor registrierten Anwendung oder eines registrierten Projekts des aktuellen Knotens zurück. Ja Ja Die folgenden Befehle wurden aus der CLI entfernt oder werden nicht weiter unterstützt: v add: Wird nicht weiter unterstützt. Bitte nicht verwenden. v listproducts (lprod): Wird nicht weiter unterstützt. Bitte nicht verwenden. v liststopobject (lstop): Wird nicht weiter unterstützt. Bitte nicht verwenden. v v v v v 26 login_admin: Wurde entfernt. Bitte nicht verwenden. login_local (local): Wird nicht weiter unterstützt. Verwenden Sie login (in). new: Wird nicht weiter unterstützt. Verwenden Sie openapplication (oa). reset (r): Wurde entfernt. Bitte nicht verwenden. runassess (ra): Wird nicht weiter unterstützt. Verwenden Sie scan (sc). IBM Security AppScan Source Utilities: Benutzerhandbuch about (a) Beschreibung Zeigt die Befehlszeilenversion und Copyrightvermerke für AppScan Source an. Syntax about Beispiel AllApplications>> About -------------------------------------------------------------------------------| Security AppScan Source 8.5.0.0 Build 175. | | Lizenziertes Material - Eigentum der IBM Corp. (C) Copyright IBM | Corp. und ihre Lizenzgeber 2003, 2011. Alle Rechte vorbehalten. IBM, | das IBM Logo, ibm.com, Rational, AppScan und ClearQuest sind | Marken oder eingetragene Marken der International Business | Machines Corp. | Weitere Produkt- und Servicenamen können Marken von IBM oder | anderen Herstellern sein. Eine aktuelle Liste der IBM Marken finden Sie | auf der Webseite ’Copyright and trademark information’ unter | www.ibm.com/legal/copytrade.shtml. Linux ist eine eingetragene | Marke von Linus Torvalds in den USA und/oder | anderen Ländern. Microsoft, Windows, Windows NT und das | Windows Logo sind Marken der Microsoft Corporation in den | USA und/oder anderen Ländern. UNIX ist eine eingetragene | Marke von The Open Group in den USA und anderen | Ländern. Java und alle auf Java basierenden Marken und Logos sind | Marken von Sun Microsystems, Inc. in den USA | und/oder anderen Ländern. | | Dieses Programm beinhaltet: Jacorb 2.3.0, Copyright 1997-2006 Das | Projekt JacORB; Jericho HTML Parser 2.1, Copyright 2005 Martin | Jericho; und XOM 1.0d22, Copyright 2003 Elliotte Rusty Harold, | die alle unter der Gnu Library General Public License | (LGPL) verfügbar sind, wovon eine Kopie in der Notices-Datei, | die diesem Programm beigefügt wurde, enthalten ist. -------------------------------------------------------------------------------- delete (del) Beschreibung Löscht ein untergeordnetes Objekt des aktuellen Objekts. Verwenden Sie den Befehl list (ls, dir), um die untergeordneten Elemente des aktuellen Objekts anzuzeigen. Geben Sie den Namen oder die ID des untergeordneten Objekts an, das Sie löschen möchten. Syntax del {Name|ID Objekt-ID} v Name: Name des untergeordneten Objekts. Verwenden Sie den Befehl list, um alle untergeordneten Elemente des aktuellen Objekts anzuzeigen. v ID: Literal. Zeigt an, dass eine Löschung nach Objekt-ID stattfindet. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 27 v Objekt-ID: Erforderliches Argument bei Löschung nach ID. Die Objekt-ID ist die numerische ID des untergeordneten Elements, das gelöscht werden soll. Beispiele v Gehen Sie wie folgt vor, um eine Anwendung mit dem Namen App1 zu löschen: AllApplications>> Delete App1 v Gehen Sie wie folgt vor, um ein Projekt mit der ID 40 zu löschen: AllApplications\App1>> Delete id 40 deleteassess (da) Dieser Befehl wurde umbenannt. Weitere Informationen hierzu finden Sie in removeassess (da). deleteuser (du) Beschreibung Löscht einen Benutzer aus der AppScan Source-Datenbank. Syntax du Benutzername Benutzername: Der zu löschende AppScan Source-Benutzer. Beispiel Gehen Sie wie folgt vor, um den Benutzer agraham zu löschen: AllApplications>> deleteuser agraham AllApplications>> Benutzer ’agraham’ wurde gelöscht. delvar (dv) Beschreibung Löscht eine einzelne Variable. Syntax delvar <Variablenname> Variablenname: Der Name der Variablen, die gelöscht werden soll. Wenn eine Variable mit diesem Namen existiert, wird sie unverzüglich gelöscht und es wird eine Nachricht über die erfolgreiche Ausführung angezeigt. Beispiel Gehen Sie wie folgt vor, um die Variable myvar zu löschen: AllApplications>> delvar myvar Variable ’%myvar%’ wurde gelöscht. 28 IBM Security AppScan Source Utilities: Benutzerhandbuch details (det) Beschreibung Zeigt Details der Beurteilung des aktuellen Objekts an. Ruft Details einer laufenden oder nach der Beurteilungs-ID ausgewählten Beurteilung ab. Verwenden Sie listassess (la), um eine Liste von Beurteilungen mit den zugehörigen IDs abzurufen. Tipp: Verwenden Sie den Befehl log, um die Protokollierung zu aktivieren, bevor Sie den Befehl details ausführen. Sie können eine Protokolldatei in durch Kommas getrenntem Text (Format .csv) erstellen, die in Microsoft Excel oder einem anderen Programm, das CSV-Daten akzeptiert, geöffnet werden kann. Syntax details [ID] ID: Die Objekt-ID einer Beurteilung der aktuellen Sitzung. Wenn keine ID angegeben wird, werden Details der letzten Beurteilung angezeigt (oder an eine Protokolldatei gesendet). Beispiel Gehen Sie wie folgt vor, um Details der letzten Beurteilung anzuzeigen: AllApplications\Myapps>> details Datei, Zeile, Spalte, Name, Typ, Schweregrad, Zuverlässigkeit C:\MyApps\WebGoat\webgoat\src\lessons\CommandInjection.java , 119 , 0 , java.lang.Throwable.printStackTrace , Vulnerability.Info , 3-SeverityType_info , 3-ConfidenceType_low . . . C:\MyApps\WebGoat\webgoat\src\session\ECSFactory.java , 625 , 0 , java.lang.String.equalsIgnoreCase , Vulnerability.Info , 3-SeverityType_info , 3-ConfidenceType_low ------------------Gesamtzahl der Aufrufseiten: 1283 Gesamtzahl der definitiven Security-Ergebnisse mit hohem Schweregrad: 10 Gesamtzahl der definitiven Security-Ergebnisse mit mittlerem Schweregrad: 15 Gesamtzahl der definitiven Security-Ergebnisse mit niedrigem Schweregrad: 53 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit hohem Schweregrad: 24 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit mittlerem Schweregrad: 25 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit niedrigem Schweregrad: 6 Gesamtzahl der Scan-Abdeckungsergebnisse mit hohem Schweregrad: 123 Gesamtzahl der Scan-Abdeckungsergebnisse mit mittlerem Schweregrad: 69 Gesamtzahl der Scan-Abdeckungsergebnisse mit niedrigem Schweregrad: 56 Gesamtzahl der Zeilen: 17197 Max. S-Dichte: 929.8482293423273 Max. V/KLoC: 22.155027039599933 S-Dichte: 929.8482293423273 V/KLoC: 22.155027039599933 Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 29 echo Beschreibung Meldet alle Ein- und Ausgaben an den Bildschirm zurück. Wird normalerweise in Scripts verwendet. Syntax echo Beispiel Gehen Sie wie folgt vor, um Kommentare auszugeben: 3/11/08 2:15 PM 3/11/08 2:16 PM 3/11/08 2:16 PM AllApplications>> echo "Dies ist ein Test" Dies ist ein Test getaseinfo (gase) Beschreibung Zeigt die Einstellungen für den AppScan Enterprise Server an. Dieser Befehl zeigt die Konfiguration von AppScan Enterprise Server an, die mit dem Befehl setaseinfo (sase) festgelegt wurde. Syntax getaseinfo Anmerkung: v Sie müssen bei der AppScan Source-Befehlzeilenschnittstelle (CLI) mit der Berechtigung AppScan Enterprise-Einstellungen verwalten angemeldet sein, um einen Wert für url festlegen zu können. Informationen zu Benutzeraccounts und Berechtigungen finden Sie im Abschnitt AppScan Source verwalten im IBM Security AppScan Source Installations- und Administrationshandbuch. v Der benutzername und das kennwort werden auf der Maschine gespeichert, auf der der AppScan Source-Client (z. B. AppScan Source for Analysis) ausgeführt wird, während url auf dem Enterprise Server gespeichert wird (der sich auf einer fernen Maschine befinden kann). Sie können auf die Informationen benutzername und kennwort von der fernen Maschine aus zugreifen (beispielsweise, indem Sie den Befehl getaseinfo von dieser Maschine aus absetzen). Beispiel AllApplications>> getaseinfo Benutzername: meine_Domäne\mein_Benutzername URL: http://my_aseserver/ase help (?) Beschreibung Zeigt Hilfetexte für alle Befehle oder einen einzelnen Befehl an. 30 IBM Security AppScan Source Utilities: Benutzerhandbuch Die Hilfetexte der AppScan Source-Befehlzeilenschnittstelle (CLI) zeigen für die einzelnen Befehle die Befehlssyntax, Aliasnamen und Anwendungsbeispiele an. Hilfe ist bei einzelnen Befehlen verfügbar. Sie können aber auch eine Liste aller Befehle mit einer kurzen Übersicht über jeden Befehl anfordern. Syntax help [Befehl] Befehl: Der Befehl der CLI, zu dem Sie die Onlinehilfe anzeigen möchten. Sie müssen sich auf einer entsprechenden Ebene der Baumstruktur befinden, damit Hilfetext für ein bestimmtes Objekt verfügbar ist. Beispiele v Gehen Sie wie folgt vor, um Hilfetext für alle gültigen Befehle anzuzeigen: AllApplications>> ? v Gehen Sie wie folgt vor, um Hilfetext für den Befehl register (reg) anzuzeigen: AllApplications>> Help register import (im) Beschreibung Verwenden Sie den Befehl import, um Projekte (wie .ppf) einer bestehenden Anwendung hinzuzufügen. Wenn dieser Befehl zum Hinzufügen eines Projekts verwendet wird, werden folgende Projektdateien unterstützt: v AppScan Source-Projektdateien (.ppf). v Microsoft Visual Studio C/C++ (.vcproj) v Microsoft Visual Studio C# (.csproj) v Microsoft Visual Studio Visual Basic (.vbproj) Sie können beim Projektimport anstatt der vollständigen Dateinamen und/oder Dateierweiterungen Platzhalterzeichen verwenden. Sie können auch ein zusätzliches Argument angeben, um alle Projekte im angegebenen Verzeichnis zu importieren (rekursiver Bericht). Syntax import Pfad [true|false] v Die Anzahl der Argumente hängt von der Art der importierten Objekte ab. v Pfad: Vollständiger Pfad des importierten Objekts. v true oder false: Optional. Schließt Unterverzeichnisse ein oder aus. Die Standardeinstellung lautet false (Unterverzeichnisse ausschließen). Beispiel AllApplications\testit>> import c:\testapps\java\webgoat\*.ppf AllApplications\testit>> ls 23942: webgoat (Project [local]) Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 31 info (i) Beschreibung Zeigt Informationen zu den Eigenschaften und Werten des aktuellen Objekts an. Syntax Information Beispiel Gehen Sie wie folgt vor, um die ID und den Namen der aktuellen Anwendung anzuzeigen: AllApplications\Myapp>> Info Die Ausgabe ist der folgenden ähnlich: Objekt: Myapp(Anwendung) ID: 1 ... list (ls, dir) Beschreibung Zeigt alle untergeordneten Objekte des aktuellen Objekts in der Objektbaumstruktur an. Die Baumstruktur wird als grafische Darstellung von Objekt-ID, name und Typ angezeigt. Syntax list [all] v all: Optional. Zeigt alle Objekte in der Objektbaumstruktur an. v Ohne Angabe weiterer Argumente werden nur die unmittelbar untergeordneten Elemente des aktuellen Objekts angezeigt. Beispiele v Gehen Sie wie folgt vor, um die Objekte in der aktuellen Objektbaumstruktur anzuzeigen: AllApplications>> List 1: WebGoat_4_0 (Application [local] [registered]) 2: test_application (Application [local] [registered]) v Gehen Sie wie folgt vor, um alle Objekte in der Objektbaumstruktur anzuzeigen: AllApplications>> LS all 1: WebGoat_4_0 (Application [local] [registered]) |----198: compile (Project [local] [registered]) |----|----470: WebContent\lp\JavaScriptValidation.html (Source) |----|----475: WebContent\lp\RemoteAdminFlaw.html (Source) |----|----483: WebContent\lp\WelcomeScreeen.html (Source) |----|----474: WebContent\lp\ReflectedXSS.html (Source) |----|----477: WebContent\lp\SqlInjection.html (Source) . . . 32 IBM Security AppScan Source Utilities: Benutzerhandbuch listassess (la) Beschreibung Zeigt die Objekt-ID und Datum/Uhrzeit der Beurteilung für das aktuelle Objekt in der Objektbaumstruktur an. Verwenden Sie listassess, um eine ID für die Verwendung mit dem Befehl details zu erhalten. Syntax listassess [all] all: Optional. Zeigt alle im Speicher vorhandenen Beurteilungen an. Beispiele v Gehen Sie wie folgt vor, um Objektinformationen zur aktuellen Beurteilung anzuzeigen: AllApplications\WebGoat_4_0>> listassess AllApplications\WebGoat_4_0>> 4762: WebGoat_4_0 (Application, Tue Mar 11 14:20:23 EDT 2008) AllApplications\WebGoat_4_0>> 9033: WebGoat_4_0 (Application, Tue Mar 11 14:43:31 EDT 2008) v Gehen Sie wie folgt vor, um alle Objektinformationen zur Beurteilung anzuzeigen: AllApplications\Applications>> ListAssess all 542: putty (Application, Fri Aug 04 08:38:18 EDT 2008) 1804: JavaAny (Application, Tue Apr 01 13:17:33 EDT 2008) 2971: snare (Application, Tue Apr 01 08:42:53 EDT 2008) 4773: SimpleIOT (Project, Tue Apr 01 07:31:11 EDT 2008) 4874: JSPWiki (Application, Tue Apr 01 13:22:08 EDT 2008) listgroups (lgrp) Beschreibung Zeigt alle Gruppen, deren Berechtigungen und eine Beschreibung jeder Gruppe an. Syntax listgroups Beispiel AllApplications>> ListGroups ----------------------------------------| Gruppe: APPS | Beschreibung: Anwendungs- und Projektmanagement | Berechtigungen: | REGISTER (Register) | ATTRAPPLY (Attribute anwenden) | ATTRMODIFY (Attribute verwalten) | SCAN (Überprüfung) | VIEWREGISTER (Registeransicht) | Gruppe: ASSESSMENTS | Beschreibung: Beurteilungsverwaltung | Berechtigungen: | ASMNTDELETE (Veröffentlichte Beurteilungen löschen) | ASMNTPUBLISH (Beurteilungen veröffentlichen) | ASMNTSAVE (Beurteilungen speichern) Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 33 | ASMNTVIEWPUBLISH (Veröffentlichte Beurteilungen anzeigen) | Gruppe: KB | Beschreibung: Wissensbasisverwaltung | Berechtigungen: | CUSTOM (Angepasste Regeln verwalten) | PATTERN (Muster verwalten) | Gruppe: ADMIN | Beschreibung: Verwaltung | Berechtigungen: | ASE (AppScan Enterprise-Einstellungen verwalten) | LDAP (LDAP-Einstellungen verwalten) | USER (Benutzer verwalten) ----------------------------------------- listusers (lu) Beschreibung Listet alle AppScan Source-Benutzer auf. Falls verfügbar, enthält die Ausgabe die Benutzer-ID, den Namen und das Benutzerrepository. Syntax listusers Beispiel Gehen Sie wie folgt vor, um alle AppScan Source-Benutzer aufzulisten: AllApplications>> Listusers Alle Benutzer admin (myASEServer\admin) jsmith (John Smith) local joandarcy (Joan Darcy) local AllApplications>> log Beschreibung Schaltet die Nachrichtenprotokollierung ein oder aus. Protokolliert eine Sitzung in eine angegebene Datei oder zeigt den aktuellen Protokollierungsstatus an. Protokolliert die ganze Sitzung, einschließlich der Ausgabe, in die angegebene Datei. Tipp: Verwenden Sie den Befehl record (rc), um nur die Befehlseingabe zu protokollieren. Syntax log {on Datei|off} v Das Argument on oder off ist erforderlich, um die Protokollierung ein- oder auszuschalten. Log ohne Argument zeigt den aktuellen Status an. v on: Erforderlich, um die Protokollierung einzuschalten. On erfordert den Namen einer Datei. v Datei: Name der Protokolldatei. Sie können den Dateityp angeben, der erstellt werden soll, also .txt oder .csv. 34 IBM Security AppScan Source Utilities: Benutzerhandbuch v off: Schaltet die laufende Protokollierung aus. Beispiele v Gehen Sie wie folgt vor, um in eine Datei mit dem Namen MyLogFile.txt zu protokollieren: AllApplications>> Log on c:\MyLogFile.txt v Gehen Sie wie folgt vor, um die Protokollierung abzuschalten: AllApplications>> Log off login (in) Beschreibung Meldet den Benutzer bei AppScan Enterprise Server an (ersetzt login_local (local)). Bei erfolgreicher Anmeldung wechselt die Eingabeaufforderung zu AllApplications>> und zeigt damit an, dass Sie angemeldet sind. Syntax login server benutzer-id kennwort [-persist] [-acceptssl] v server: Erforderlich. Geben Sie die URL für Ihre Enterprise Server-Instanz an. v benutzer-id: Erforderlich. Geben Sie Ihre Enterprise Server-Benutzer-ID an. v kennwort: Erforderlich. Geben Sie das Kennwort für Ihre Enterprise Server-Benutzer-ID an. v -persist: Optional. Speichert die Berechtigungsnachweise für die Anmeldung auf Platte in einer Schlüsseldatei. Bei Verwendung des Arguments 'persist' speichert der Befehl login den Benutzernamen und das Kennwort in einer verschlüsselten Schlüsseldatei mit dem Namen cli.token. Die Datei cli.token wird im Ordner .ounce im Ausgangsverzeichnis des Benutzers gespeichert. v -acceptssl: Optional. Akzeptiert SSL-Zertifikate automatisch. Weitere Informationen finden Sie in „SSL-Zertifikate von AppScan Enterprise Server”. Wichtig: Wenn dieses Argument nicht eingeschlossen ist. schlägt die Anmeldung bzw. die Veröffentlichung in AppScan Enterprise Console mit einem Fehler fehl, wenn ein ungültiges Zertifikat gefunden wird (wenn Sie nicht bereits permanent das Zertifikat akzeptiert haben, während Sie sich über ein anderes AppScan Source-Clientprodukt angemeldet haben). Beispiel Benutzer John Smith meldet sich am AppScan Enterprise Server an, der durch seinen Administrator eingerichtet wurde: >> Login https://myserver:9443/ase/ johnsmith mypassword Anmeldung erfolgreich. AllApplications>> SSL-Zertifikate von AppScan Enterprise Server Bei der Installation von AppScan Enterprise Server muss die Konfiguration so vorgenommen werden, dass der Server ein gültiges SSL-Zertifikat verwendet. Falls dies nicht vorgenommen wird, erhalten Sie eine nicht gesicherte Verbindungsnachricht, wenn Sie sich von AppScan Source for Analysis oder der AppScan SourceBefehlzeilenschnittstelle (CLI) - oder AppScan Source for Development unter Windows und Linux aus beim Server anmelden. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 35 Speicherposition des SSL-Zertifikats Zertifikate, die permanent akzeptiert wurden, werden an den Positionen <datenverzeichnis>\config\cacertspersonal und <datenverzeichnis>\config\ cacertspersonal.pem gespeichert (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installationsund Benutzerdatendateien”, auf Seite 143 beschrieben wird). Entfernen Sie diese beiden Dateien, wenn Sie die Zertifikate nicht länger als permanent speichern wollen. AppScan Source for Automation und Gültigkeitsprüfung des SSL-Zertifikats Zertifikate werden bei Verwendung von AppScan Source for Automation standardmäßig akzeptiert. Dieses Verhalten wird durch die Einstellung für ounceautod_accept_ssl in der Konfigurationsdatei des Automatisierungsservers festgelegt (<datenverzeichnis>\config\ounceautod.ozsettings (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird)). Wenn diese Einstellung bearbeitet wird, sodass statt value="true" die Einstellung value="false" festgelegt wird, wird die SSL-Gültigkeitsprüfung ausgeführt und die Anmeldung bei bzw. die Veröffentlichung in AppScan Enterprise Console schlägt mit einem Fehler fehl, wenn ein ungültiges Zertifikat gefunden wird. AppScan Source-Befehlzeilenschnittstelle (CLI) und Gültigkeitsprüfung des SSL-Zertifikats Wenn Sie den CLI login verwenden, wird standardmäßig versucht, die SSL-Gültigkeitsprüfung durchzuführen und die Anmeldung bei bzw. die Veröffentlichung in AppScan Enterprise Console schlägt mit einem Fehler fehl, wenn ein ungültiges Zertifikat gefunden wird (wenn Sie nicht bereits permanent das Zertifikat akzeptiert haben, während Sie sich über ein anderes AppScan Source-Clientprodukt angemeldet haben). Dieses Verhalten kann mithilfe des Optionsparameters -acceptssl bei Eingabe des Befehls login geändert werden. Wenn dieser Parameter verwendet wird, dann werden SSL-Zertifikate automatisch akzeptiert. Anmeldedatei Beschreibung Melden Sie sich bei AppScan Enterprise Server unter Verwendung einer Tokendatei an (Tokendateien werden mit der Option -persist des CLI „login (in)” auf Seite 35-Befehls oder beim Erstellen des AppScan Source for Automation-Benutzers generiert). Bei erfolgreicher Anmeldung wechselt die Eingabeaufforderung zu AllApplications>> und zeigt damit an, dass Sie angemeldet sind. Syntax anmeldedatei server tokendatei [-acceptssl] v server: Erforderlich. Geben Sie die URL für Ihre Enterprise Server-Instanz an. v tokendatei: Erforderlich. Geben Sie den Pfad und Dateinamen der Tokendatei an. Wenn die Tokendatei mit dem CLI „login (in)” auf Seite 35-Befehl erstellt wurde, heisst die Datei ouncecli.token und befindet sich die Datei im Ordner 36 IBM Security AppScan Source Utilities: Benutzerhandbuch .ounce des Verzeichnisses home des Benutzers. befindet sich die Datei für AppScan Source for Automation erstellt wurde, heisst die Datei <datenverzeichnis>/config/ounceautod.token (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). v -acceptssl: Optional. Akzeptiert SSL-Zertifikate automatisch. Weitere Informationen finden Sie in „SSL-Zertifikate von AppScan Enterprise Server” auf Seite 35. Wichtig: Wenn dieses Argument nicht eingeschlossen ist. schlägt die Anmeldung bzw. die Veröffentlichung in AppScan Enterprise Console mit einem Fehler fehl, wenn ein ungültiges Zertifikat gefunden wird (wenn Sie nicht bereits permanent das Zertifikat akzeptiert haben, während Sie sich über ein anderes AppScan Source-Clientprodukt angemeldet haben). Beispiel Benutzer John Smith meldet sich bei AppScan Enterprise Server unter Verwendung einer Tokendatei an, die unter Windows von der CLI aus erstellt wurde: >> anmeldedatei https://myserver:9443/ase/ C:\Users\Administrator\.ounce\ouncecli.token Anmeldung erfolgreich. AllApplications>> login_local (local) Beschreibung Wird in AppScan Source Version 6 nicht weiter unterstützt. Verwenden Sie login (in). logout (out) Beschreibung Meldet den Benutzer von AppScan Source ab und beendet die AppScan SourceBefehlzeilenschnittstelle (CLI)-Sitzung der Befehlszeilenschnittstelle. Wenn kein Benutzer angemeldet ist, ist der Befehl logout ungültig. Syntax logout Beispiel Gehen Sie wie folgt vor, um sich abzumelden: AllApplications>> Logout >> Abgemeldet. >> Die Befehlszeilenschnittstelle von Security AppScan Source wird beendet... moduser (mu) Beschreibung Modifiziert Benutzerinformationen wie Berechtigungen, Benutzer-ID und namen für einen Benutzer von AppScan Source. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 37 Syntax moduser --userid|-u <benutzer-id> [--fullname|-f <vorname_und_nachname_des_benutzers>] [--group [Gruppe[:Berechtigung[;Berechtigung...] [--group...]] [--removegroup [Gruppe[:Berechtigung [;permission...] [--removegroup...]] Benutzername und Name v --username|-u: Erforderlich. Ein gültiger Benutzername für AppScan Source. v --fullname|-f: Optional. Der vollständige Name des Benutzers. Wenn der Eintrag Leerzeichen enthält, setzen Sie diese in Anführungszeichen (") - beispielsweise: -f "Joe Smith". Gruppen und Berechtigungen Optional. Gruppen und Berechtigungen geben die zulässigen AppScan Source-Tasks für diesen Benutzer an. Aufgaben, die nicht ausdrücklich als Teil einer Berechtigung angegeben wurden, stehen allen Benutzern zur Verfügung. --group: Die Gruppen und Gruppenberechtigungen, die diesem Benutzer hinzugefügt werden sollen. Die Angabe einer Gruppe ohne Berechtigungen erteilt dem Benutzer alle Berechtigungen dieser Gruppe. oder --removegroup: Die Gruppen und Berechtigungen, die von diesem Benutzer gelöscht werden sollen. Die Angabe einer Gruppe ohne Berechtigungen entfernt alle Berechtigungen dieser Gruppe. Die Gruppen und Berechtigungen lauten wie folgt: v ASSESSMENTS: Berechtigungen auf Beurteilungsebene – ASMNTDELETE: Veröffentlichte Beurteilungen löschen. – ASMNTPUBLISH: Beurteilungen veröffentlichen. – ASMNTSAVE: Beurteilungen speichern. – ASMNTVIEWPUBLISH: Veröffentlichte Beurteilungen anzeigen. v ADMIN: Verwaltungsberechtigungen – ASE: Einstellungen von AppScan Enterprise verwalten – USER: Benutzereinstellungen verwalten einschließlich Hinzufügen und Löschen von Benutzern sowie Ändern von Berechtigungen. v APPS: Berechtigungen auf Anwendungs- und Projektebene – ATTRAPPLY: Attribute auf Anwendungen anwenden. – ATTRMODIFY: Attribute erstellen, löschen und modifizieren. – VIEWREGISTER: Registrierte Anwendungen und Projekte anzeigen. – REGISTER: Registrierung von Anwendungen und Projekten eintragen/ aufheben. Schließt die Berechtigung VIEWREGISTER ein. – SCAN: Anwendungen und Projekte überprüfen v KB: Berechtigungen für Verwaltung der Wissensbasis – CUSTOM: Angepasste Regeln verwalten. – PATTERN: Muster erstellen, bearbeiten oder löschen. 38 IBM Security AppScan Source Utilities: Benutzerhandbuch v FILTER: Filter-Management – SHAREDFILTERS: Gemeinsam genutzte Filter verwalten. v SCANCONFIG: Scankonfigurationsverwaltung – SHAREDCONFIGS: Gemeinsam genutzte Scankonfigurationen verwalten. Beispiel Nachdem Joan Darcys Benutzerberechtigungen erstellt wurden (mit dem Befehl newuser (nu), entschied der Systemadministrator, dass sie nur Berechtigungen zum Speichern, Veröffentlichen und Anzeigen, aber nicht zum Löschen benötigt. Joan benötigt zusätzlich Berechtigungen für Wissensbasis-Muster: moduser --userid joandarcy --removegroup ASSESSMENTS:ASMNTDELETE --group KB:PATTERN newuser (nu) Beschreibung Erstellt einen neuen AppScan Source-Benutzer (ein gültiger Benutzername, Kennwort, vollständiger Name und E-Mail-Adresse sind erforderlich). AppScan SourceBenutzer können im Benutzerrepository von AppScan Enterprise Server sowie in der AppScan Source-Date nbank enthalten sein. Wenn es Benutzer gibt, die nicht auf den Server zugreifen sollen, können diese lokal als AppScan Source-Benutzer erstellt werden. Sie haben auch die Möglichkeit, einen neuen AppScan Source-Benutzer zu erstellen, der bereits auf dem AppScan Enterprise Server eingerichtet ist. Syntax newuser --userid|-u <benutzer-id> --password|-p <kennwort> --fullname|-f <vorname_und_nachname_des_benutzers> --email|-e <e-mail-adresse> [--local {true|false}] [--group [Gruppe[:Berechtigung[;Berechtigung...] [--group...]] Identifizierung von Informationen v --userid|-u: Erforderlich. Benutzer-ID. Leerzeichen sind unzulässig. v --password|-p: Benutzerkennwort. Dieser Parameter ist erforderlich, wenn -local auf true gesetzt ist; der Parameter wird ignoriert, wenn -local auf false gesetzt ist. v --fullname|-f: Der vollständiger Name des Benutzers. Wenn der Eintrag Leerzeichen enthält, setzen Sie diese in Anführungszeichen (") - beispielsweise: -f "Joe Smith". Dieser Parameter ist erforderlich, wenn -local auf false gesetzt ist; der Parameter ist optional, wenn -local auf true gesetzt ist. v --email|-e: E-Mail-Adresse des Benutzers. Dieser Parameter ist erforderlich, wenn -local auf false gesetzt ist; der Parameter ist optional, wenn -local auf true gesetzt ist. AppScan Enterprise Server-Benutzer und AppScan Source-Benutzer erstellen Optional. Mit dem Befehl newuser wird immer ein Benutzer in der AppScan Source-Datenbank erstellt; standardmäßig erstellt der Befehl den Benutzer ebenfalls auf dem AppScan Enterprise Server. Um die Position des Benutzers festzulegen, verwenden Sie das Argument --local. Standardmäßig lautet der Wert für dieses ArKapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 39 gument false; dies bedeutet, dass die Benutzer sowohl auf dem AppScan Enterprise Server als auch in den AppScan Source-Benutzerrepositorys erstellt werden. Wenn das Argument auf true gesetzt ist, wird der Benutzer nur lokal als AppScan Source-Benutzer erstellt. Lokale Benutzer können Überprüfungsergebnisse nicht in der AppScan Enterprise Console veröffentlichen. Sie können die Ergebnisse jedoch in der AppScan SourceDatenbank veröffentlichen. Beim Anmelden bei AppScan Source müssen lokale Benutzer zusammen mit ihren AppScan Source-Benutzerberechtigungen einen gültigen AppScan Enterprise Server angeben (ein Server muss für den Zugriff auf die AppScan Source-Datenbank bereitgestellt werden). Gruppen und Berechtigungen Optional. Gruppen und Berechtigungen geben die zulässigen AppScan SourceTasks für diesen Benutzer an. Aufgaben, die nicht ausdrücklich als Teil einer Berechtigung angegeben wurden, stehen allen Benutzern zur Verfügung. --group: Die Gruppen und Gruppenberechtigungen dieses Benutzers. Die Angabe einer Gruppe ohne Berechtigungen erteilt dem Benutzer alle Berechtigungen dieser Gruppe. Die Gruppen und deren Berechtigungen lauten wie folgt: v ASSESSMENTS: Berechtigungen auf Beurteilungsebene – ASMNTDELETE: Veröffentlichte Beurteilungen löschen. – ASMNTPUBLISH: Beurteilungen veröffentlichen. – ASMNTSAVE: Beurteilungen speichern. – ASMNTVIEWPUBLISH: Veröffentlichte Beurteilungen anzeigen. v ADMIN: Verwaltungsberechtigungen – ASE: Einstellungen von AppScan Enterprise verwalten – USER: Benutzereinstellungen verwalten einschließlich Hinzufügen und Löschen von Benutzern sowie Ändern von Berechtigungen. v APPS: Berechtigungen auf Anwendungs- und Projektebene – ATTRAPPLY: Attribute auf Anwendungen anwenden. – ATTRMODIFY: Attribute erstellen, löschen und modifizieren. – VIEWREGISTER: Registrierte Anwendungen und Projekte anzeigen. – REGISTER: Registrierung von Anwendungen und Projekten eintragen/ aufheben. Schließt die Berechtigung VIEWREGISTER ein. – SCAN: Anwendungen und Projekte überprüfen v KB: Berechtigungen für Verwaltung der Wissensbasis – CUSTOM: Angepasste Regeln verwalten. – PATTERN: Muster erstellen, bearbeiten oder löschen. v FILTER: Filter-Management – SHAREDFILTERS: Gemeinsam genutzte Filter verwalten. v SCANCONFIG: Scankonfigurationsverwaltung – SHAREDCONFIGS: Gemeinsam genutzte Scankonfigurationen verwalten. LDAP-Authentifizierung Sie können LDAP-Benutzer nicht zum AppScan Source-Benutzerrepository hinzufügen, wenn sie nicht bereits im AppScan Enterprise Server-Benutzerrepository vorhanden sind. Zum Hinzufügen eines AppScan Source-Benutzers, der über LDAP authentifiziert wird, muss das AppScan Enterprise Server-Benutzerreposito- 40 IBM Security AppScan Source Utilities: Benutzerhandbuch ry für die Verwendung eines LDAP-Repositorys konfiguriert sein. Informationen hierzu finden Sie in der Veröffentlichung AppScan Enterprise Server Planning & Installation Guide. Wenn Sie die LDAP-Authentifizierung verwenden und einen AppScan Source-Benutzer hinzufügen wollen, der nicht zu einer LDAP-Benutzergruppe gehört, setzen Sie den Befehl newuser mit der Option -local true ab, um den Benutzer lokal im AppScan Source-Benutzerrepository zu erstellen. Beispiel Erstellen Sie einen Benutzer mit dem Namen Joan Darcy auf dem AppScan Enterprise Server. Die E-Mail-Adresse von Joan lautet [email protected]. Ihr Benutzername lautet joandarcy und ihr Kennwort ist 123456. Joan kann AppScan Source in den Gruppen APPS und ASSESSMENTS mit allen Berechtigungen sowie innerhalb der Gruppe KB mit der Berechtigung für angepasste Regeln verwenden: AllApplications>> newuser --userid joandarcy --password 123456 --fullname "Joan Darcy" --email [email protected] --group APPS --group ASSESSMENTS --group KB:CUSTOM AllApplications>> Created user ’joandarcy’. User ID: 888 openapplication (oa) Beschreibung Dieser Befehl kann verwendet werden, um eine vorhandene Anwendung zu öffnen, oder um eine neue AppScan Source-Anwendungsdatei zu erstellen. Wenn dieser Befehl zum Öffnen einer Anwendung verwendet wird, werden folgende Anwendungsdateien unterstützt: v Anwendungsdateien für AppScan Source (.paf). v Arbeitsbereichsdateien für Microsoft Visual C++ (.dsw) v Lösungsdateien für Microsoft Visual Studio.NET (.sln) v Arbeitsbereiche von Eclipse oder Rational Application Developer for WebSphere Software (RAD) (.ewf) und projekten (.epf) Anmerkung: Diese Dateien werden geneirert, wenn Sie openapplication zum Öffnen eines Arbeitsbereichsverzeichnisses verwenden (durch Angabe des Pfads). Syntax openapplication Pfad_Datei Pfad_Datei v Wenn Sie den Befehl zum Öffnen einer Anwendung verwenden, geben Sie den Pfad und den Dateinamen der vorhandenen Anwendung an. v Wenn Sie den Befehl zum Erstellen einer Anwendung verwenden, geben Sie einen gültigen Pfad und einen neuen Dateinamen an (stellen Sie dabei sicher, dass der neue Dateiname nicht bereits vorhanden ist). v Wenn Sie den Befehl zum Öffnen eines Eclipse oder Rational Application Developer for WebSphere Software (RAD)-Arbeitsbereichs verwenden, können Sie lediglich nur den Arbeitsbereichspfad angeben. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 41 Beispiele v Gehen Sie wie folgt vor, um eine Lösungsdatei für Microsoft Visual Studio .NET zu öffnen: AllApplications>> openapplication c:\mysln.sln v Gehen Sie wie folgt vor, um einen Eclipse-Arbeitsbereich zu öffnen: AllApplications>> oa "C:\Users\myname\My Documents\myworkspace" oder AllApplications>> oa "C:\Users\myname\My Documents\myworkspace\myworkspace.ewf" openassessmentfile (oaf) Beschreibung Öffnet eine Beurteilungsdatei für AppScan Source (file_name.ozasmt). Eine geöffnete Beurteilungsdatei wird zur aktuellen Beurteilung. Syntax openassessmentfile pfad_datei pfad_datei: Pfad und Dateiname der vorhandenen Beurteilungsdatei. Beispiel Gehen Sie wie folgt vor, um eine zuvor gespeicherte Beurteilung zu öffnen: AllApplications>> OpenAssessmentFile c:\priority.ozasmt password (passwd) Beschreibung Sie können den Befehl password dazu verwenden, Ihr Kennwort oder, mit entsprechenden Administratorberechtigungen, das Kennwort eines anderen Benutzers zu ändern. Geben Sie das neue Kennwort zweimal ein, um ein Kennwort zu ändern. Beide Eingaben des neuen Kennworts müssen identisch sein, damit die Änderung wirksam wird. Wenn Sie Ihr eigenes Kennwort ändern, müssen Sie das aktuelle Kennwort zuerst eingeben. Syntax password [Benutzername] Benutzername: Name des Benutzers, dessen Kennwort geändert wird. Wenn kein Benutzername angegeben wird, ändern Sie Ihr eigenes Kennwort. Beispiele v Gehen Sie wie folgt vor, um Ihr Kennwort zu ändern: AllApplications>> Password Aktuelles Kennwort eingeben: ****** Neues Kennwort eingeben: ******* Neues Kennwort bestätigen: ******* Kennwort geändert. AllApplications>> 42 IBM Security AppScan Source Utilities: Benutzerhandbuch v Gehen Sie wie folgt vor, um das Kennwort eines anderen Benutzers zu ändern (wenn Sie über Administratorberechtigungen verfügen): AllApplications>> passwd johnsmith Kennwort für Benutzer johnsmith wird geändert Neues Kennwort eingeben: ******* Neues Kennwort bestätigen: ******* Kennwort geändert. AllApplications>> printuser (pu) Beschreibung Der Befehl printuser (pu) zeigt Informationen zu einem einzelnen Benutzer auf dem Bildschirm an. Syntax printuser benutzername benutzername: AppScan Source-Benutzername Beispiel Zeigen Sie die ursprünglichen Benutzerdaten des Benutzers Joan Darcy an. printuser joandarcy Benutzer: joandarcy Vorname: Joan Nachname: Darcy E-Mail-Adresse: [email protected] Gruppen: - APPS (Anwendungs- und Projektmanagement) REGISTER (Register) ATTRAPPLY (Attribute anwenden) ATTRMODIFY (Attribute verwalten) SCAN (Überprüfung) VIEWREGISTER (Registeransicht) -(ASSESSMENTS) (Beurteilungsverwaltung) ASMTDELETE (Veröffentlichte Beurteilungen löschen) ASMNTPUBLISH (Beurteilungen veröffentlichen) ASMNTSAVE (Beurteilungen speichern) ASMNTVIEWPUBLISH (Veröffentlichte Beurteilungen anzeigen) -[KB] (Wissensbasisverwaltung) CUSTOM (Angepasste Regeln verwalten) -[ADMIN] (Verwaltung) Anmerkung: Eckige Klammern [ ] bedeuten, dass der Benutzer nicht über alle Berechtigungen in dieser Gruppe verfügt. publishassess (pa) Beschreibung Veröffentlicht die aktuelle Beurteilung oder eine ausgewählte Beurteilung in AppScan Source-Datenbank. Bei Verwendung dieses Befehls wird die Beurteilung einem AppScan Source-Client wie z.B. AppScan Source for Analysis zugänglich gemacht, jedoch nicht der AppScan Enterprise Console (verwenden Sie den Befehl „publishassessase (pase)” auf Seite 45, um sie in der AppScan Enterprise Console zu veröffentlichen). Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 43 Zur Verwendung dieses Befehls ist eine gültige AppScan Source for AutomationLizenz erforderlich. Bei der Veröffentlichung einer Beurteilung mithilfe dieses Befehls wird die Beurteilung automatisch bei AppScan Enterprise Server registriert. Sie müssen die Beurteilung bei Verwendung dieses Befehls nicht manuell registrieren. Syntax pa [ID] ID: Optionales Literal. Identifiziert die Beurteilungs-ID. Wenn keine ID angegeben wird, findet der Befehl Anwendung auf die letzte Überprüfung. Verwenden Sie den Befehl listassess (la), um die Beurteilungs-ID zu suchen. Beispiel Im folgenden Beispiel legen wir die Anwendung 'pebble' als aktuelles Objekt fest, überprüfen das Projekt 'pebble' und veröffentlichen anschließend die Beurteilung (die gleichzeitig automatisch registriert wird). AllApplications>> cd pebble AllApplications\pebble>> scan pebble Neue Überprüfung gestartet Überprüfung von Projekt pebble (1 von 1) Projekt wird für Überprüfung vorbereitet... . . Sicherheitslückenanalyse vorbereiten... Sicherheitslückenanalyse durchführen... Ergebnisse generieren... Projekt wird für Überprüfung vorbereitet... . . Überprüftes Projekt ’pebble’: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Überprüfte Anwendung ’pebble’: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Überprüfung beendet: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Ablaufzeit - 18 Sekunden AllApplications\pebble>> publishassess Beurteilung wurde erfolgreich veröffentlicht. 44 IBM Security AppScan Source Utilities: Benutzerhandbuch publishassessase (pase) Beschreibung Veröffentlicht die aktuelle Beurteilung oder eine ausgewählte Beurteilung in AppScan Enterprise Console. Bei Verwendung dieses Befehls wird die Beurteilung AppScan Source-Clients wie z.B. AppScan Source for Analysis nicht zugänglich gemacht (verwenden Sie den Befehl „publishassess (pa)” auf Seite 43 für die Veröffentlichung in AppScan Source-Clients). Syntax publishassessase [ID] [Pfad] [-folder <Speicherposition>] [-name <Name der veröffentlichten Beurteilung>] [-aseapplication <ASE-Anwendung>] v ID: Optionales Literal. Identifiziert die Beurteilungs-ID. Verwenden Sie den Befehl listassess (la), um die Beurteilungs-ID zu suchen. v Pfad: Optionales Literal. Pfad und Dateiname der Beurteilungsdatei. v -folder <Speicherposition>: Optional. Der Enterprise Console-Ordner, in den veröffentlicht wird. Wenn dieses Argument nicht verwendet wird, wird die Beurteilung in Ihrem Enterprise Console-Standardordner veröffentlicht. v -name <Name der veröffentlichten Beurteilung>: Optional. Der Name, mit dem die Beurteilung in Enterprise Console gespeichert wird. Wenn dieses Argument nicht verwendet wird, wird ein Name anhand der überprüften AppScan SourceAnwendung generiert, um die Beurteilung zu erstellen. (Dieser Name wird als Präfix zu AppScan Source: hinzugefügt.) v -aseapplication <ASE-Anwendung>: Optional. Enterprise Console-Anwendung, der die Beurteilung zugeordnet wird. Wenn das optionale Argument eine Ganzzahl ist, geht der Befehl davon aus, dass es sich um die Beurteilungs-ID handelt. Wenn das optionale Argument keine Ganzzahl ist, geht der Befehl davon aus, dass es sich um den Pfad zu einer gespeicherten Beurteilungsdatei handelt. Wenn eine Beurteilung nicht mit dem Befehl id oder path angegeben wird, wird die Beurteilung vorausgesetzt, die durch die aktuelle Überprüfung generiert wurde. quit Beschreibung Beendet und schließt die aktuelle Sitzung der Befehlszeilenschnittstelle von AppScan Source. Ein Abmeldung erfolgt, wenn Sie angemeldet waren. Syntax quit Beispiel AllApplications>> Quit >> Abgemeldet. >> Die Befehlszeilenschnittstelle von Security AppScan Source wird beendet... Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 45 record (rc) Beschreibung Schaltet die Befehlsaufzeichnung ein oder aus. Record erfasst nur Befehle und Argumente, aber nicht die Ausgabe. Tipp: Verwenden Sie den Befehl log, um die Ausgabe zu erfassen. Syntax record {on Datei|off} v on oder off: Erforderlich, um die Aufzeichnung ein- oder auszuschalten. v Datei: Name der aufgezeichneten Datei. Record On erfordert das Argument Datei, das den gültigen Dateipfad enthält. Falls diese Datei noch nicht existiert, wird sie von der AppScan Source-Befehlzeilenschnittstelle (CLI) erstellt. Falls diese Datei schon existiert, werden die Protokolldaten an das Dateiende angehängt. v Record ohne Argument zeigt an, ob die Aufzeichnung ein- oder ausgeschaltet ist. Beispiel v Gehen Sie wie folgt vor, um in eine Datei mit dem Namen MyCommands.txt zu protokollieren: AllApplications>> Record on C:\MyCommands.txt v Gehen Sie wie folgt vor, um die Aufzeichnung abzuschalten: AllApplications>> RC off refresh (rf) Beschreibung Refresh stellt das aktuelle Projekt oder die aktuelle Anwendung von einem Datenträger wieder her. Verwenden Sie refresh, wenn Sie ein Projekt oder eine Anwendung erneut laden möchten, das möglicherweise geändert wurde. Syntax refresh Beispiel Gehen Sie wie folgt vor, um MeinProjekt zu aktualisieren: AllApplications\MyApplication\MyProject>> Refresh register (reg) Beschreibung Registriert Projekte und Anwendungen in der AppScan Source-Datenbank. register ermöglicht es, die Anwendung oder das Projekt auf dem aktuellen Knoten bei AppScan Source zu registrieren. Die Registrierung weist AppScan Source 46 IBM Security AppScan Source Utilities: Benutzerhandbuch auf Anwendungen und Projekte hin. Registrierte Anwendungen und Projekte können (mit dem Befehl publishassess (pa)) veröffentlicht werden. Die Registrierung bereits registrierter Anwendungen oder Projekte kann mit dem Befehl unregister (unreg) aufgehoben werden. Syntax register Beispiel AllApplications>> cd pebble AllApplications\pebble>> register AllApplications\pebble>> ’pebble’ erfolgreich registriert. removeassess (da) Beschreibung Löscht die ausgewählte oder aktuelle Beurteilung im Hauptspeicher. Syntax removeassess [id] ID: Optionales Literal. Identifiziert die Beurteilungs-ID. Wenn keine ID angegeben wird, findet der Befehl Anwendung auf die letzte Beurteilung. Verwenden Sie listassess (la), um eine Beurteilungs-ID zu suchen. Beispiel Rufen Sie vor dem Löschen einer Beurteilung zuerst deren ID ab: AllApplications\Applications>> ListAssess 542: putty (Application, Tue Apr 01 08:38:18 EDT 2008) 180: JavaAny (Application, Tue Apr 01 13:17:33 EDT 2008) Löschen Sie danach die Beurteilung mit der ID 180: AllApplications\Applications>> RemoveAssess 180 report (rpt) Beschreibung Der Befehl Report erstellt einen Bericht des angegebenen Typs für AppScan Source, der Berichte über Untersuchungsergebnisse und AppScan Source-Berichte enthält. Zur Verwendung dieses Befehls ist eine gültige AppScan Source for Automation-Lizenz erforderlich. Die verfügbaren Berichtsausgabeformate sind HTML, PDF und Zip-Dateien. Syntax report "<Berichtstyp>" <Aufgabeformat> <Speicherposition der Ausgabe> [<Beurteilungs-ID>] [-includeSrcBefore:<n>] [-includeSrcAfter:<n>] v Berichtstyp: Der Name des Berichts in Anführungszeichen, der erstellt werden soll. Geben Sie einen der folgenden Berichtstypen an: – Untersuchungsergebnisbericht: Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 47 - Ergebnisse nach Bundle Ergebnisse nach API Ergebnisse nach Klassifizierung Ergebnisse DTS-Aktivität - Ergebnisse nach Typ - Ergebnisse nach CWE - Ergebnisse nach Datei – AppScan Source-Bericht: - CWE SANS Top 25 2011 - DISA Application Security and Development STIG V3R9 - OWASP Mobile Top 10 - OWASP Top 10 2013 - PCI Data Security Standard V3.0 - Softwaresicherheitsprofil – Falls verfügbar, ein angepasster Bericht. Geben Sie den Berichtstyp in Anführungszeichen exakt genauso ein wie in der Liste oben. Beispiel:Findings by Classification oder Software Security Profile. v Ausgabeformat: Geben Sie eines der folgenden Formate für diesen Bericht an: – HTML: Erstellt den Bericht als HTML-Datei und zeigt ihn online an. – ZIP: Erstellt eine ZIP-Datei, die alle HTML-Berichtskomponenten enthält. – Bei Berichten im PDF-Format können Sie den Detaillierungsgrad angeben: - pdf-summary: Enthält Zählungen für jede angepasste Berichtsgruppe. - pdf-detailed: Enthält Zählungen für jedes API und für jede Sicherheitslückeneigenschaft. - pdf-comprehensive: Enthält Tabellen mit allen Ergebnissen für jedes API. - pdf-annotated: Enthält alle Ergebnisse, alle Anmerkungen zu den Ergebnissen und bestimmte Codefragmente. - Speicherposition der Ausgabe: Der Pfad, in dem der Bericht geschrieben wird. v Speicherposition der Ausgabe: Geben Sie absoluten Pfad- und Dateinnamen für die Speicherung des Berichts an. v Beurteilungs-ID: Optional. Die Beurteilungs-ID, die Sie mit dem Befehl listassess (la) erhalten. Wenn Sie die Beurteilungs-ID übergehen, wird ein Bericht der letzten Überprüfung erstellt. v -includeSrcBefore:<n>: Optional. Die Anzahl der Quellcodezeilen, die vor jedem Ergebnis in den Bericht eingefügt werden. v -includeSrcAfter:<n>: Optional. Die Anzahl der Quellcodezeilen, die nach jedem Ergebnis in den Bericht eingefügt werden. Beispiele v Fordern Sie einen Bericht Ergebnisse nach API, der in HTML geschrieben ist, an: AllApplications>> report "Findings by API" html C:\reports\findings.html v Fordern Sie einen OWASP Top 10 für AppScan Source an, der als PDF mit umfassenden Details geschrieben wird und die bestehende Beurteilung 542 verwendet: AllApplications>> report "OWASP Top 10 2013" pdf-comprehensive /reports/webgoat_OWASP_13_comp.pdf 542 48 IBM Security AppScan Source Utilities: Benutzerhandbuch scan (sc) Beschreibung Durchsucht eine Anwendung (oder alle Anwendungen), ein Projekt oder eine Datei, Zur Verwendung dieses Befehls ist eine gültige AppScan Source for Automation-Lizenz erforderlich. Wichtig: Wenn Sie mit einem AppScan Source-Projekt arbeiten, das über Abhängigkeiten in einer Entwicklungsumgebung verfügt (beispielsweise ein IBM® MobileFirst-Projekt), stellen Sie sicher, dass Sie das Projekt in der Entwicklungsumgebung builden, bevor Sie es importieren. Wenn Sie nach dem Import des Projekts Dateien in diesem Projekt ändern, stellen Sie sicher, dass Sie das Projekt in der Entwicklungsumgebung erneut builden, bevor Sie das Scanning dafür in AppScan Source durchfuhren (wenn Sie dies nicht tun, werden Änderungen an Dateien von AppScan Source ignoriert). Syntax scan [path][config <projektkonfiguration>][-name <beurteilungsname>] [-scanconfig <name_der_scankonfiguration>] v path: Optional. Vollständiger Pfad und Dateiname (.ozasmt), unter dem die exportierte Beurteilung gespeichert wird. Anmerkung: – Wenn Sie ein gültiges Verzeichnis ohne einen Dateinamen angeben, wird eine Beurteilungsdatei (.ozasmt) auf der Basis des Anwendungsnamens, des Projektnames und der Scankonfiguration erstellt, die beim Erstellen der Beurteilung verwendet wurde. – Wenn Sie ein gültiges Verzeichnis mit einem Dateinamen angeben, der nicht vorhanden ist, wird eine Beurteilungsdatei in dieser Position erstellt und es wird der angegebene Dateiname verwendet. – Wenn Sie eine Datei angeben, die bereits vorhanden ist, wird die vorhandene Datei überschrieben. – Wenn Sie einen Dateinamen (.ozasmt) in einem Verzeichnis angeben, das nicht vorhandenist, wird die Beurteilung gesüeichert. v config <projektkonfiguration>: Optional. Dieses Argument gilt nur für Beurteilungen auf Projektebene. Wenn Ihr Projekt eine Konfigurationsdatei aufweist, geben Sie sie mithilfe dieses Arguments an. v -name <beurteilungsname>: Optional. Ein Name für die Beurteilung. Diese Name wird im AppScan Source-Clientprodukten zur Unterscheidung von Beurteilungen untereinander verwendet (beispielsweise erscheint in AppScan Source for Analysis der Name in der Spalte Name der Ansicht 'Meine Beurteilungen'). v -scanconfig <name_der_scankonfiguration>: Optional. Geben Sie den Namen einer Scankonfiguration an, die für die Überprüfung verwendet werden soll. Wenn keine Scankonfiguration angegeben wird, verwendet das System für die Überprüfung die Standardscankonfiguration. Beispiele v Gehen Sie wie folgt vor, um die Standardkonfiguration der Projekte in allen Anwendungen zu überprüfen: AllApplications>> Scan Die Ergebnisse werden wie folgt angezeigt: Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 49 Neue Überprüfung gestartet . . Sicherheitslückenanalyse vorbereiten... Sicherheitslückenanalyse durchführen... Ergebnisse generieren... Projekt wird für Überprüfung vorbereitet... . . Überprüftes Projekt: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Überprüfte Anwendung: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Überprüfung beendet: Gesamtzahl der Dateien: 15 Gesamtzahl der Ergebnisse: 167 Gesamtzahl der Zeilen: 385 vkloc: 0.44448395412925595 S-Dichte: 22.446439683527426 Ablaufzeit - 18 Sekunden Neue Überprüfung gestartet Bitte warten... Beurteilung beendet ------------------Gesamtzahl der Aufrufseiten: 75 Gesamtzahl der definitiven Security-Ergebnisse mit hohem Schweregrad: 25 Gesamtzahl der definitiven Security-Ergebnisse mit mittlerem Schweregrad: 37 Gesamtzahl der definitiven Security-Ergebnisse mit niedrigem Schweregrad: 9 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit hohem Schweregrad: 20 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit mittlerem Schweregrad: 80 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit niedrigem Schweregrad: 60 Gesamtzahl der Scan-Abdeckungsergebnisse mit hohem Schweregrad: 50 Gesamtzahl der Scan-Abdeckungsergebnisse mit mittlerem Schweregrad: 33 Gesamtzahl der Scan-Abdeckungsergebnisse mit niedrigem Schweregrad: 17 Gesamtzahl der Zeilen: 3000 ... v Gehen Sie wie folgt vor, um die Debugkonfiguration von Prj1 zu überprüfen: AllApplications\Prj1>> SC config debug script (scr) Beschreibung Führt ein Befehlsscript aus. Das Script kann alle gültigen Befehle der AppScan Source-Befehlzeilenschnittstelle (CLI) mit Argumenten enthalten. Der Befehl record (rc) kann zum Erstellen der Scriptdatei verwendet werden. Scripts können bei Verwendung der Notation ${VAR} auf Umgebungsvariablen verweisen (wobei VAR der Name einer Umgebungsvariablen ist). Wenn der Befehl script von der Befehlszeile an AppScanSrcCli übergeben wird, beendet er AppScanSrcCli automatisch am Ende des Scripts. 50 IBM Security AppScan Source Utilities: Benutzerhandbuch Syntax script Scriptdatei Scriptdatei: Vollständiger Pfad-und Dateiname der Scriptdatei, die Sie ausführen wollen. Kommentare in Scripts Eine Zeile, der ein Nummernzeichen (#) vorausgeht, ist ein Kommentar. Die CLI überspringt Kommentare, wenn sie im Dialogbetrieb oder über eine Scriptdatei ausgeführt wird. Das folgende Beispielscript enthält Kommentare: login localhost User 123456 #zu meinem Arbeitsbereich navigieren cd MeineAnwendung #meine Anwendung überprüfen Überprüfung logout Beispiele Ein Benutzer, der sich normal anmeldet und die CLI im Dialogbetrieb verwendet, möchte möglicherweise ein Script aufzeichnen, um es bei Bedarf über die Konsole erneut ausführen zu können. Mit dem Befehl record (rc) können Sie eine vollständige Sitzung aufzeichnen und das Script beliebig oft oder zu einem geplanten Zeitpunkt ausführen. Ein Script kann eine ganze Sitzung automatisieren, indem einzelne Stapeldateien oder Scripts zum Anmeldung, zum Erstellen von Projekten, zum Überprüfen, zum Kopieren von Dateien und so weiter verwendet werden. v Gehen Sie wie folgt vor, um ein Script mit dem Namen myscript.txt auszuführen: AllApplications>> Script c:\myscript.txt v Das folgende Beispielscript meldet den Benutzer an, aktiviert die Protokollierung, erstellt eine Anwendung, importiert alle ppf-Projekte in einem angegebenen Verzeichnis, führt eine Beurteilung aus und beendet das Script: log on C:\mylogfile.log new MeineAnwendung C:\MeineAnwendung cd MeineAnwendung im C:\Projekte\*.ppf Überprüfung logout Dabei ist zu beachten, dass logout nicht notwendig ist, wenn das Script immer von der Befehlszeile AppScanSrcCli ausgeführt wird. setaseinfo (sase) Wenn Ihr AppScan Enterprise Server mit der Option 'AppScan Enterprise Console' installiert wurde, können Sie Beurteilungen auf dem Server publizieren. Die Enterprise Console stellt zahlreiche Tools für das Arbeiten mit Beurteilungen zur Verfügung, z. B. Berichtsfunktionen, Problemmanagement, Trendanalyse und Dashboards. Beschreibung Legt die Einstellungen für Enterprise Console fest. Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 51 Wenn Sie Beurteilungen von AppScan Source in Enterprise Console publizieren wollen, verwenden Sie den Befehl setaseinfo, um die Verbindungseinstellungen von Enterprise Console anzugeben. Syntax setaseinfo --userid|-u <benutzername> --password|-p <kennwort> --url|-l <url> v userid: – Wenn AppScan Enterprise Server zur Verwendung der Windows-Authentifizierung konfiguriert ist, geben Sie die Domäne und den Benutzernamen ein, den Sie zum Herstellen der Verbindung zu Enterprise Console verwenden (trennen Sie die Domäne und den Benutzernamen mit einem \ - beispielsweise meine_domäne\mein_benutzername). – Wenn AppScan Enterprise Server mit LDAP konfiguriert ist, geben Sie den Benutzernamen ein, den Sie zum Herstellen der Verbindung zu Enterprise Console verwenden. Sie müssen mindestens ein QuickScan-Benutzer sein und auf dem Enterprise Server über einen eigenen Benutzerordner verfügen. v kennwort: Das Kennwort, das zum Anmelden bei AppScan Enterprise verwendet wird (das Kennwort für den eingegebenen Benutzernamen). v url: Die URL, die für den Zugriff auf die Enterprise Console-Webanwendung verwendet wird. Das Format dieser URL ist: http(s)://<hostname>:<port>/ase/ Hierbei ist <hostname> der Name der Maschine, auf der die Enterprise Console installiert ist, und <port> ist der Port, an dem die Konsole ausgeführt wird. Eine Beispiel-URL wäre https://myhost.mydomain.ibm.com/ase. Anmerkung: Dieses Argument ist optional, wenn die Enterprise Console-URL bereits festgelegt wurde. Anmerkung: v Sie müssen bei der AppScan Source-Befehlzeilenschnittstelle (CLI) mit der Berechtigung AppScan Enterprise-Einstellungen verwalten angemeldet sein, um einen Wert für url festlegen zu können. Informationen zu Benutzeraccounts und Berechtigungen finden Sie im Abschnitt AppScan Source verwalten im IBM Security AppScan Source Installations- und Administrationshandbuch. v Der benutzername und das kennwort werden auf der Maschine gespeichert, auf der der AppScan Source-Client (z. B. AppScan Source for Analysis) ausgeführt wird, während url auf dem Enterprise Server gespeichert wird (der sich auf einer fernen Maschine befinden kann). Sie können auf die Informationen benutzername und kennwort von der fernen Maschine aus zugreifen (beispielsweise, indem Sie den Befehl getaseinfo von dieser Maschine aus absetzen). Beispiel AllApplications>> setaseinfo --userid MeinBenutzername --password MeinKennwort --url https://my_aseserver/ase Informationen zur AppScan Enterprise Integration wurden konfiguriert. AllApplications>> 52 IBM Security AppScan Source Utilities: Benutzerhandbuch setcurrentobject (set, cd) Beschreibung Verwenden Sie setcurrentobject zum Navigieren in der Objektbaumstruktur. Legt das aktuell ausgewählte Objekt in der Objektbaumstruktur fest. Das Objekt muss ein gültiges untergeordnetes Element des aktuellen Objekts sein. Verwenden Sie den Befehl list (ls, dir), um alle untergeordneten Elemente des aktuellen Objekts anzuzeigen. Wählen Sie das Objekt nach Namen oder ID aus. Syntax setcurrentobject {Name|ID Objekt-ID} v Name: Der Name des festzulegenden untergeordneten Elements. Dieser ist erforderlich, wenn durch die Baumstruktur nach dem Objektnamen navigiert wird. v ID: Literal. Wählen Sie die ID nach der Objekt-ID aus. v Objekt-ID: Die numerische ID des untergeordneten Elements. Dies ist erforderlich, wenn nach der ID ausgewählt wird. Beispiele v Gehen Sie wie folgt vor, um vom Stammverzeichnis zu der Anwendung, deren ID gleich 1 ist, zu navigieren: AllApplications>> SetCurrentObject applications AllApplications>> CD id 1 AllApplications\Applications>> v Gehen Sie wie folgt vor, um eine Ebene zurück zu navigieren: AllApplications\Applications>> CD .. v Gehen Sie wie folgt vor, um zum Anfang (Stammverzeichnis) der Objektbaumstruktur zurückzukehren: AllApplications\Applications>> Set / oder AllApplications\Applications>> Set \ setvar (sv) Beschreibung Erstellt eine neue Variable oder ändert eine bestehende Variable. Syntax setvar <Name> <Pfad> v Name: Der Name der Variablen. Wenn die Variable bereits vorhanden ist, aktualisiert die AppScan Source-Befehlzeilenschnittstelle (CLI) den Pfad. Falls die Variable noch nicht existiert, wird sie von der CLI mit dem Wert des genannten Pfads erstellt. v Pfad: Eine bestehender Pfad für die Variable. Wenn dieser Pfad nicht besteht, wird die Variable nicht erstellt. Beispiele v Gehen Sie wie folgt vor, um die AppScan Source-Variable Myvar mit dem Pfad C:\Myapps zu erstellen: Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 53 AllApplications>> SetVar Myvar C:\Myapp AllApplications>> Neue Variable ’%Myvar%’ wurde erstellt. v Gehen Sie wie folgt vor, um eine AppScan Source-Variable mit dem Namen SRC_ROOT basierend auf dem Wert der Systemumgebungsvariablen SRC_ROOT zu erstellen: # Anmeldung login localhost admin # Erstellen der Variablen SRC_ROOT mit dem Wert # der Umgebungsvariablen SRC_ROOT setvar SRC_ROOT ${SRC_ROOT} unregister (unreg) Beschreibung Nimmt die Registrierung einer zuvor registrierten Anwendung oder eines registrierten Projekts des aktuellen Knotens zurück. Nachdem die Registrierung aufgehoben wurde, kann die Anwendung oder das Projekt nicht veröffentlicht werden. Weitere Informationen hierzu finden Sie unter dem Befehl register (reg). Syntax unregister Beispiel AllApplications\Myapp>> Unregister AllApplications\Myapp>> Die Registrierung von ’Myapp’ wurde erfolgreich aufgehoben. Automatisierte Beurteilungen durchführen Die AppScan Source-Befehlzeilenschnittstelle (CLI) ermöglicht das automatische Importieren einer AppScan Source-Projektdatei (.ppf) sowie die Überprüfung des Quellcodes. Sie können von der Befehlszeile zum Beispiel ein Script wie das folgende Run_Assessments.txt ausführen. AppScanSrcCli scr c:\<Installationsverzeichnis>\bin\Run_Assessments.txt Beispielscript Run_Assessments.txt # Melden Sie sich an. Login <hostname> <benutzername> <kennwort> # Aktivieren Sie die Protokollierung log on c:\myLogFile.log # Erstellen Sie eine neue Anwendung mit dem Namen ’testit’. new testit c:\AppTest # Navigieren Sie zu der neu erstellten Anwendung. cd testit # Importieren Sie die Projektdateien (.ppfs) unter c:\projects\joans. im c:\projects\joans\*.ppf # Aktualisieren Sie das Projekt. refresh # Führen Sie eine Beurteilung durch. Überprüfung # Registrieren Sie die Beurteilung. register # Veröffentlichen Sie die Beurteilung. publishassess # Melden Sie sich ab und beenden Sie die Sitzung der Befehlszeilenschnittstelle. quit 54 IBM Security AppScan Source Utilities: Benutzerhandbuch Ausgabe Protokollierung in ’c:\mylogfile.log’... AllApplications>> new testit c:\AppTest AllApplications>> cd testit AllApplications\testit>> import c:\TestApps\testproj\*.ppf AllApplications\testit>> refresh AllApplications\testit>> ls 214: testproj (Project [local]) AllApplications\testit>> la testit hat keine aktuellen Beurteilungen. Überprüfung Neue Überprüfung gestartet um 15:41:55 Überprüfung von Projekt ’testproj’ (1 von 1) Projekt wird für Überprüfung vorbereitet... . . . Datei C:\TestApps\\testproj\src\se\bluefish\blueblog\metarepository\Meta wird durchsucht Category.java (21 von 33) Datei C:\TestApps\testproj\src\se\bluefish\blueblog\metarepository\Meta wird durchsucht Repository.java (22 von 33) ------------------Gesamtzahl der Aufrufseiten: 348 Gesamtzahl der definitiven Security-Ergebnisse mit hohem Schweregrad: 5 Gesamtzahl der definitiven Security-Ergebnisse mit mittlerem Schweregrad: 1 Gesamtzahl der definitiven Security-Ergebnisse mit niedrigem Schweregrad: 4 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit hohem Schweregrad: 0 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit mittlerem Schweregrad: 8 Gesamtzahl der fehlerverdächtigen Security-Ergebnisse mit niedrigem Schweregrad: 0 Gesamtzahl der Scan-Abdeckungsergebnisse mit hohem Schweregrad: 16 Gesamtzahl der Scan-Abdeckungsergebnisse mit mittlerem Schweregrad: 27 Gesamtzahl der Scan-Abdeckungsergebnisse mit niedrigem Schweregrad: 16 Gesamtzahl der Zeilen: 7386 Max S-Dichte: 732.2772813430815 Max V/KLoC: 10.42512862171676 S-Dichte: 732.2772813430815 V/KLoC: 10.42512862171676 AllApplications\testit>> register AllApplications\testit>> ’testit’ wurde erfolgreich registriert. AllApplications\testit>> pa Beurteilung erfolgreich veröffentlicht. AllApplications\testit>> la AllApplications\testit>> 27001: testit (Application, Fri Mar 14 15:41:55 EDT 2008) AllApplications\testit>> Kapitel 2. AppScan Source-Befehlzeilenschnittstelle (CLI) 55 56 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 3. Das Ounce/Ant-Buildtool Dieser Abschnitt beschreibt, wie Ounce/Ant, ein AppScan Source-Builddienstprogramm, das AppScan Source und Apache Ant integriert, verwendet wird. Die Integration von Ounce/Ant mit Ihrer Ant-Umgebung hilft Ihnen bei der Automatisierung von Builds und Codebeurteilungen. Ounce/Ant ist ein AppScan Source-Buildtool, das sich in Ihre Apache Ant-Buildumgebung integriert. Statt AppScan Source-Projekt- und -Anwendungsdateien in AppScan Source for Analysis manuell zu erstellen und zu konfigurieren, erstellt Ounce/Ant automatisch AppScan Source-Projekte und -Anwendungen, die alle erforderlichen Angaben enthalten, wie z. B. Quellendateien und den Klassenpfad. AppScan Source kann die Projekt- und Anwendungsdateien dann überprüfen. Die folgenden Versionen von Apache Ant und dem Java™ JDK sind für die Verwendung mit Ounce/Ant erforderlich: v Apache Ant Version 1.7 oder höher v Java JDK Version 1.3.1 oder höher v Java JDK Version 1.4 für die Verwendung mit der Task var erforderlich Integration von Ounce/Ant und Apache/Ant Die in diesem Taskabschnitt beschriebenen Schritte sind erforderlich, um Ounce/ Ant in die Apache/Ant-Buildumgebung zu integrieren. Vorgehensweise 1. Kopieren Sie die Datei ounceant.jar und optional auch ant-contrib-1.0b3.jar in das Verzeichnis ant lib. Die AppScan Source-Installation platziert ounceant.jar und ant-contrib-1.0b3.jar in <installationsverzeichnis>\lib (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). 2. Optional: Überschreiben Sie die Eigenschaft build.compiler. (Unter „Projekte erstellen” auf Seite 59 finden Sie weitere Informationen zum Überschreiben von build.compiler.) Überschreiben Sie diese Eigenschaft mithilfe einer der folgenden Methoden: v Verwenden Sie ein Eigenschaftstag in der Datei build.xml. <property name="build.compiler" value="com.ouncelabs.ounceant.OunceCompilerAdapter"/> v Geben Sie den Wert für build.compiler in der Befehlszeile ein, wenn Sie Ant mit der Option -D aufrufen. ant -Dbuild.compiler= com.ouncelabs.ounceant.OunceCompilerAdapter v Nehmen Sie den Wert für build.compiler in eine Textdatei auf und weisen Sie Ant wie in der Ant-Dokumentation beschrieben an, die Eigenschaften in dieser Datei mit der Option properties zu laden. 3. Erstellen Sie taskdef-Tasks. Um Ounce/Ant-Tasks verwenden zu können, müssen Sie ounceant.jar in einer taskdef-Task definieren. Beispiel: © Copyright IBM Corp. 2003, 2015 57 <taskdef resource="com/ouncelabs/ounceant/task/ounce.xml" classpath="ounceant.jar"/> Damit Sie die Task var verwenden können, muss ant-contrib-1.0b3.jar die Task taskdef wie folgt referenzieren: <taskdef resource="net/sf/antcontrib/antlib.xml"/> Ounce/Ant-Eigenschaften Die Tabelle in diesem Abschnitt beschreibt die optionalen Ounce/Ant-Eigenschaften. Eigenschaft ounce.default. configuration_name Gültige Werte/ Standardwerte <Konfigurationsname> Beschreibung Im AppScan Source-Projekt erstellter Konfigurationsname. Sofern nicht festgelegt, wird 'Configuration 1' verwendet. ounce.build.compiler Compilername Name der ausführbaren Compilerdatei, die verwendet wird, wenn die Ant-Eigenschaft build.compiler für die Verwendung von OunceCompilerAdapter konfiguriert ist. Sofern nicht festgelegt, wird javac verwendet. ounce.project_name name Projektname. Sofern nicht festgelegt, generiert Ounce/Ant einen Namen. Weitere Informationen finden Sie in „Projekte benennen” auf Seite 61. ounce.project_dir <Projektverzeichnis> (Erforderlich zur Festlegung von ounce.project_name) Sofern nicht festgelegt, wird das Verzeichnis der aktuellen Builddatei verwendet. ounce.application_name <Anwendungsname> Anwendungsname. Weitere Informationen hierzu finden Sie in „Anwendungen erstellen und benennen” auf Seite 62. ounce.application_dir <Anwendungsverzeichnis> Arbeitsverzeichnis der Anwendung. (Erforderlich zur Festlegung von ounce.application_name) 58 Arbeitsverzeichnis des Projekts. IBM Security AppScan Source Utilities: Benutzerhandbuch Sie müssen ounce.application_name und ounce.application_dir festlegen, um ein Projekt zu einer Anwendung hinzufügen zu können. Eigenschaft ounce.projects. store_full_paths Gültige Werte/ Standardwerte Beschreibung true oder false Speichert absolute Pfade, die in Anwendungen und Projekten erstellt werden. (optional) Sofern nicht festgelegt, werden relative Pfade verwendet. Eigenschaften festlegen Sie können mithilfe der Task var Eigenschaften beliebig oft festlegen. Beim expliziten oder impliziten Aufruf verwendet ounceCreateProject die aktuellen Eigenschaftswerte. Sie können Eigenschaften mithilfe eines der Verfahren festlegen, die im Abschnitt zu dieser Task skizziert sind. Vorgehensweise v Verwenden Sie ein Attribut für eine Ounce/Ant-Task, wenn das Attribut vorhanden ist. v Verwenden Sie vor der entsprechenden AppScan Source-Task eine var-Task. Eigenschaften, die mit var festgelegt werden, verbleiben im Geltungsbereich nur derjenigen Datei, in der sie festgelegt werden. Um die Task var zu benutzen, muss die Ant-Beitragsbibliothek im Ant-Verzeichnis lib vorhanden sein und die Task taskdef muss sie referenzieren. <taskdef resource="net/sf/antcontrib/antlib.xml"/> v Verwenden Sie -D auf der Ant-Befehlszeile. v Legen Sie die Eigenschaft in einer Buildeigenschaftsdatei (normalerweise mit dem Namen build.properties) fest. Projekte erstellen Die Task ounceCreateProject generiert AppScan Source-Projekte. Verwenden Sie ounceCreateProject explizit oder implizit: v Rufen Sie ounceCreateProject explizit in einer Ant-Builddatei auf. v Rufen Sie ounceCreateProject implizit jedes Mal auf, wenn die Task javac aufgerufen wird, indem Sie die Eigenschaft build.compiler überschreiben. Projekte können zu Anwendungen gruppiert werden. Sie können das optionale Anwendungsattribut oder die passenden Ounce/Ant-Eigenschaften verwenden, um das erstellte Projekt in einer Anwendung zu platzieren. Projekte können mit Ounce/Ant auch erweitert werden. Projektattribute aus mehreren Projekten können in einem AppScan Source-Projekt zusammengeführt werden. Wenn mehrere javac- oder ounceCreateProject-Tasks dasselbe Projekt erweitern sollen, behalten Sie denselben Namen und das Verzeichnis bei. Anmerkung: Wenn Sie build.compiler zum Erstellen von Projekten überschreiben, führen Sie zuerst ant clean aus. Informationen zur Verwendung von Eigenschaften und ihren verschachtelten Attributen finden Sie in „ounceCreateProject-Taskbeispiel” auf Seite 60. Kapitel 3. Das Ounce/Ant-Buildtool 59 ounceCreateProject ounceCreateProject akzeptiert die folgenden Parameter und verschachtelten Elemente: Als Attribute angegebene Parameter Beschreibung name Name für das Projekt. workingDir Arbeitsverzeichnis für das Projekt. classpath Klassenpfad für das Projekt. sourcepath Quellenpfad für die Projektquellenabhängigkeiten. Diese Dateien werden nicht auf Sicherheitslücken überprüft. jdkName AppScan Source-JDK-Name, der beim Scannen des Projekts verwendet werden muss. (Muss in AppScan Source for Analysis erstellt werden.) appName Anwendung, die dieses Projekt enthält (optional). appDir Anwendungsverzeichnis (optional) Als verschachtelte Elemente angegebene Parameter Beschreibung ounceSourceRoot Gibt die Projektquellenstammverzeichnisse an ounceWeb Gibt die Projektwebinhalte an ounceExclude Ermöglicht den Ausschluss bestimmter Dateien aus der im übergeordneten Element angegebenen Dateigruppe. ounceCreateProject-Taskbeispiel <ounceCreateProject name="myProjectName" workingDir="${sandbox}/myProject" classpath="${my.class.path}" sourcepath="${my.source.path}" jdkName="jdk15" appName="myApp" appDir="${sandbox}> <ounceSourceRoot dir="src"/> <ounceExclude dir="src/test"/> <ounceExclude file="src/mydir/Bad.java"/> <ounceSourceRoot dir="src2"/> <ounceSourceRoot file="src3/mydir.java"/> <ounceWeb webContextRoot="web/myProject.war"/> <ounceExclude dir="web/test"/> <ounceExclude file="web/partial.jsp"/> </ounceCreateProject> ounceSourceRoot ounceSourceRoot akzeptiert die folgenden Parameter, die als Attribute angegeben werden: 60 IBM Security AppScan Source Utilities: Benutzerhandbuch Als Attribute angegebene Parameter Beschreibung dir Pfad zu einem gültigen JavaQuellenstammverzeichnis file Pfad zu einer einzelnen Datei ounceWeb ounceWeb akzeptiert die folgenden Parameter, die als Attribute angegeben werden. Als Attribute angegebene Parameter Beschreibung webContextRoot Pfad zu einem gültigen Webkontextstammverzeichnis oder einer war-Datei. ounceExclude ounceExclude akzeptiert die folgenden Parameter, die als Attribute angegeben werden: Als Attribute angegebene Parameter Beschreibung dir Pfad zum auszuschließenden Verzeichnis file Pfad zu einer einzelnen auszuschließenden Datei Projekte benennen Sie können ein Projekt unter Verwendung der Standardbenennungskonvention oder durch manuelle Erstellung eines Projektnamens benennen. Standardbenennung von Projekten Das Standardbenennungsschema in Ounce/Ant gestattet die Erstellung eindeutiger Projektnamen. <Verzeichnis>_<Zielname>[_<Zahl>] v <Verzeichnis>: Name des Projektverzeichnisses (schließt nicht den gesamten Pfad ein) v <Zielname>: Name des aktuellen Ziels v <Zahl>: Eine ganze Zahl beginnend bei 1, die nach Bedarf erhöht wird, um zu garantieren, dass sie eindeutig ist. Beachten Sie, dass <Zahl> nur bei Vorliegen eines Konflikts auftritt. Beispiel Mit den folgenden Parametern wird der Name zu test_compile. Wenn zwei Projekte am Kompilierungsziel erstellt werden, wird der zweite Name zu test_compile_1. <Arbeitsverzeichnis> = C:\mydir\test <Verzeichnis> = test <Zielname> = compile Kapitel 3. Das Ounce/Ant-Buildtool 61 Projekte manuell benennen Wenn Sie ein Projekt mit ounceCreateProject erstellen, können Sie das Attribut name zur Angabe eines Projektnamens verwenden. Wenn das Attribut name nicht angegeben ist oder Sie Projekte mithilfe von javac erstellen, fragt die AppScan Source-Task die Eigenschaft ounce.project_name ab. Ist diese festgelegt, dann wird dieser Wert als Projektname verwendet. Deswegen kann die Eigenschaft ounce.project_name mithilfe von var vor jedem Aufruf der Task javac festgelegt werden, wodurch für jedes erstellte Projekt ein eindeutiger Name bereitgestellt wird. Anwendungen erstellen und benennen Ounce/Ant kann im laufenden Betrieb AppScan Source-Anwendungen erstellen und die erstellten AppScan Source-Projekte in den Anwendungen gruppieren. Sie können diese Anwendungen mit zwei Ant-Eigenschaften erstellen: v ounce.application_name v ounce.application_dir Wichtig: Um die Anwendung zu erstellen, müssen Sie entweder beide Eigenschaften festlegen oder die Attribute appName und AppDir der Task ounceCreateProject festlegen. Wenn diese Eigenschaften während der Projekterstellung festgelegt werden, wird das Projekt zu einer Anwendung mit dem Namen hinzugefügt, deren Name durch ounce.application_name und deren Arbeitsverzeichnis durch ounce.application_dir angegeben ist. Sie können diese Eigenschaften auch mehrfach mithilfe der Task var festlegen, um Projekte in den gewünschten Anwendungen zu gruppieren. Ein Anwendungsname ist geeignet, wenn aus ihm die Kombination der Projekte in einer einzelnen Anwendung hervorgeht. Tipp: Wenn Sie ounceCreateProject verwenden, sollten Sie auch mithilfe der Attribute appName und appDir die Anwendung angeben, in die das Projekt eingeschlossen werden soll. Integration eines Builds Die Task ounceCli ermöglicht den Zugriff auf die AppScan Source-Befehlzeilenschnittstelle (CLI), um während eines Builds eine Überprüfung durchzuführen. Die Task ounceCli kann cli aus Ant aufrufen. ounceCli erfordert die Angabe der folgenden Parameter als Attribute: v dir: Position des AppScan Source-Installationsverzeichnisses v script: Position der auszuführenden cli-Scriptdatei v output: Position der cli-Ausgabedatei Beispiel <ounceCli dir="${installDir}" script="${scripts}/cli_script.txt" output="log.txt"/> 62 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 4. AppScan Source-Data Access-API Die Data Access-API ermöglicht Zugriff auf Beurteilungsergebnisse, einschließlich von Untersuchungsergebnissen und Details zu Untersuchungsergebnissen, die von AppScan Source generiert wurden. Sie bietet auch Zugriff auf Beurteilungskennzahlen wie Datum und Zeit der Analyse, Codezeilen, Dichte der Sicherheitslücken und Anzahl der Ergebnisse. Die Data Access-API ist in der Installation der folgenden AppScan Source-Komponenten enthalten: v AppScan Source for Analysis v AppScan Source-Befehlzeilenschnittstelle (CLI) Die Data Access-API wird installiert als <installationsverzeichnis>\sdk\ ouncesdk.jar (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Wenn ein Programm, das das SDK verwendet, ausgeführt wird, müssen Sie die folgenden Argumente von Java Virtual Machine (JVM) in der Befehlszeile angeben: java -classpath <Installationsverzeichnis>\lib\avalon-framework-4.1.5.jar; <Installationsverzeichnis>\lib\icu4j-4_8.jar; <Installationsverzeichnis>\lib\jacorb.jar; <Installationsverzeichnis>\lib\log4j-1.2.8.jar; <Installationsverzeichnis>\lib\logkit-1.2.jar; <Installationsverzeichnis>\sdk\ouncesdk.jar; <Installationsverzeichnis>\lib\xml-apis.jar; <Installationsverzeichnis>\lib\saxon9.jar ... com.company.product.ClassName Die Data Access-API erfordert JDK ab Version 1.5. © Copyright IBM Corp. 2003, 2015 63 Data Access-API-Objektmodell Diagramm 1 - UML-Diagramm (UML = Unified Modeling Language) mit Objektmodell für Beurteilungen Factory 1 - openAssessment() - getPublishedAssessments() 1..* AssessmentResults 1 - getAssessments() - getAssessmentForApplication() - getAssessmentForProject() * Assessment * 1 1 - getAssessments() - getAssessedFiles() * AssessedFile 64 IBM Security AppScan Source Utilities: Benutzerhandbuch Diagramm 2 - UML-Diagramm (UML = Unified Modeling Language) mit Objektmodell für Ergebnisse AssessmentResults Assessment 1 * 1 1 AssessedFile - getFindings() 1 * * - getFindings() - getFindings() Finding * 1 - getTrace() 0..1 Trace 1 - getCalls() 1..* Call Diagramm 1 - UML-Diagramm (UML = Unified Modeling Language) mit Objektmodell für Beurteilungen Oben im Diagramm befindet sich die Klasse Factory. Die Klasse Factory verfügt über eine Beziehung zur Klasse AssessmentResults, die über zwei Methoden in der Klasse Factory hergestellt wird: openAssessment() und getPublishedAssessments(). Die Beziehung zwischen diesen beiden Klassen besteht zwischen einer Klasse Factory und einer oder mehreren Klasse(n) AssessmentResults. Unter der Klasse Factory ist im Diagramm die Klasse AssessmentResults dargestellt. Die Klasse AssessmentResults verfügt über eine Beziehung zur Klasse Assessment, die über drei Methoden (getAssessments(), getAssessmentForApplication() und getAssessmentForProject()) hergestellt wird. Die Beziehung zwischen diesen beiden Klassen verläuft besteht zwischen einer Klasse AssessmentResults und null oder mehr Klassen Assessment. Unter der Klasse AssessmentResults ist im Diagramm die Klasse Assessment dargestellt. Eine Klasse Assessment verfügt über eine Beziehung zu null oder mehr Klassen AssessedFile, die über die Methode getAssessedFiles() hergestellt wird. Die Klasse Assessment hat auch eine Beziehung zu sich selbst, die über die Methode Kapitel 4. AppScan Source-Data Access-API 65 getAssessments() hergestellt wird. Diese Beziehung besteht zwischen einer Klasse Assessment zu null oder mehr untergeordneten Klassen Assessment. Unter der Klasse Assessment ist im Diagramm die Klasse AssessedFile dargestellt. Eine Klasse Assessment verfügt über eine Beziehung zu null oder mehr Klassen AssessedFile, die über die Methode getAssessedFiles() hergestellt wird. Diagramm 2 - UML-Diagramm (UML = Unified Modeling Language) mit Objektmodell für Ergebnisse Oben im Diagramm sind die drei Klassen AssessmentResults, Assessment und AssessedFile dargestellt. Jede dieser drei Klassen verfügt über eine Beziehung zur Klasse Finding, die über die Methode getFindings() hergestellt wird. Die Beziehung besteht zwischen einer der erstgenannten Klassen zu null oder mehr Klassen Finding. Die Klasse Assessment verfügt auch über eine Beziehung zu sich selbst, die zwischen der Klasse Assessment und null oder mehr untergeordneten Klassen Assessment besteht. Unter der Klasse Finding ist im Diagramm die Klasse Trace dargestellt. Eine Klasse Finding verfügt über eine Beziehung zu null oder mehr Klassen Trace, die über die Methode getTrace() hergestellt wird. Unter der Klasse Trace ist im Diagramm die Klasse Call dargestellt. Eine Klasse Trace verfügt über eine Beziehung zu einer oder zu mehreren Klassen Call, die über die Methode getCalls() hergestellt wird. Data Access-API verwenden Dieser Abschnitt enthält eine Anzahl von Szenarios, für die Sie die Data AccessAPI verwenden können. Umfassendere Beispiele finden Sie in den Dateien SamplePublished.java und SampleSdk.java, die im Verzeichnis <installationsverzeichnis>\sdk\sample\com\ouncelabs\sdk\sample enthalten sind (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Beurteilung aus einer Datei öffnen Dieser Beispielcode wird als Muster für das Öffnen einer Beurteilung aus einer Datei bereitgestellt. Factory factory = new Factory(); try { factory.init(install_dir); factory.login("admin", "123456", "localhost"); AssessmentResults assessmentResults = factory.openAssessment("myApp.ozasmt"); printAssessmentResults(assessmentResults); } finally { factory.shutdown(); } Liste der Ergebnisse ausgeben Dieser Beispielcode wird als Muster für das Ausgeben einer Liste der Ergebnisse bereitgestellt. private void printAssessment(AssessmentResults results) throws OunceException { Assessment childAssessment = assessmentResults. getAssessmentForApplication("myApp"); Finding[] findings = childAssessment.getFindings(); 66 IBM Security AppScan Source Utilities: Benutzerhandbuch for (int i = 0; i < findings.length; ++i) { Finding finding = findings[i]; Object[] data = new Object[] { finding.getApiName(), finding.getVulnerabilityType(), finding.getClassification(), finding.getSeverity(), finding.getFilename(), new Integer(finding.getLineNumber()), finding.getSrcContext(), Boolean.valueOf(finding.isExcluded()), }; printData(i,data); Trace trace = finding.getTrace(); if (trace != null) { printTrace(trace); } } } Liste veröffentlichter Beurteilungen abrufen Dieser Beispielcode wird als Muster für das Ausgeben einer Liste von veröffentlichten Beurteilungen bereitgestellt. Factory factory = new Factory(); try { factory.init(install_dir); factory.login("admin", "123456", "localhost"); AssessmentFilter filter = new AssessmentFilter(20); filter.setUserName("joe"); filter.setDateProximity(2.5, DateProximityUnit.DAY); AssessmentResults[] publishedAssessments = factory.getPublishedAssessments(filter); printAssessmentList(publishedAssessments); } finally { factory.shutdown(); } Trace ausgeben Dieser Beispielcode wird als Muster für das Ausgeben eines Trace bereitgestellt. private void printTrace(Trace trace) throws OunceException { Call[] calls = trace.getCalls(); for (int i = 0; i < calls.length; ++i) { printCall(calls[i], 1); } } private void printCall(Call call, int indentLevel) throws OunceException { printSpaces(indentLevel * 4); Object data[] = new Object[] { call.getFilename(), call.getClassName(), call.getMethodName(), call.getSrcContext() }; printData(data); Call[] calls = call.getCalls(); for (int i = 0; i < calls.length; ++i) { printCall(calls[i], indentLevel + 1); } } Kapitel 4. AppScan Source-Data Access-API 67 Klassen und Methoden der Data Access-API Dieser Abschnitt enthält eine detaillierte Beschreibung der Klassen und Methoden der AppScan Source-Data Access-API. Die Klassen lauten wie folgt: v com.ouncelabs.sdk.Factory v com.ouncelabs.sdk.assessment.AssessedFile v com.ouncelabs.sdk.assessment.Assessment v com.ouncelabs.sdk.assessment.AssessmentDiff v com.ouncelabs.sdk.assessment.AssessmentResults v com.ouncelabs.sdk.assessment.Finding v v v v v v com.ouncelabs.sdk.assessment.Trace com.ouncelabs.sdk.assessment.Call com.ouncelabs.sdk.assessment.SeverityType com.ouncelabs.sdk.assessment.ClassificationType com.ouncelabs.sdk.assessment.AssessmentFilter com.ouncelabs.sdk.assessment.OunceException AssessedFile Die Klasse com.ouncelabs.sdk.assessment.AssessedFile stellt eine Beurteilung einer einzelnen Datei dar. Sie bietet Zugriff auf die Beurteilungsdaten einer Datei, wie zum Beispiel Ergebnisse und Statistikdaten. AssessedFile.getFindings Signatur public Finding[] getFindings() Beschreibung Bietet Zugriff auf alle Ergebnisse der vorliegenden AssessedFile. Rückgabewert Ein Array von Ergebnisobjekten für diese beurteilte Datei. Löst aus OunceException, wenn die Data Access-API die Ergebnisse nicht abrufen kann. AssessedFile.getStats Signatur public AssessmentStats getStats() Beschreibung Bietet Zugriff auf zusammengefasste Statistikdaten für diese Datei, wie zum Beispiel die Gesamtzahl der Ergebnisse, Gesamtzahl der Zeilen und so weiter. Rückgabewert AssessmentStats-Objekt mit den Statistikdaten dieser Beurteilung. 68 IBM Security AppScan Source Utilities: Benutzerhandbuch Löst aus OunceException, wenn die Data Access-API die Statistikdaten nicht abrufen kann. AssessedFile.getFilename Signatur public String getFilename() Beschreibung Bietet Zugriff auf den absoluten Pfad zu der durch AssessedFile dargestellten Datei. Rückgabewert Zeichenfolge. die den absoluten Pfad zu der durch AssessedFile dargestellten Datei enthält. Beurteilung Die Klasse com.ouncelabs.sdk.assessment.Assessment stellt eine Beurteilung einer Anwendung oder eines Projekts dar. Assessment.getFindings Signatur public Finding[] getFindings() Beschreibung Bietet Zugriff auf alle Ergebnisse der vorliegenden Beurteilung. Rückgabewert Ein Array von Ergebnisobjekten für diese Beurteilung. Assessment.getStats Signatur public AssessmentStats getStats() Beschreibung Eine vollständige Liste von Statistikdaten, einschließlich: Gesamtzahl der anaylsierten Dateien, Gesamtzahl der gefundenen Sicherheitslücken, Zeitpunkt der Überprüfung und Dichte der Sicherheitslücken. Rückgabewert AssessmentStats-Objekt mit den Statistikdaten dieser Beurteilung. Assessment.getAssessments Signatur public Assessment[] getAssessments() Kapitel 4. AppScan Source-Data Access-API 69 Beschreibung Gibt die untergeordneten Elemente der Assessment-Objekte dieser Beurteilung wieder. Da Projektbeurteilungen keine untergeordneten Elemente haben, werden untergeordnete Beurteilungsobjekte nur bei Anwendungsbeurteilungen wiedergegeben. Rückgabewert v Bei Anwendungsbeurteilungen wird ein Array von Assessment-Objekten wiedergegeben, ein Objekt für jedes überprüfte Projekt in der Anwendung. v Bei Projektbeurteilungen wird ein leeres Array wiedergegeben. Löst aus OunceException, wenn die Data Access-API die Beurteilungen nicht abrufen kann. Assessment.getFiles Signatur public AssessedFile[] getFiles() Beschreibung Bietet Zugriff auf jede Datei, die Teil dieser Beurteilung war. Rückgabewert Ein Array von AssessedFile-Objekten. Dabei stellt jedes Objekt eine Datei dar, die Teil der Beurteilung war. Löst aus OunceException, wenn die Data Access-API die beurteilten Dateien nicht abrufen kann. Assessment.getFileByPath Signatur public AssessedFile getFileByPath(filePath) Beschreibung Bietet Zugriff auf eine beurteilte Datei nach dem Pfad. Rückgabewert Das AssessmentFile-Objekt, das einem angegebenen Dateipfad entspricht, oder Null, wenn der angegebene Dateipfad nicht mit einer beurteilten Datei übereinstimmt. Löst aus OunceException, wenn die Data Access-API die beurteilten Dateien nicht abrufen kann. 70 IBM Security AppScan Source Utilities: Benutzerhandbuch Assessment.getAssesseeName Signatur public String getAssesseeName() Beschreibung Zeigt den Namen der Anwendung oder des Projekts an, von dem diese Beurteilung erstellt wurde. Rückgabewert Name einer Anwendung oder eines Projekts. AssessmentDiff Die Klasse com.ouncelabs.sdk.assessment.AssessmentDiff enthält den Unterschied zwischen zwei Beurteilungen, gibt also das Delta zwischen zwei Beurteilungen an. AssessmentDiff.getCommonFindings Signatur public Finding[] getCommonFindings() Beschreibung Ruft die Ergebnisse ab, die in beiden Beurteilungen vorhanden sind. AssessmentDiff.getLostFindings Signatur public Finding[] getLostFindings() Beschreibung Ruft die Ergebnisse ab, die in der ersten, nicht aber in der zweiten Beurteilung vorhanden waren. AssessmentDiff.getNewFindings Signatur public Finding[] getNewFindings() Beschreibung Ruft die Ergebnisse ab, die in der zweiten, nicht aber in der ersten Beurteilung vorhanden waren. AssessmentFilter Verwenden Sie die Klasse com.ouncelabs.sdk.assessment.AssessmentFilter, um Filterbedingungen für den Abruf veröffentlichter Beurteilungen anzugeben. AssessmentFilter.AssessmentFilter Signatur public AssessmentFilter(int maxResults) Kapitel 4. AppScan Source-Data Access-API 71 Beschreibung Konstruktorfunktion, die nur die maximale Anzahl der veröffentlichten Beurteilungen, die abgerufen werden sollen, angibt. Sie können zusätzliche Filteroptionen angeben, indem Sie die festgelegten Methoden in der Klasse aufrufen (zum Beispiel setUserName(), um nach veröffentlichten Benutzern zu filtern). Parameter v maxResults: Die maximale Anzahl der zurückgegebenen Ergebnisse. AssessmentFilter.AssessmentFilter Signatur public AssessmentFilter(String appName, String userName, Double dateProximityDuration, int DateProximityUnit, Long dateRangeStart, Long dateRangeEnd, int maxResults) Beschreibung Konstruktorfunktion, die alle Kriterienoptionen als Argumente nimmt. Parameter v appName: Der Anwendungsname. (Null, wenn nicht von appName gefiltert.) v userName: Der Benutzer, der die Anwendung veröffentlicht hat. (Null, wenn nicht nach Benutzername gefiltert wurde.) v dateProximityDuration: Wenn paarweise verbunden mit dateProximityUnit, die Anzahl der zu filternden Einheiten (Tage, Wochen usw.) beginnend mit dem aktuellen Datum. (Null, wenn nicht nach Datumsnähe gefiltert wurde.) v dateProximityUnit: Wenn paarweise verbunden mit dateProximityDuration, die Einheit, wie Tage, Wochen usw., nach der gezählt wird. Erforderlich, wenn dateProximityDuration angegeben wird. Weitere Informationen zu gültigen Einheiten finden Sie in „DateProximityUnit.value” auf Seite 78. v dateRangeStart: Der Start eines Datumsbereichs. (Null, wenn nicht nach Datumsbereich gefiltert wird.) v dateRangeEnd: Das Ende des Datumsbereichs (Null, wenn nicht nach Datumsbereich gefiltert wird.) v maxResults: Die maximale Anzahl der zurückgegebenen Ergebnisse. AssessmentResults Die Klasse com.ouncelabs.sdk.assessment.AssessmentResults stellt die gesamte Beurteilung dar. AssessmentResults.getFindings Signatur public Finding[] getFindings() Beschreibung Bietet Zugriff auf alle Ergebnisse der Klasse AssessmentResults. 72 IBM Security AppScan Source Utilities: Benutzerhandbuch Rückgabewert Ein Array von Ergebnisobjekten für diese Beurteilung. Löst aus OunceException, wenn die Data Access-API die Ergebnisse nicht abrufen kann. AssessmentResults.getAssessments Signatur public Assessment[] getAssessments() Beschreibung Bietet Zugriff auf die Beurteilungsdaten jeder Anwendung, die als Teil der Klasse AssessmentResults beurteilt wurde. Rückgabewert Ein Array von Beurteilungsobjekten, jeweils eines für jede Anwendung, die Teil der Klasse AssessmentResults war. Löst aus OunceException, wenn die Data Access-API die Beurteilungen nicht abrufen kann. AssessmentResults.getStats Signatur public AssessmentStats getStats() Beschreibung Bietet Zugriff auf zusammengefasste Statistikdaten für diese Beurteilung, wie zum Beispiel die Gesamtzahl der beurteilten Dateien, Gesamtzahl der Zeilen und so weiter. Rückgabewert AssessmentStats-Objekt mit den Statistikdaten dieser Beurteilung. Löst aus OunceException, wenn die Data Access-API die Beurteilungsstatistikdaten nicht abrufen kann. AssessmentResults.getAssessmentForApplication Signatur public Assessment[] getAssessmentForApplication(String applicationName) Beschreibung Bietet Zugriff auf die Beurteilungsdaten der angegebenen Anwendung. Kapitel 4. AppScan Source-Data Access-API 73 Parameter applicationName: Der Anwendungsname. Rückgabewert Ein Array von Beurteilungsobjekten, jeweils eines für jede Anwendung, die dem angegebenen Namen entspricht. Löst aus OunceException, wenn die Data Access-API die Beurteilungen nicht abrufen kann. Hinweis zur Kompatibilität Diese Methode ist nur gültig für Beurteilungen, die mit AppScan Source (Ounce) ab Version 6.0 ausgeführt wurden. Wird sie für Beurteilungen aufgerufen, die mit einer früheren Version von AppScan Source erstellt wurden, wird stets ein leeres Array zurückgegeben. AssessmentResults.getAssessmentForProject Signatur public Assessment[] getAssessmentForProject(String projectName, String applicationName) Beschreibung Bietet Zugriff auf die Beurteilungsdaten für das angegebene Projekt in der angegebenen Anwendung. Parameter projectName: Der Projektname. applicationName: Der Name der Anwendung, in der sich das Projekt befindet. Rückgabewert Ein Array von Beurteilungsobjekten, jeweils eines für jedes Projekt, das dem angegebenen Namen entspricht. Löst aus OunceException, wenn die Data Access-API die Beurteilungen nicht abrufen kann. Hinweis zur Kompatibilität Diese Methode ist nur gültig für Beurteilungen, die mit AppScan Source (bisher unter der Bezeichnung 'Ounce' bekannt) ab Version 6.0 ausgeführt wurden. Wird sie für Beurteilungen aufgerufen, die mit einer früheren Version von AppScan Source erstellt wurden, wird stets ein leeres Array zurückgegeben. 74 IBM Security AppScan Source Utilities: Benutzerhandbuch AssessmentResults.getName Signatur public String getName() Beschreibung Gibt den Namen der AssessmentResults zurück. Rückgabewert Zeichenfolge, die den Namen der AssessmentResults enthält. AssessmentResults.getMessages Signatur public Message[] getMessages() Beschreibung Bietet Zugriff auf alle Statusnachrichten, die bei Ausführung der Beurteilung in AppScan Source for Analysis in der Konsole angezeigt wurden. Rückgabewert Ein Array von Nachrichtenobjekten. Löst aus OunceException, wenn die Data Access-API die Nachrichten nicht abrufen kann. Call Die Klasse com.ouncelabs.sdk.assessment.Call stellt einen Knoten in einem Trace von AppScan Source-Trace dar. Call.getCalls Signatur public Call[] getCalls() Beschreibung Bietet Zugriff auf die Aufrufe, die im Kontext dieses Aufrufs erfolgt sind. Rückgabewert Ein Array von Aufrufobjekten in der Reihenfolge, in der sie aufgerufen wurden. Löst aus OunceException, wenn die Data Access-API die Aufrufe nicht abrufen kann. Call.getFilename Signatur public String getFilename() Kapitel 4. AppScan Source-Data Access-API 75 Beschreibung Bietet Zugriff auf den Dateinamen, in dem dieser Aufruf erfolgt ist. Rückgabewert Der Dateiname dieses Aufrufs. Call.getLineNumber Signatur public int getLineNumber() Beschreibung Bietet Zugriff auf die Zeilennummer, bei der der Aufruf erfolgte. Rückgabewert Die Zeilennummer dieses Aufrufs. Call.getColumnNumber Signatur public int getColumnNumber() Beschreibung Dieser Aufruf bietet Zugriff auf die Spaltennummer, bei der der Aufruf erfolgte. Rückgabewert Die Spaltennummer, bei der der Aufruf erfolgte. Call.getSignature Signatur public String getSignature() Beschreibung Bietet Zugriff auf die Signatur der API, die aufgerufen wurde. Rückgabewert Die Signatur dieses Aufrufs. Call.getSrcContext Signatur public String getSrcContext() Beschreibung Bietet Zugriff auf den Quellenkontext dieses Aufrufs. 76 IBM Security AppScan Source Utilities: Benutzerhandbuch Rückgabewert Der Quellenkontext dieses Aufrufs. Call.getMethodName Signatur public String getMethodName() Beschreibung Bietet Zugriff auf den Methodennamen, der aufgerufen wurde. Rückgabewert Der Methodenname dieses Aufrufs. Call.getClassName Signatur public String getClassName() Beschreibung Bietet Zugriff auf den Klassennamen, zu dem die aufgerufene Methode gehört. Rückgabewert Der Klassenname dieser aufgerufenen Methode. Call.getTraceType Signatur public TraceType getTraceType() Beschreibung Bietet Zugriff auf den Tracetyp dieses Aufrufs. Der Tracetyp kann zum Beispiel angeben, ob der Aufruf eine Quelle oder ein Sink ist. Rückgabewert TraceType-Objekt, das den Tracetyp des Aufrufs darstellt. ClassificationType Die Klasse com.ouncelabs.sdk.assessment.ClassificationType stellt die Klassifizierung eines Ergebnisses dar. Statische Elemente v v v v ClassificationType.Vulnerability ClassificationType.Type1 ClassificationType.Type2 ClassificationType.Unknown Kapitel 4. AppScan Source-Data Access-API 77 ClassificationType.value Signatur public int value() Beschreibung Bietet Zugriff auf den Wert dieses ClassificationType-Objekts. Der zurückgegebene Wert entspricht einem der Werte der statischen Elemente. Rückgabewert Der Klassifizierungswert für dieses ClassificationType-Objekt. DateProximityUnit Wenn com.ouncelabs.sdk.assessment.DateProximityUnit mit dateProximityDuration paarweise verbunden wird, bezeichnet dies die Einheit, nach der gezählt wird (also etwa Tage, Wochen usw.). Erforderlich, wenn dateProximityDuration angegeben ist. Gültige Einheiten sind in diesem Abschnitt beschrieben. Statische Elemente v DateProximityUnit.Hour v DateProximityUnit.Day v DateProximityUnit.Week v DateProximityUnit.Month v DateProximityUnit.Year DateProximityUnit.value Signatur public EnumType value() Beschreibung Bietet Zugriff auf den Wert dieses DateProximityUnit-Objekts. Der zurückgegebene Wert entspricht einem der Werte der statischen Elemente. Rückgabewert Der Datumswert für dieses DateProximityUnit-Objekt. Factory com.ouncelabs.sdk.Factory stellt Methoden für die Initialisierung, die Anmeldung und das Öffnen von Beurteilungen bereit. Diese Klasse ist der Eingangspunkt in die Data Access-API. Factory.init Signatur public void init(String installDir, boolean acceptInvalidSSLCerts) 78 IBM Security AppScan Source Utilities: Benutzerhandbuch Beschreibung Initialisiert die Data Access-API. Sie müssen Factory.init aufrufen, bevor Sie eine andere Methode aufrufen. Parameter v installDir: Pfad zum AppScan Source-Installationsverzeichnis (siehe „Standardinstallationsverzeichnis” auf Seite 143). v acceptInvalidSSLCerts: Setzen Sie den booleschen Wert auf 'true', wenn Sie ungültige SSL-Zertifikate akzeptieren wollen (für SSL-Zertifikate wird keine Prüfung erforderlich sein). Löst aus OunceException, wenn die Initialisierung fehlschlägt. Tritt im Allgemeinen nur auf, wenn Sie das falsche Verzeichnis angeben. Factory.shutdown Signatur public void shutdown() Beschreibung Beendet die Data Access-API. Wenn Factory.init aufgerufen wird, müssen Sie Factory.shutdown aufrufen, damit die Data Access-API ordnungsgemäß geschlossen wird. Wird der Aufruf versäumt, dann wird OunceScanner.exe möglicherweise weiter als bösartiger Prozess ausgeführt. Factory.clearCache Signatur public void clearCache() Beschreibung Dieser Aufruf löscht den Cache für die Data Access-API. Er sollte regelmäßig verwendet werden, wenn die Verarbeitung zahlreicher Ergebnisse zu einer übermäßigen Speicherbelegung führt. Factory.login Signatur public void login(String ’Benutzername’, String ’Kennwort’, String ’Hostname’ [int :’Port’]) Beschreibung Meldet sich beim AppScan Enterprise Server an, der an der angegebenen URL oder auf dem durch Namen angegebenen Host ausgeführt wird. Zum Publizieren von Beurteilungen in der AppScan Source-Datenbank müssen Sie sich anmelden. Parameter v Benutzername: Der Benutzername des Benutzers, der sich anmeldet. v Kennwort: Das Kennwort des Benutzers, der sich anmeldet. Kapitel 4. AppScan Source-Data Access-API 79 v Hostname: Die URL oder der Hostname des AppScan Enterprise Servers, an dem Sie sich anmelden möchten. Hostname kann entweder eine IP-Adresse oder ein Domänenname sein. Sofern erforderlich, können Sie den AppScan Enterprise Server-Port durch Anhängen von :<Port> angeben. Beispiel: public void login("hwall", "shhh2008", "MyHost:2880"). Löst aus OunceException, wenn die Anmeldung fehlschlägt. Factory.openAssessment Signatur public AssessmentResults openAssessment(String ’Pfadname’) Beschreibung Öffnet die über den Pfadnamen angegebene Beurteilung. Parameter Pfadname: Pfadname zu einer Beurteilungsdatei. Rückgabewert Das AssessmentResults-Objekt, das die überPfadname angegebene Beurteilung darstellt. Löst aus v FileNotFoundException, wenn der angegebene Dateiname nicht vorhanden ist oder nicht geöffnet werden kann. v OunceException, wenn die Data Access-API die Beurteilungsdatei nicht laden kann. Factory.getPublishedAssessments Signatur public AssessmentResults[] getPublishedAssessments(AssessmentFilter filter) Beschreibung Bietet Zugriff auf veröffentlichte Beurteilungen. Nimmt ein AssessmentFilter-Objekt entgegen, mit dem Sie den Satz der abzurufenden veröffentlichten Beurteilungen angeben können. Parameter filter: Ein AssessmentFilter-Objekt, das den Satz abzurufender veröffentlichter Beurteilungen angibt. Rückgabewert Ein Array mit AssessmentResults-Objekten, die mit dem angegebenen Filter übereinstimmen. 80 IBM Security AppScan Source Utilities: Benutzerhandbuch Löst aus OunceException, wenn die Data Access-API die Beurteilungsergebnisse nicht abrufen kann. Factory.diffAssessments Signatur public AssessmentDiff diffAssessments (AssessmentResults result1, AssessmentResults result2) Beschreibung Ermittelt den Unterschied zwischen zwei Beurteilungsergebnissen. Löst aus OunceException. Finding Die Klasse com.ouncelabs.sdk.assessment.Finding stellt ein einzelnes Ergebnis in einer Beurteilung dar. Sie bietet Zugriff auf alle zu einem Ergebnis gehörenden Daten, z. B. Klassifizierung und Schweregrad. Finding.getFilename Signatur public String getFilename() Beschreibung Bietet Zugriff auf den Dateinamen, in dem dieses Ergebnis gefunden wurde. Rückgabewert Eine Zeichenfolge, die den absoluten Pfad zu der Datei enthält, in der dieses Ergebnis gefunden wurde. Finding.getLineNumber Signatur public int getLineNumber() Beschreibung Bietet Zugriff auf die Zeilennummer, in der das Ergebnis gefunden wurde. Rückgabewert Zeilennummer für dieses Ergebnis. Finding.getApiName Signatur public String getApiName() Kapitel 4. AppScan Source-Data Access-API 81 Beschreibung Bietet Zugriff auf den Namen des API für dieses Ergebnis. Rückgabewert API-Name für dieses Ergebnis. Finding.getCallerName Signatur public String getCallerName() Beschreibung Bietet Zugriff auf die Signatur der Methode, die den Aufruf des API enthielt, den dieses Ergebnis darstellt. Rückgabewert Die Signatur des Aufrufenden. Finding.getClassification Signatur public ClassificationType getClassification() Beschreibung Bietet Zugriff auf die aktuelle Klassifizierung des Ergebnisses. Rückgabewert ClassificationType-Objekt, das die Klassifizierung des Ergebnisses darstellt. Finding.getSeverity Signatur public SeverityType getSeverity() Beschreibung Ruft den aktuellen Wert des Schweregrades im Ergebnis ab. Rückgabewert Das SeverityType-Objekt, das den Schweregrad des Ergebnisses darstellt. SeverityType wird unter „SeverityType.value” auf Seite 88 beschrieben. Finding.getVulnerabilityType Signatur public String getVulnerabilityType() 82 IBM Security AppScan Source Utilities: Benutzerhandbuch Beschreibung Bietet Zugriff auf den aktuellen Sicherheitslückentyp des Ergebnisses. Rückgabewert Sicherheitslückentyp für dieses Ergebnis. Sicherheitslückentypen wie z. B. Pufferüberlauf oder SQL-Injection sind in der AppScan Source-Sicherheits-Wissensbasis beschrieben. Finding.getOriginalClassification Signatur public ClassificationType getOriginalClassification() Beschreibung Bietet Zugriff auf die ursprüngliche Klassifizierung des Ergebnisses. Wenn das Ergebnis nicht geändert wurde, ist getOriginal dasselbe wie getClassification. Rückgabewert ClassificationType-Objekt, das die ursprüngliche Klassifizierung eines Ergebnisses darstellt, dessen Klassifizierung geändert wurde. Finding.getOriginalSeverity Signatur public SeverityType getOriginalSeverity() Beschreibung Ruft den ursprünglichen Wert des Schweregrades im Ergebnis ab. Wenn das Ergebnis nicht geändert wurde, ist getOriginalSeverity dasselbe wie getSeverity. Rückgabewert Das SeverityType-Objekt, das den ursprünglichen Schweregrad eines Ergebnisses darstellt, dessen Schweregrad geändert wurde. Finding.getOriginalVulnerabilityType Signatur public String getOriginalVulnerabilityType() Beschreibung Bietet Zugriff auf den ursprünglichen Sicherheitslückentyp des Ergebnisses. Wenn das Ergebnis nicht geändert wurde, ist getOriginalVulnerabilityType dasselbe wie getVulnerability. Rückgabewert Ein VulnerablilityType-Objekt, das den ursprünglichen Sicherheitslückentyp eines Ergebnisses darstellt, dessen Sicherheitslückentyp geändert wurde. Kapitel 4. AppScan Source-Data Access-API 83 Finding.getModifiedClassification Signatur public ClassificationType getModifiedClassification() Beschreibung Bietet Zugriff auf die geänderte Klassifizierung des Ergebnisses. Rückgabewert ClassificationType-Objekt, das die Klassifizierung eines Ergebnisses darstellt, dessen Klassifizierung geändert wurde. ('NULL' bei fehlender Übereinstimmung.) Finding.getModifiedSeverity Signatur public SeverityType getModifiedSeverity() Beschreibung Ruft den geänderten Wert des Schweregrades ab. Ist dasselbe wie getSeverity(), falls geändert. Rückgabewert Das SeverityType-Objekt, das den Schweregrad eines Ergebnisses darstellt, dessen Schweregrad geändert wurde. ('NULL' bei fehlender Übereinstimmung.) Finding.getModifiedVulnerabilityType Signatur public String getModifiedVulnerabilityType() Beschreibung Bietet Zugriff auf den geänderten Sicherheitslückentyp des Ergebnisses. Rückgabewert Ein VulnerablilityType-Objekt, das den Sicherheitslückentyp eines Ergebnisses darstellt, dessen Sicherheitslückentyp geändert wurde. ('NULL' bei fehlender Übereinstimmung.) Finding.getSrcContext Signatur public String getSrcContext() Beschreibung Bietet Zugriff auf den Quellenkontext für dieses Ergebnis. Rückgabewert Quellenkontext für dieses Ergebnis. 84 IBM Security AppScan Source Utilities: Benutzerhandbuch Finding.getDefectSubmissionUser Signatur public String getDefectSubmissionUser() Beschreibung Bietet Zugriff auf den Namen des Benutzers, der dieses Ergebnis zuletzt an ein externes Fehlererfassungssystem übermittelt hat. Beachten Sie, dass es sich hier um den Benutzernamen auf dem Fehlererfassungssystem handelt; dieser kann anders lauten als der AppScan Source-Benutzername. Rückgabewert Der Benutzer der letzten Übergabe dieses Ergebnisses an ein Fehlererfassungssystem. Finding.getDefectSubmissionDate Signatur public String getDefectSubmissionDate() Beschreibung Bietet Zugriff auf die Zeichenfolge des Datums, an dem dieses Ergebnis zuletzt an ein externes Fehlererfassungssystem übermittelt wurde. Rückgabewert Die Übergabedatumszeichenfolge der letzten Übergabe dieses Ergebnisses an ein Fehlererfassungssystem. Finding.getDefectInfo Signatur public String getDefectInfo() Beschreibung Bietet Zugriff auf die externe Fehlererfassungssystem-ID, unter der dieses Ergebnis zuletzt an ein externes Fehlererfassungssystem übermittelt wurde. Rückgabewert Eine Zeichenfolge mit Fehler-IDs, die zu diesem Ergebnis gehören. Finding.getProperties Signatur public String[] getProperties() Beschreibung Dieser Aufruf bietet Zugriff auf die zu diesem Ergebnis gehörenden Eigenschaften. Diese Eigenschaften bieten Informationen zum Sicherheitslückentyp und zum API dieses Ergebnisses. Kapitel 4. AppScan Source-Data Access-API 85 Rückgabewert Array mit Eigenschaften: v Vulnerability.’Wert’: In den Ergebnissichten gemeldeter Sicherheitslückentyp, z. B.: Vulnerability.BufferOverflow Vulnerability.Injection.SQL v Mechanism.’Wert’: API-Sicherheitsmechanismus; wird zur Definition angepasster Berichtskategorien verwendet, z. B.: Mechanism.AccessControl Mechanism.Cryptography v Technology.’Wert’: API-Technologie; wird zur Definition angepasster Berichtskategorien verwendet, z. B.: Technology.Communications.HTTP Technology.Database v Attribute.’Wert’: API-Methodentag, z. B.: Attribute.Deprecated Attribute.Modifier.Protected Ausführliche Informationen zu Eigenschaftswerten entnehmen Sie der AppScan Source-Sicherheits-Wissensbasis. Löst aus OunceException, wenn die Data Access-API die Eigenschaften nicht abrufen kann. Finding.isExcluded Signatur public boolean isExcluded() Beschreibung Gibt an, ob dieses Ergebnis aus der Beurteilung ausgeschlossen wird. Ausgeschlossene Ergebnisse tragen nicht zu Statistikdaten für die Beurteilung bei. Rückgabewert Falls ausgeschlossen, true, falls nicht ausgeschlossen, false. Finding.getTrace Signatur public Trace getTrace() Beschreibung Bietet Zugriff auf den AppScan Source-Trace, der diesem Ergebnis zugeordnet ist (sofern vorhanden). Rückgabewert Traceobjekt für das Ergebnis, sofern vorhanden; andernfalls 'NULL'. 86 IBM Security AppScan Source Utilities: Benutzerhandbuch Löst aus OunceException, wenn die Data Access-API den Trace nicht abrufen kann. Finding.getNotes Signatur public String getNotes() Beschreibung Bietet Zugriff auf die Notizen zu einem Ergebnis. Rückgabewert Vorhandene Notizen für das Ergebnis; 'NULL', falls keine Notizen vorhanden sind. Löst aus OunceException, wenn die Data Access-API die Notizen nicht abrufen kann. Trace Die Klasse com.ouncelabs.sdk.assessment.Trace stellt den AppScan Source-Trace für ein Ergebnis dar. Trace.getCalls Signatur public Call[] getCalls() Beschreibung Bietet Zugriff auf den Rootaufruf des AppScan Source-Trace. Rückgabewert Ein Array mit Call-Objekten. Enthält gegenwärtig immer ein einzelnes Objekt. Löst aus OunceException, wenn die Data Access-API die Aufrufe nicht abrufen kann. SeverityType Die Klasse com.ouncelabs.sdk.assessment.SeverityType stellt den Schweregrad eines Ergebnisses dar. Statische Elemente Schweregradstypen sind: v SeverityType.High v SeverityType.Medium v SeverityType.Low v SeverityType.Info v SeverityType.Unknown Kapitel 4. AppScan Source-Data Access-API 87 SeverityType.value Signatur public int value() Beschreibung Bietet Zugriff auf den Wert dieses SeverityType-Objekts. Der zurückgegebene Wert entspricht einem der Werte der statischen Elemente. Rückgabewert Der Schweregradswert für dieses SeverityType-Objekt. OunceException com.ouncelabs.sdk.assessment.OunceException ist die Ausnahmeklasse, die von der Data Access-API verwendet wird. Um weitere Informationen zu einer Ausnahme zu erhalten, rufen Sie getMessage() für die Ausnahme auf. 88 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 5. Ounce/Maven-Plug-in Dieser Abschnitt beschreibt das Ounce/Maven-Plug-in, das das Apache-Erstellungstool Maven zur Integration von AppScan Source in den Maven-Workflow verwendet. Das Ounce/Maven-Plug-in ermöglicht es Ihnen, in AppScan Source Anwendungsund Projektdateien zu erstellen. Wenn AppScan Source for Automation ebenfalls installiert ist, verwenden Sie Ounce/Maven zum Ausführen von Quellcodesicherheitsüberprüfungen und zum Generieren umfassender Sicherheitsberichte. Informationen zu AppScan Source for Automation finden Sie in Kapitel 6, „AppScan Source for Automation”, auf Seite 95. Weitere Informationen zur Produktfamilie von AppScan Source finden Sie unter der Webadresse http://www.ibm.com/software/rational/products/appscan/ source/. Ounce/Maven installieren Vorbereitende Schritte Für die Installation und Ausführung von Ounce/Maven gelten die folgenden Voraussetzungen: v Apache Maven Version 2.x: Informationen zur Bereitstellung und Verwendung von Maven-Plug-ins finden Sie auf der Apache Maven Project-Website unter http://maven.apache.org/. v AppScan Source for Automation: Weitere Informationen finden Sie in Kapitel 6, „AppScan Source for Automation”, auf Seite 95. Informationen zu diesem Vorgang Nachdem Sie Maven installiert und konfiguriert haben, wird Ounce/Maven beim ersten Verweis darauf heruntergeladen. Die Ounce/Maven-Sitedokumentation schließt Beschreibungen der Ounce/MavenZiele, deren Parameter, Beispiele, Hinweise zur Verwendung und ausführliche Beispiele ein. Sie finden die Sitedokumentation unter http://mojo.codehaus.org/ounce-mavenplugin. Vorgehensweise 1. Wenn Maven nicht bereits installiert ist, installieren Sie Maven von http:// maven.apache.org/. Folgen Sie den Anweisungen auf der Maven-Website. 2. Führen Sie einen der folgenden Schritte aus: v Bearbeiten Sie eine Maven-pom-Datei so, dass sie ein oder mehrere Ounce/ Maven-Zielanfragen einschließt, wie es auch in der Ounce/Maven-Sitedokumentation beschrieben ist. v Rufen Sie eine oder mehrere Ounce/Maven-Zielanfragen über die Befehlszeile auf, wie es in der Ounce/Maven-Sitedokumentation beschrieben ist. © Copyright IBM Corp. 2003, 2015 89 Ounce/Maven verwenden Das Ounce/Maven-Plug-in gestattet Ihnen die Verwendung von Ounce/Maven, um AppScan Source-Anwendungen und -Projekte zu erstellen, die Anwendungen zu überprüfen, die resultierenden Beurteilungen zu veröffentlichen und AppScan Source-Berichte zu generieren. Geben Sie die Ounce/Maven-Zielanfragen und -Parameter wie bei jedem anderen Maven-Plug-in auch an. Sie können Ounce/Maven-Befehle auf zweierlei Weise aufrufen: v Mithilfe einer Maven-Datei mit der Endung pom (Builddatei): Mit der pom-Datei können Sie AppScan Source-Anwendungs- und -Projektdateien als Teil Ihres Builds erstellen. Nach der Installation von Ounce/Maven können Sie eine Maven-Datei mit der Endung pom modifizieren, um die Zielanfragen ounce:application und ounce:project-only wie für Ihre AppScan Source-Tasks erforderlich anzugeben. v Über die Befehlszeile: Rufen Sie die Zielanfragen ounce:project, ounce:scan und ounce:report über die Befehlszeile auf, um AppScan Source-Projektdateien zu erstellen (oder Projektdateiparameter aus der pom-Datei zu überschreiben), AppScan Source-Scans zu starten, Beurteilungen zu veröffentlichen und AppScan Source-Berichte zu generieren. Jede Ounce/Maven-Zielanfrage schließt eine Anzahl Parameter ein. v Informationen zu Ounce/Maven-Zielanfragen finden Sie in „Ounce/Maven-Zielanfragen” auf Seite 91. v Informationen zu den Parametern für die einzelnen Zielanfragen entnehmen Sie der Ounce/Maven-Sitedokumentation unter http://mojo.codehaus.org/ouncemaven-plugin. Ounce/Maven-Szenarios Ounce/Maven ermöglicht Ihnen Folgendes: v Anwendungs- und Projektdateien in AppScan Source erstellen v Anwendungen überprüfen und die Ergebnisse (Beurteilungen) in der AppScan Source-Datenbank publizieren v Berichte aus Beurteilungsergebnissen erstellen v AppScan Source-Berichte in das Ziel site integrieren Der vorliegende Abschnitt stellt diese Tasks kurz dar. Ausführliche Informationen zu AppScan Source-spezifischen Konzepten und der Sprache finden Sie im AppScan Source for Analysis-Benutzerhandbuch. Anwendungs- und Projektdateien erstellen AppScan Source verwendet wie im Folgenden beschrieben ein Anwendungs- und Projektmodell zur Verwaltung von Daten: v Anwendung: Eine Anwendung enthält Konfigurationsdaten und anpassbare Informationen sowie eine Liste der Projekte in dieser Anwendung. v Projekt: Ein Projekt umfasst eine Gruppe von Dateien (einschließlich des Quellcodes) und zugehörige Informationen (z. B. Konfigurationsdaten). Damit ein Projekt überprüft werden kann, muss es Teil einer Anwendung sein. 90 IBM Security AppScan Source Utilities: Benutzerhandbuch Die Zielanfrage ounce:application erstellt AppScan Source-Anwendungsdateien (.paf-Dateien), während die Zielanfragen ounce:project und ounce:project-only AppScan Source-Projektdateien (.ppf-Dateien) erstellen. Im AppScan Source for Analysis-Benutzerhandbuch finden Sie Informationen zu weiteren Formaten für Anwendungs- und Projektdateien. Anwendungen überprüfen Eine AppScan Source-Überprüfung analysiert den Quellcode auf Sicherheitslücken. Das Ergebnis eines Scans ist eine Beurteilung in Form einer XML-Datei. Anmerkung: Ausführliche Informationen zu den Funktionen von AppScan Source finden Sie im IBM Security AppScan Source for Analysis Benutzerhandbuch. Verwenden Sie die Zielanfrage ounce:scan in der Befehlszeile, um die Anwendung und die zugehörigen Projekte zu überprüfen und aus der Beurteilung optional einen Bericht zu generieren. Nach Abschluss des Scans ermöglicht Ounce/Maven Ihnen Folgendes: v Beurteilung in der AppScan Source-Datenbank publizieren. Dies macht die Beurteilungsergebnisse anderen Benutzern mit Zugriff auf die Datenbank und den erforderlichen Berechtigungen verfügbar. v Einen Bericht erstellen. Berichterstellung Häufig wird als Ausgabe von AppScan Source ein detaillierter Bericht gewünscht, der Daten zu den Beurteilungen bereitstellt. Die Zielanfrage ounce:report ermöglicht Ihnen die Erzeugung solcher Berichte aus neuen oder früheren Beurteilungen. Die Zielanfrage ounce:report kann bei Bedarf eine Anwendung überprüfen und die Beurteilung dann veröffentlichen oder Berichte dazu erstellen. Anders als ounce:scan können Sie ounce:report jedoch verwenden, um Berichte für vorhandene Beurteilungen zu erstellen. Berichte mit dem Siteziel integrieren Um ounce:report mit dem Siteziel zu integrieren, fügen Sie das Ounce/MavenPlug-in zum Abschnitt 'reporting' der pom-Datei hinzu. Das Siteziel führt ounce:report aus und die Berichtsausgabe wird Teil der Sitedokumentation für Ihre Anwendung. Bei der Integration mit dem Siteziel müssen Sie keine zusätzlichen Parameter angeben. Sie können den Berichtstyp als einen der Werte angeben, die in „reportType-Werte” auf Seite 93 beschrieben sind. Wenn Sie keinen Berichtstyp angeben, ist der Standardbericht Ergebnisse. Ounce/Maven-Zielanfragen Ounce/Maven bietet die folgenden Zielanfragen zur Durchführung von AppScan Source-Funktionen: v ounce:application: Generiert eine AppScan Source-Anwendungsdatei, die Verweise auf alle untergeordneten Projekte enthält, wie sie in der pom-Datei definiert sind. Eine Anwendung ist für das Überprüfen (und somit für die Berichterstellung) erforderlich. Kapitel 5. Ounce/Maven-Plug-in 91 v ounce:project: Erstellt abhängig von der Anzahl untergeordneter Maven-Projekte eine oder mehrere AppScan Source-Projektdateien. Die Zielanfrage ounce:project ist für die Ausführung über die Befehlszeile vorgesehen und schließt den Maven-Build in die Zielanfrage ein. v ounce:project-only: Erstellt abhängig von der Anzahl untergeordneter MavenProjekte eine oder mehrere AppScan Source-Projektdateien. Die Zielanfrage ounce:project-only wird bereitgestellt, um die Erstellung von AppScan SourceProjektdateien in den Lebenszyklus des Maven-Builds zu integrieren. v ounce:scan: Überprüft eine Anwendung. Sie können die Beurteilung optional veröffentlichen oder einen Bericht erstellen. Führen Sie ounce:scan über die Befehlszeile aus. v ounce:report: Generiert einen AppScan Source-Bericht. Bei Bedarf führen Sie, um die Ergebnisse zu aktualisieren, eine Überprüfung aus, bevor Sie den Bericht erstellen. Führen Sie ounce:report über die Befehlszeile aus. Anmerkung: v Um Ihre Anwendungs- und Projektdateien portabel zu machen, erstellen Sie Pfadvariablen und verknüpfen Dateipfade mit ihren Speicherpositionen. v Beispiele für die Verwendung von Ounce/Maven-Zielanfragen entnehmen Sie der Ounce/Maven-Sitedokumentation unter http://mojo.codehaus.org/ouncemaven-plugin/. ounce:application Beschreibung Generiert eine AppScan Source-Anwendungsdatei, die Verweise auf alle untergeordneten Projekte enthält, wie sie durch die POM-Datei definiert sind. Eine Anwendung ist für das Überprüfen und die Berichterstellung erforderlich. Während ounce:application keine AppScan Source-Projektdateien erstellt, können Sie ounce:project-only ausführen, um das Projekt innerhalb derselben Builddatei zu erstellen. ounce:project Beschreibung Verwenden Sie ounce:project über die Befehlszeile. Die Zielanfrage ounce:project erstellt abhängig von der Anzahl untergeordneter Maven-Projekte eine oder mehrere AppScan Source-Projektdateien. ounce:project verwenden Wenn Sie die Zielanfrage ounce:project über die Befehlszeile aufrufen, werden alle erforderlichen Abhängigkeiten automatisch erstellt. Wenn keine Anwendungsdatei vorhanden ist, wird diese von ounce:project erstellt. Alle Parameter zu ounce:project sind optional. Der Projektname wird in Maven durch artifactId bestimmt und Sie können ihn nicht überschreiben. Führen Sie Maven mit der Zielanfrage ounce:project aus dem Verzeichnis heraus aus, das die Datei pom.xml der obersten Ebene enthält (oder, wenn nur eine Teilmenge des Builds erforderlich ist, aus einem Unterverzeichnis heraus, das eine untergeordnete Datei pom.xml enthält). 92 IBM Security AppScan Source Utilities: Benutzerhandbuch ounce:project-only Beschreibung Die Zielanfrage ounce:project-only wird aus einer pom-Datei heraus verwendet. Die Zielanfrage ounce:project-only erstellt abhängig von der Anzahl untergeordneter Maven-Projekte eine oder mehrere AppScan Source-Projektdateien. ounce:project-only verwenden Alle Parameter zu ounce:project-only sind optional. Der Projektname wird in Maven durch artifactId bestimmt und kann nicht überschrieben werden. ounce:scan Beschreibung Die Zielanfrage ounce:scan generiert einen Scan einer gegebenen Anwendung, auf den optional ein Bericht mit den Beurteilungsergebnissen folgt. Führen Sie ounce:scan über die Befehlszeile aus. Anmerkung: Die Zielanfrage ounce:scan ist nicht als Teil des Maven-Buildlebenszyklus gedacht. ounce:scan verwenden Wenn Sie ounce:scan angeben, können Sie anfordern, dass Ounce/Maven unmittelbar auf die Überprüfung folgend einen Bericht aus der Beurteilung ausführt. In diesem Fall geben Sie die in „reportType-Werte” und „reportOutputType-Werte” auf Seite 94 beschriebenen Berichtsparameter an. Wenn Sie reportType angeben, müssen Sie auch reportOutputType und reportOutputPath angeben. Anmerkung: Die Zielanfrage ounce:scan erstellt oder aktualisiert bei Bedarf Anwendungs- und Projektdateien. ounce:report Beschreibung Die Zielanfrage ounce:report erstellt einen Bericht aus einer Beurteilung. Wenn Sie keine vorhandene Beurteilung angeben, führt ounce:report vor dem Erstellen des Berichts ounce:scan aus. Führen Sie ounce:report über die Befehlszeile aus. Geben Sie die in „reportType-Werte” und „reportOutputType-Werte” auf Seite 94 beschriebenen Berichtsparameter an. Wenn Sie reportType angeben, müssen Sie auch reportOutputType und reportOutputPath angeben. reportType-Werte v Untersuchungsergebnisbericht: – Ergebnisse nach Bundle – Ergebnisse nach API – Ergebnisse nach Klassifizierung – Ergebnisse Kapitel 5. Ounce/Maven-Plug-in 93 – DTS-Aktivität – Ergebnisse nach Typ – Ergebnisse nach CWE – Ergebnisse nach Datei v AppScan Source-Bericht: – CWE SANS Top 25 2011 – DISA Application Security and Development STIG V3R9 – OWASP Mobile Top 10 – OWASP Top 10 2013 – PCI Data Security Standard V3.0 – Softwaresicherheitsprofil v Falls verfügbar, ein angepasster Bericht. reportOutputType-Werte v Geben Sie eines der folgenden Formate für diesen Bericht an: – HTML: Erstellt den Bericht als HTML-Datei und zeigt ihn online an. – ZIP: Erstellt eine ZIP-Datei, die alle HTML-Berichtskomponenten enthält. v Bei Berichten im PDF-Format können Sie den Detaillierungsgrad angeben: – pdf-summary: Enthält Zählungen für jede angepasste Berichtsgruppe. – pdf-detailed: Enthält Zählungen für jedes API und für jede Sicherheitslückeneigenschaft. – pdf-comprehensive: Enthält Tabellen mit allen Ergebnissen für jedes API. – pdf-annotated: Enthält alle Ergebnisse, alle Anmerkungen zu den Ergebnissen und bestimmte Codefragmente. – pdf-annotated: Erstellt einen mit Annotationen versehenen Bericht als PDFDatei. 94 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 6. AppScan Source for Automation Der Automatisierungsserver (ounceautod) ermöglicht Ihnen die Automatisierung von wichtigen Aspekten des AppScan Source-Workflows und das Integrieren von Sicherheitsfunktionen in Buildumgebungen während des Softwareentwicklungslebenszyklus (SDLC). Der Automatisierungsserver ermöglicht es Ihnen, Anforderungen zur Überprüfung und Veröffentlichung von Beurteilungen in eine Warteschlange einzureihen und Berichte zur Sicherheit des Anwendungscodes zu generieren. Über die ausführbare Befehlszeilendatei (ounceauto) des AppScan Source for Automation-Clients übergeben Sie Anforderungen an den Server. Beim Verarbeiten der Anforderungen läuft der Automatisierungsserver als Client des zugehörigen AppScan Enterprise Servers und kann eine Verbindung zu nur einem einzigen AppScan Enterprise Server herstellen. Er überwacht einen TCP-Anschluss (Standard: 13205) nur auf Verbindungen vom lokalen Host. v Auf Windows-Systemen wird der Automatisierungsserver als der Dienst IBM Security AppScan Source Automation ausgeführt. v Auf Linux-Systemen wird er als Dämon ausgeführt: – Um den Dämon zu stoppen, müssen Sie den folgenden Befehl eingeben: /etc/init.d/ounceautod stop – Um den Dämon zu starten, müssen Sie den folgenden Befehl eingeben: /etc/init.d/ounceautod start Der Automatisierungsserver verarbeitet Anforderungen als ein angegebener AppScan Source-Benutzer und übernimmt damit die Berechtigungen dieses Benutzers. Die Benutzer-ID muss über die erforderlichen Berechtigungen entsprechend den auszuführenden Befehlen verfügen. Beispiel: Wenn die Benutzer-ID den Befehl PublishAssessment ausführen muss, können der Benutzer-ID Berechtigungen für das Veröffentlichen und das Registrieren übertragen werden. Sie benötigt jedoch keine Berechtigung für die Überprüfung (weitere Informationen finden Sie im Abschnitt AppScan Source verwalten im AppScan Source Installations- und Administrationshandbuch). Für das Übergeben einer Anforderung an den Automatisierungsserver werden keine Benutzerberechtigungen benötigt. Berechtigungsnachweise für Automatisierungsserver über Befehlszeile angeben Wenn Sie während des Installationsprozesses keinen Benutzernamen und kein Kennwort angegeben haben, wie dies im IBM Security AppScan Source Installations- und Administrationshandbuch beschrieben wird, dann müssen Sie den Automatisierungsserver nach der Installation zur Ausführung als AppScan SourceBenutzer konfigurieren. Informationen zu diesem Vorgang Wenn der angegebene Benutzer noch nicht existiert, müssen Sie ihn in der Installationsanzeige oder über die Befehlszeile angeben und ihn dann manuell (nach der Installation) mit AppScan Source for Analysis oder der AppScan Source-Befehlzeilenschnittstelle (CLI) erstellen. Um den neuen Benutzer über die Befehlszeile zu erstellen, verwenden Sie den Befehl „newuser (nu)” auf Seite 39. Wenn Sie den neuen Benutzer erstellen, müssen Sie sicherstellen, dass Sie denselben Benutzernamen © Copyright IBM Corp. 2003, 2015 95 und dasselbe Kennwort angeben, die auch für die Anmeldung am Automatisierungsserver verwendet werden. Die anderen Einstellungen, z. B. für Berechtigungen, können nach Ihren Wünschen festgelegt werden. Alle Befehlsargumente, die nachstehend aufgelistet werden, sind obligatorisch. Vorgehensweise v Auf Linux-Systemen: 1. Ändern Sie den Wert für LD_LIBRARY_PATH so ab, dass das Verzeichnis <installationsverzeichnis>/bin (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist) eingeschlossen wird. Beispiel: export LD_LIBRARY_PATH=/opt/ibm/appscansource/ bin:$LD_LIBRARY_PATH 2. Führen Sie <installationsverzeichnis>/bin/ounceautod mit Argumenten aus, um einen Benutzernamen und ein Kennwort anzugeben: /opt/ibm/appscansource/bin/ounceautod -u <benutzername> -p <kennwort> --persist v Auf Windows-Systemen: <installationsverzeichnis>\bin\ounceautod.exe -u <benutzername> -p <kennwort> --persist – <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist – -u <benutzername>: Der Benutzer, mit dem sich der Automatisierungsserver authentifiziert, wenn er eine Anforderung verarbeitet. Der Benutzer muss in AppScan Source for Analysis mit den erforderlichen Berechtigungen definiert sein. – -p <kennwort>: Das Kennwort des Benutzers. Wenn Sie einen Benutzernamen angeben, müssen Sie das Kennwort angeben. – --persist: Speichert die Berechtigungsnachweise für die Anmeldung auf Platte. Es wird eine verschlüsselte Schlüsseldatei mit dem angegebenen Benutzernamen und Kennwort erstellt. Ergebnisse Nachdem Sie einen Benutzernamen und ein Kennwort angegeben haben, werden die Berechtigungsnachweise auf der Platte gespeichert. Konfigurationsdatei für den Automatisierungsserver Die ounceautod-Konfigurationsdatei ounceautod.ozsettings gibt die Eigenschaften für den Automatisierungsserver-Dämon an. Die Datei ounceautod.ozsettings ist in <datenverzeichnis>\config enthalten (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). Die Datei ounceautod.ozsettings enthält diese Eigenschaften: 96 Eigenschaft Wert Beschreibung ounceautod_max_ concurrent_requests 1 (Standard) Anzahl der zulässigen gleichzeitigen Anforderungen. IBM Security AppScan Source Utilities: Benutzerhandbuch Eigenschaft Wert Beschreibung ounceautod_accept_ssl true (Standard) Akzeptiert SSL-Zertifikate automatisch. Weitere Informationen finden Sie in „SSLZertifikate von AppScan Enterprise Server” auf Seite 35. ounceautod_port 13205 (Standard) Portnummer, über die ounceautod ausgeführt wird. Anmerkung: Der Portwert in dieser Einstellung muss mit der Porteinstellung in der Datei ounceauto.ozsettings unter <datenverzeichnis>\config übereinstimmen. ounceautod_server_hostname <Hostname>:port Der Hostname des Computers, auf dem AppScan Enterprise Server installiert wurde, und der Port, über den das Produkt auf dem Computer ausgeführt wird. Wenn diese Datei geändert wird, müssen Sie den Service für den Automatisierungsserver erneut starten (siehe Kapitel 6, „AppScan Source for Automation”, auf Seite 95). Automatisierungsserver-Protokollierung Der Automatisierungsserver generiert eine Protokolldatei mit dem Namen ounceautod.log, in der alle Anforderungen, die an den Automatisierungsserver vorgenommen wurden, sowie die zugehörige Antwort protokolliert werden. Protokolleinträge sind in <datenverzeichnis>\logs\ounceautod.log abgelegt (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). Der Automatisierungsserver protokolliert für alle Anforderungen folgende Ereignisse: v Anforderung erhalten v Anforderung gestartet v Anforderung fertiggestellt v Anforderung fehlgeschlagen Jeder Protokolleintrag enthält: v Zeitmarke des Protokolleintrags v Ereignistyp v Anforderungstyp v Anforderungs-ID v Aufrufender, falls angegeben v Anforderungsspezifische Informationen Kapitel 6. AppScan Source for Automation 97 ounceauto über die Befehlszeile verwenden Die Schnittstelle zu AppScan Source for Automation, ounceauto, setzt Befehle an den Server ab, der durch Befehlszeilenargumente angegeben wurde, gibt ggf. die Ausgabe aus und kehrt dann zurück. Jeder Anforderung wird eine AnforderungsID zugeordnet und alle Protokolleinträge zur Anforderung enthalten diese Anforderungs-ID zu Identifikationszwecken. Führen Sie ounceauto wie folgt über die Befehlszeile aus: ounceauto <Befehlsname> <Befehlsargumente> Die folgenden ounceauto-Befehle sind vorhanden: v GenerateReport v PublishAssessment v PublishAssessmentASE v ScanApplication v Wait GenerateReport Beschreibung Erstellt einen Bericht aus einer Beurteilung. Syntax ounceauto GenerateReport -assessment <Beurteilungspfad> -type <Berichtstyp> -output <Ausgabeformat> -file <Ausgabeposition> [-caller <Aufrufender>] [-includeSrcBefore <n>] [-includeSrcAfter <n>] v -assessment <Beurteilungspfad>: Pfad zu der Beurteilungsdatei, für die Sie den Bericht erstellen möchten. v -type "<report type>": Name des Berichtstyps in Anführungszeichen. Zu den Berichtstypen gehören Ergebnisberichte, AppScan Source-Berichte und angepasste Berichte. Die AppScan Source-Berichte können folgende Typen aufweisen: – Untersuchungsergebnisbericht: - Ergebnisse nach Bundle - Ergebnisse nach API - Ergebnisse nach Klassifizierung - Ergebnisse - DTS-Aktivität - Ergebnisse nach Typ - Ergebnisse nach CWE - Ergebnisse nach Datei – AppScan Source-Bericht: - CWE SANS Top 25 2011 - DISA Application Security and Development STIG V3R9 98 IBM Security AppScan Source Utilities: Benutzerhandbuch - OWASP Mobile Top 10 - OWASP Top 10 2013 - PCI Data Security Standard V3.0 - Softwaresicherheitsprofil – Falls verfügbar, ein angepasster Bericht. Geben Sie den Berichtstyp in Anführungszeichen exakt genauso ein wie in der Liste oben. Beispiel:Findings by Classification oder Software Security Profile. v -output <Ausgabeformat>: Gibt eines der folgenden Formate für diesen Bericht an: – HTML: Erstellt den Bericht als HTML-Datei und zeigt ihn online an. – ZIP: Erstellt eine ZIP-Datei, die alle HTML-Berichtskomponenten enthält. – Bei Berichten im PDF-Format können Sie den Detaillierungsgrad angeben: - pdf-summary: Enthält Zählungen für jede angepasste Berichtsgruppe. - pdf-detailed: Enthält Zählungen für jedes API und für jede Sicherheitslückeneigenschaft. - pdf-comprehensive: Enthält Tabellen mit allen Ergebnissen für jedes API. - pdf-annotated: Enthält alle Ergebnisse, alle Anmerkungen zu den Ergebnissen und bestimmte Codefragmente. - Speicherposition der Ausgabe: Der Pfad, in dem der Bericht geschrieben wird. v -file <Speicherposition der Ausgabe>: Gibt Pfad- und Dateinamen für den Speicherort des Berichts an. v -caller <Aufrufender>: Optional. Gibt einen Aufrufenden für den Berichterstellungsvorgang an. Der Aufrufende kann der Name eines tatsächlichen Benutzers sein, doch ist dies nicht erforderlich. Der Name des Aufrufenden wird in die Protokolldatei ounceauto geschrieben. v -includeSrcBefore <n>: Optional. Anzahl der Quellcodezeilen, die vor den einzelnen Ergebnissen eingeschlossen werden. v -includeSrcAfter <n>: Optional. Anzahl der Quellcodezeilen, die nach den einzelnen Ergebnissen eingeschlossen werden. Rückgabewert Im Erfolgsfall die Anforderungs-ID; wenn die Anforderungsübergabe nicht erfolgreich war, -1. Beispiele v So generieren Sie einen Bericht des Typs 'Findings by API' als HTML-Datei: ounceauto generatereport -assessment C:\Ounce\Data\Webgoat.ozasmt -type "Findings by API" -output html -file C:\reports\Webgoat_Findings.html v Gehen Sie wie folgt vor, um in AppScan Source einen Bericht des Typs 'OWASP Top 10 2013' als PDF-Datei zu generieren: ounceauto generatereport -assessment C:\Ounce\Data\Webgoat.ozasmt -type "OWASP Top 10 2013" -output pdf-annotated -file C:\Reports\Webgoat_OWASP.pdf Kapitel 6. AppScan Source for Automation 99 PublishAssessment Beschreibung Veröffentlicht die ausgewählte Beurteilung in der AppScan Source-Datenbank. Syntax ounceauto PublishAssessment -file <Beurteilung.ozasmt> [-caller <Aufrufender>] v -file <Beurteilungsdatei>: Vollständiger Pfad zu einer Beurteilungsdatei. v -caller <Aufrufender>: Optional. Gibt einen Aufrufenden für den Berichterstellungsvorgang an. Der Aufrufende kann der Name eines tatsächlichen Benutzers sein, doch ist dies nicht erforderlich. Der Name des Aufrufenden wird in die Protokolldatei 'ounceauto' geschrieben. Rückgabewert Im Erfolgsfall die Anforderungs-ID; wenn die Anforderungsübergabe nicht erfolgreich war, -1. Beispiel So veröffentlichen Sie die Beurteilung WebGoat_Internal: ounceauto publishassessment -file C:\Ounce\Data\WebGoat_Internal.ozasmt PublishAssessmentASE Beschreibung Veröffentlicht die ausgewählte Beurteilung in AppScan Enterprise Console. Syntax ounceauto PublishAssessmentASE -file <Beurteilungsdatei> [-caller <Aufrufender>] [-folder <Speicherposition>] [-name <Name der veröffentlichten Beurteilung>] [-aseapplication <ASE-Anwendung>] v -file <Beurteilungsdatei>: Erforderlich. Pfad und Dateiname der Beurteilungsdatei. v -caller <Aufrufender>: Optional. Gibt einen Aufrufenden für den Berichterstellungsvorgang an. Der Aufrufende kann der Name eines tatsächlichen Benutzers sein, doch ist dies nicht erforderlich. Der Name des Aufrufenden wird in die Protokolldatei ounceauto geschrieben. v -folder <Speicherposition>: Optional. Der Enterprise Console-Ordner, in den veröffentlicht wird. Wenn dieses Argument nicht verwendet wird, wird die Beurteilung in Ihrem Enterprise Console-Standardordner veröffentlicht. v -name <Name der veröffentlichten Beurteilung>: Optional. Der Name, mit dem die Beurteilung in Enterprise Console gespeichert wird. Wenn dieses Argument nicht verwendet wird, wird ein Name anhand der überprüften AppScan SourceAnwendung generiert, um die Beurteilung zu erstellen. (Dieser Name wird als Präfix zu AppScan Source: hinzugefügt.) v -aseapplication <ASE-Anwendung>: Optional. Enterprise Console-Anwendung, der die Beurteilung zugeordnet wird. 100 IBM Security AppScan Source Utilities: Benutzerhandbuch Rückgabewert Im Erfolgsfall die Anforderungs-ID; wenn die Anforderungsübergabe nicht erfolgreich war, -1. Beispiel So veröffentlichen Sie die Beurteilung WebGoat_Internal: ounceauto publishassessmentase -file C:\Ounce\Data\WebGoat_Internal.ozasmt ScanApplication Beschreibung Prüft die angegebene Anwendung. Speichern Sie optional die Beurteilung oder generieren Sie einen Beurteilungsbericht. Syntax ounceauto ScanApplication <-application <Anwendungsname>| -application_file <Anwendungsdatei>> [-name <Beurteilungsname>] [-save <Dateiname>] [-caller <Aufrufender>] [-publish] [-report <Berichtstyp> <Ausgabeformat> <Ausgabeposition>] [-includeSrcBefore <n> [-includeSrcAfter <n>] [-scanconfig <name_der_scankonfiguration>] v -application <Anwendungsname>: Name der zu prüfenden Anwendung. v -application_file <Pfad zur AppScan Source-Anwendungsdatei>: Pfad zu einer AppScan Source-Anwendungsdatei. v -name <Beurteilungsname>: Optional. Name der Beurteilung. v -save <Dateiname>: Optional. Speichert die Beurteilungsergebnisse in diese Datei. v -caller <Aufrufender>: Optional. Gibt einen Aufrufenden für den Berichterstellungsvorgang an. Der Aufrufende kann der Name eines tatsächlichen Benutzers sein, doch ist dies nicht erforderlich. Der Name des Aufrufenden wird in die Protokolldatei 'ounceauto' geschrieben. v -publish: Optional. Veröffentlicht die Beurteilung nach der Prüfung. v -report: Optional. Generiert einen Bericht nach der Prüfung. v <Berichtstyp>: Name des Berichtstyps. Zu den Berichtstypen gehören Ergebnisberichte, AppScan Source-Berichte und angepasste Berichte. Weitere Informationen zu den Optionen finden Sie unter „GenerateReport” auf Seite 98. v <Ausgabeformat>: Gibt das Berichtsformat an. Weitere Informationen zu den Optionen finden Sie unter „GenerateReport” auf Seite 98. v <Ausgabeposition>: Speicherposition, an die der Bericht geschrieben wird. v -includeSrcBefore <n>: Optional. Anzahl der Quellcodezeilen, die vor den einzelnen Ergebnissen eingeschlossen werden. v -includeSrcAfter <n>: Optional. Anzahl der Quellcodezeilen, die nach den einzelnen Ergebnissen eingeschlossen werden. Kapitel 6. AppScan Source for Automation 101 v -scanconfig <name_der_scankonfiguration>: Optional. Geben Sie den Namen einer Scankonfiguration an, die für die Überprüfung verwendet werden soll. Wenn keine Scankonfiguration angegeben wird, verwendet das System für die Überprüfung die Standardscankonfiguration. Rückgabewert Im Erfolgsfall die Anforderungs-ID; wenn die Anforderungsübergabe nicht erfolgreich war, -1. Beispiele v So prüfen Sie mit John Smith als Aufrufendem die WebGoat-Anwendung, veröffentlichen sie und versehen das Protokoll mit Anmerkungen: ounceauto scanapplication -application_file C:\WebGoat\WebGoat.paf -publish -caller JohnSmith v So prüfen Sie die WebGoat-Anwendung und erstellen einen Ergebnisbericht im Verzeichnis C:\WebGoat: ounceauto scanapplication -application WebGoat -report Findings html C:\WebGoat\MyReport.html Wait Beschreibung Blockiert, bis die angegebene Anforderung fertiggestellt ist. Syntax ounceauto wait -requestid <Anforderungs-ID> -requestid <Anforderungs-ID>: Die ID der Anforderung, auf die gewartet werden soll. Rückgabewert Wenn die Anforderung, die <Anforderungs-ID> entspricht, erfolgreich beendet wird, lautet der Rückgabewert 0, andernfalls 1. Beispiel Das folgende Windows-Beispiel zeigt die Überprüfung einer Anwendungsdatei und wartet dann, bis die Überprüfung beendet ist. ounceauto scanapplication -application_file WG0.paf ounceauto wait -requestid %errorlevel% Unter Linux lautet die Entsprechung für dieses Beispiel: ounceauto scanapplication -application_file WG0.paf ounceauto wait -requestid $? 102 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 7. Framework for Frameworks-APIs handhaben AppScan Source bietet eine Gruppe von Java-APIs, die das Hinzufügen von Unterstützung für Frameworks ermöglichen, die in Ihren Anwendungen verwendet werden. Die in diesen APIs bereitgestellten Klassen und Methoden ermöglichen Ihnen die Berücksichtigung von Frameworks, für die integrierte Unterstützung nicht bereitsteht. Anmerkung: AppScan Source umfasst integrierte Unterstützung für die folgenden Frameworks: v Apache Struts 1 und 2 v Spring MVC 2.5 und 3 v ASP .NET MVC (nur Windows) v Enterprise JavaBeans (EJB) 2 v ASP .NET (nur Windows) v J2EE v v v v JavaServer Faces (JSF) 2 .NET 4.5 (nur für Windows) nJax - RS (V1.0 und V1.1) Jax - WS (V2.2) Moderne Frameworks haben es mit einer großen Menge an Informationen zu tun, die das Laufzeitverhalten von Anwendungen aus normalem Quellcode in Konfigurationsdateien und Anmerkungen betreffen. In der Vergangenheit führte diese oft zu Lücken bei der statischen Analyse. Produktteams konnten zwar angepasste Regeln für einzelne Anwendungen erstellen, es war jedoch kein Framework vorhanden, das flexibel die Aktivitäten dieser Frameworks auf eine automatisierte Art und Weise beschreiben konnte. Durch die Verwendung der Framework for Frameworks-APIs können Sie schnell und einfach die Unterstützung neuer Frameworks direkt in AppScan Source realisieren. Dies wird erreicht, indem die den Frameworks zugeordneten Konfigurationsinformationen verarbeitet werden und indem diese Daten über die zugeordneten APIs wieder zurück an AppScan Source geliefert werden. Die Framework for Frameworks-APIs stehen nach der Installation der folgenden Produkte zur Verfügung: v AppScan Source for Automation v AppScan Source for Analysis v AppScan Source for Development Die APIs werden in <installationsverzeichnis>\walalib (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist) installiert. Ein Beispielprojektarchiv wird in <datenverzeichnis>\samples\F4FEjbExample.zip installiert (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). © Copyright IBM Corp. 2003, 2015 103 Anmerkung: Traceknoten mit Klassennamen, die mit Appscan.Synthetic, Appscan.Synthetic.Validator und AppScan.Synthetic.Replacement beginnen, entsprechen den Methoden, die von AppScan Source synthetisch erstellt werden. v Die AppScan.Synthetic-Methoden werden verwendet, um Traces in einem Anwendungscode, der Frameworks verwendet, zusammenzufügen. v Die AppScan.Synthetic.Validator-Methode modelliert die zugrunde liegende Überprüfung, die von der Frameworklaufzeit durchgeführt wird. Sie können eine Validatormethode auswählen und Sie bei Bedarf als Validator markieren. v Die AppScan.Synthetic.Replacement-Methode gibt an, dass eine Methode im Anwendungscode durch AppScan Source ersetzt wurde, um den Datenfluss zwischen zusammenhangslosen Komponenten (z. B. Controller und Ansichten) des Frameworks zu erfassen. Framework for Frameworks-API - Hauptkomponenten F4FHandler F4FHandler ist die abstrakte Klasse, die alle neuen Framework-Handler erweitern müssen. Dadurch wird ein Workflow eines Framework-Handlers über abstrakte Methoden erzwungen, die außer Kraft gesetzt werden müssen. Darüber hinaus wird der Zugriff auf die anderen beiden API-Komponenten F4FApp und F4FAction bereitgestellt. F4FApp Bietet Informationen zu der gescannten Anwendung, einschließlich Informationen aus deren Konfiguration (wie beispielsweise Quellen-Roots und Web-Root). Diese Komponente bietet auch Zugriff auf jede Klasse in der Anwendung zum Zweck des Bestimmens der erforderlichen Informationen, wie beispielsweise Anmerkungen und die Superklasse. F4FAction Stellt für AppScan Source Informationen zu der Anwendung bereit, die gerade gescannt wird. Eingangspunkte, Verbindungen zwischen abstrakten Methoden und deren Implementierungen und vieles mehr kann für die Scanning-Engine beschrieben werden, indem die Methoden aufgerufen werden, die für diese API bereitgestellt werden. Framework for Frameworks-APIs verwenden Dieser Abschnitt beschreibt die Schritte, die erforderlich sind, wenn die Framework for Frameworks-APIs verwendet werden. Diese Schritte werden (wann immer zutreffend) dem aufgeführten Beispiel zugeordnet, so dass Sie die Vorgehensweise beobachten können. In diesem Beispiel werden Sie Folgendes ausführen: v Erstellen einer Klasse, die F4FHandler erweitert v Implementieren von zwei abstrakten Methoden von F4FHandler v Erstellen eines Java-Archivs (.jar) mit einer Manifestdatei, die Ihre HandlerKlasse identifiziert v Exportieren der .jar-Datei in das waflgens-Verzeichnis von AppScan Source. v „Informationen zu diesem Beispiel” auf Seite 105 104 IBM Security AppScan Source Utilities: Benutzerhandbuch v „Beispielprojekt in Eclipse oder Rational Application Developer for WebSphere Software (RAD) importieren” v „Klasse erstellen, die F4FHandler implementiert” auf Seite 108 v „Manifestdatei für Ihren Handler erstellen” auf Seite 109 v „JAR für Ihren Handler erstellen” auf Seite 109 v „JAR in waflgens exportieren” auf Seite 112 Informationen zu diesem Beispiel In der Installation von AppScan Source ist ein Beispielhandler enthalten, der Framework for Frameworks-Informationen zu Enterprise Java Bean (EJB) 2-Anwendungen (auch als Enterprise Java Beans oder nur Beans bezeichnet) liest und bereitstellt. EJB ist ein Framework, mit dem die Arbeit und erneute Verwendung von Komponenten zur Geschäftslogik wesentlich vereinfacht wird. Jede Bean stellt eine Business-Komponente dar, die über zugeordnete Schnittstellenklassen verfügen muss, die wiederum andere Beans zur Interaktion mit der Business-Komponente verwenden müssen. Diese Schnittstellenklassen werden der Bean über die EJB-Konfigurationsdatei der Anwendung zugeordnet (EJB-jar.xml). An dieser Stelle tritt jedoch eine Lücke auf, da die statische Analyse-Engine diese Zuordnungen in der Quelle nicht berücksichtigt; das EJB-Framework ist dadurch ganz besonders geeignet mit Framework for Frameworks zu arbeiten. Beispielprojekt in Eclipse oder Rational Application Developer for WebSphere Software (RAD) importieren Vorgehensweise 1. Starten Sie Eclipse. 2. Erstellen Sie einen neuen Arbeitsbereich für Ihr Handler-Projekt. 3. Wählen Sie Datei > Importieren im Hauptmenü der Workbench aus. Kapitel 7. Framework for Frameworks-APIs handhaben 105 4. Wählen Sie auf der Seite Auswählen des Importassistenten die Option Vorhandene Projekte in Arbeitsbereich aus und klicken Sie dann auf Weiter. 5. Wählen Sie die Schaltfläche Archivdatei auswählen aus und klicken Sie anschließend auf Durchsuchen. Suchen Sie im Dialogfeld Archiv auswählen, das die zu importierenden Projekte enthält den Pfad <datenverzeichnis>\ samples\F4FEjbExample.zip (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). Klicken Sie anschließend auf Öffnen. Diese ZIP-Datei ist ein Eclipse-Archiv, dass die Konfiguration und den Quellcode für das Ejb2xHandler-Framework-Handler-Beispiel enthält. Klicken Sie zum Importieren des Archivs auf Fertigstellen. 106 IBM Security AppScan Source Utilities: Benutzerhandbuch 6. Nach dem Import des Archivs wird eine Reihe vom Buildfehlern angezeigt. Das Beispiel hat eine Klassenpfadvariable, die auf ein Verzeichnis verweist, in dem die Bibliotheken gespeichert sind. 7. Als nächstes definieren Sie eine Variable. Wählen Sie im Hauptmenü der Workbench Fenster > Benutzervorgaben aus. 8. Wählen Sie im Dialogfeld 'Benutzervorgaben' die Optionen Java > Buildpfad > Klassenpfadvariablen aus, um die Benutzervorgabenseite 'Klassenpfadvariablen' zu öffnen. Klicken Sie auf Neu. Kapitel 7. Framework for Frameworks-APIs handhaben 107 9. Erstellen Sie eine neue Variable mit dem Namen APPSCANSRCWALALIB_HOME und legen Sie als Pfad den Wert <installationsverzeichnis>\walalib fest (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Nach dem Klicken auf OK in allen Dialogfeldern sollte das Beispiel komplett ohne Fehler erstellt werden. Klasse erstellen, die F4FHandler implementiert Zum Erstellen eines neuen Framework-Handlers müssen Sie zuerst eine Klasse erstellen, die F4FHandler implementiert. Es müssen zwei Methoden implementiert werden, damit die Funktionalität von Framework for Frameworks unterstützt wird. isApplicable außer Kraft setzen Zweck: AppScan Source ruft isApplicable auf, um zu ermitteln, ob damit Ihr Handler ausgeführt werden soll. Wenn Sie True zurückgeben, wird dadurch Ihr Handler durch Aufruf von handleApp ausgeführt. Wenn Sie False zurückgeben, wird nichts weiter aufgerufen. Anmerkung: isApplicable umfasst eine Prüfung am Anfang der Methode, um sicherzustellen, dass die Anwendung eine Java-Anwendung ist; erst dann wird fortgefahren. Dazu ein Beispiel: In Ejb2xHandler, prüft isApplicable zuerst, ob die Spracher passend ist (da EJB nur in Java-Anwendungen vorhanden ist). wenn die Anwendung Java-basiert ist, sucht isApplicable anschließend nach allen Instanzen von ejb-jar.xml; dies ist die erforderliche Konfigurationsdatei für eine EJB 2-Anwen- 108 IBM Security AppScan Source Utilities: Benutzerhandbuch dung. Wenn Konfigurationsdateien gefunden werden, werden sie in den Handler gelesen und True wird zurückgegeben, so dass AppScan Source bekannt ist, dass handleApp aufgerufen werden soll, um mit den Informationen in den Konfigurationsdateien zu arbeiten. handleApp außer Kraft setzen Zweck: AppScan Source ruft handleApp auf, damit Sie Informationen zum Framework oder zu den Frameworks, die momentan in der aktuell gescannten Anwendung verwendet werden, ermitteln und festlegen können. Die Parameter F4FApp und F4FAction werden verwendet, um Informationen zur Anwendung abzurufen und um Spezifikationen zur Behandlung der Frameworks, die vorhanden sind und die Ihr Handler verwendet, festzulegen. Manifestdatei für Ihren Handler erstellen Erstellen Sie eine Datei mit dem Namen Manifest.txt, die die Informationen enthält, die für das Manifest Ihrer JAR erforderlich sind, wenn diese exportiert wird. AppScan Source sucht beim Laden Ihrer Handler-JAR insbesondere nach dem Framework-Handler-Eintrag, um die Klasse zu ermitteln, die die F4FHandler-Funktionalität enthält. Stellen Sie diese zwei Zeilen in die Datei Manifest.txt: Manifest-Version: 1.0 Framework-Handler: package.HandlerClassName Hierbei ist package.HandlerClassName der vollständige Paket- und Klassenname für Ihre Klasse, die die Schnittstelle F4FHandler implementiert. Dazu ein Beispiel: Manifest.txt enthält die Informationen, die JAR-Manifestdatei von Ejb2xHandler bei deren Erstellung gestellt werden. Es sind nur zwei Zeilen vorhanden: eine Zeile listet die Version auf, und die andere Zeile gibt die Framework-Handling-Klasse an: Framework-Handler: com.ibm.appscan.frameworks.highlevelapi.ejb2xhandler.Ejb2xHandler. JAR für Ihren Handler erstellen Vorgehensweise 1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt in der Ansicht "EclipseProjekt-Explorer" und wählen Sie Exportieren aus. Kapitel 7. Framework for Frameworks-APIs handhaben 109 2. Wählen Sie im Exportassistenten die Option JAR-Datei aus und klicken Sie anschließend auf Weiter. 3. Wählen Sie im Abschnitt "JAR-Export" unter Exportziel auswählen eine passende Position für Ihre JAR-Datei aus und geben Sie einen Namen an. Klicken Sie auf Weiter. 110 IBM Security AppScan Source Utilities: Benutzerhandbuch 4. Klicken Sie erneut auf Weiter. Sie können optional auch eine Position und einen Namen für eine Beschreibungsdatei festlegen. Dadurch wird eine .jardescDatei in Ihrem Projekt gespeichert, die alle JAR-Exporteinstellungen von diesem Export enthält. Damit können Sie den Export wiederholen, ohne die Einstellungen erneut anzugeben. 5. Wählen Sie die Schaltfläche Vorhandenes Manifest von Arbeitsbereich verwenden aus und klicken Sie auf Durchsuchen. Wählen Sie die zuvor erstellte Datei Manifest.txt aus. Kapitel 7. Framework for Frameworks-APIs handhaben 111 6. Klicken Sie auf Fertigstellen. JAR in waflgens exportieren Wenn Sie die Handler-JAR nicht direkt in das Verzeichnis waflgens während der Erstellung exportiert haben, kopieren Sie die jetzt in dieses Verzeichnis. Der vollständige Pfad lautet <installationsverzeichnis>\waflgens (wobei <installationsverzeichnis> die Position Ihrer AppScan Source-Installation ist). Vom Handler ausgeführte allgemeine Aktionen Web-Service-Eingangspunkt erstellen Viele Frameworks bieten eigene Eingangspunkte in eine Anwendung. Ein allgemeines Beispiel ist die Auswahl von Web-Services, die entweder in einer Konfigurationsdatei oder in Anmerkungen im Code identifiziert werden. Nach dem Suchen in den Konfigurationsdateien der Anwendung oder direkt im Bytecode für bestimmte Eingangspunkte kann die Methode F4FAction.addTaintedCallback verwendet werden, um einen versuchsweisen Dateneingangspunkt in der entsprechenden Methode zu erstellen. Dazu ein Beispiel: In EJB 2 werden Web-Service-Eingangspunkte durch Definition von Endpunkten in der Konfigurationsdatei (ejb-jar.xml) der Anwendung deklariert. Anschließend durchläuft handleApp durch die Beans, die in ejb-jar.xml deklariert sind, in einer Schleife; wann immer eine Endpunktklasse definiert ist, wird die Liste der Methodennamen abgerufen. Anschließend werden die entsprechenden Implementierungen als Web-Service-Eingangspunkte mit der Methode addTaintedCallback deklariert. 112 IBM Security AppScan Source Utilities: Benutzerhandbuch Methode ersetzen Moderne Frameworks verwenden häufig virtuelle Funktionen und Abstraktionen, um Business-Komponenten flexibel zu verbinden. Dies kann zwar eine Verbesserung im Entwicklungsprozess darstellen, es tauchen jedoch auch Schwierigkeiten für die statische Analyse aus, wenn die Verbindung zwischen der virtuellen Funktion und ihrer Implementierung in einer Konfigurationsdatei oder über Anmerkungen im Code abgewickelt abgearbeitet wird. F4FAction.replaceCalls ermöglicht es einem Handler, diese Verbindungen zu bezeichnen. Dazu ein Beispiel: In EJB 2 hat jede Bean eine Gruppe von Schnittstellen (lokal und fern(, die deklarieren, wie andere Beans mit dieser Bean interagieren. Dies bedeutet, dass immer dann, wenn die Schnittstelle class.method der Bean aufgerufen wird, diese durch das Framework mit der tatsächlichen ImplementationClass.method ersetzt wird. Ab Zeile 62 durchläuft unser Beispiel-Handler jede Bean in einer Schleife und nimmt deren ferne und lokale Schnittstellen und ersetzt diese durch die tatsächlichen Implementierungen. Protokollierung Ein Handler kann die Klasse com.ibm.wala.andromeda.util.logging.TaintLogger verwenden, um Informationsnachrichten während der Ausführung zu protokollieren - und um zu bewirken, dass Fehlernachrichten in der Benutzerschnittstelle von AppScan Source angezeigt werden. Die Klasse TaintLogger verwendet die Bibliothek log4j. Zum Protokollieren einer Nachricht besorgen Sie sich zunächst ein Logger-Objekt, indem Sie TaintLogger.i().getLogger() aufrufen. Rufen sie anschließend Protokollierungsmethoden mit dem Logger auf (Beispiel: Logger.warn), um die gewünschten Nachrichten zu protokollieren. Protokollnachrichten werden in <datenverzeichnis>\logs\scanner_exceptions.log aufgelistet (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). Wenn Logger.error oder Logger.fatal zum Protokollieren einer Nachricht verwendet wird, wird die Fehlernachricht auch in der Ansicht "Konsole" in der Benutzerschnittstelle von AppScan Source angezeigt. Framework for Frameworks API classes and methods This section contains the Framework for Frameworks API classes and methods, abbreviated for Adobe PDF. To access the complete set of API documentation, launch the AppScan Source for Analysis online help and navigate to Reference > Framework for Frameworks handling APIs > Framework for Frameworks API classes and methods. The complete set of API documentation can also be found at http:// www.ibm.com/support/knowledgecenter/SSS9LM/welcome. v v v v „F4FActions” auf Seite 114 „F4FApp” auf Seite 118 „F4FHandler” auf Seite 120 „TaintedParam” auf Seite 121 Kapitel 7. Framework for Frameworks-APIs handhaben 113 F4FActions java.lang.Object extended by com.ibm.appscan.frameworks.highlevelapi.F4FActions public class F4FActions extends java.lang.Object Class for specifying how the application's framework constructs should be modeled. An F4FHandler mutates the F4FAction object passed to F4FHandler.handleApp(F4FApp, F4FActions) as it analyzes the application. Constructor Detail F4FActions public F4FActions() Create an empty F4FActions object. Should not be needed for implementing a new framework handler, as the relevant F4FActions object will be passed to F4FHandler.handleApp(F4FApp, F4FActions). addTaintedCallback public void addTaintedCallback(IMethod method, int numParams) Same as „addTaintedCallback” (String, int), but takes an IMethod directly rather than a VDB signature addTaintedCallback public void addTaintedCallback(java.lang.String vdbMethodSig, int numParams) Make a method a tainted callback, with all parameters tainted. Anmerkung: For .NET apps, we need fully-qualified VDB signatures. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName. Parameters: v vdbMethodSig - the signature of the callback method v numParams - the number of parameters for the callback method, including the this parameter replaceCalls public void replaceCalls(java.lang.String oldVDBSig, java.lang.String newVDBSig) Replace all calls to one method with calls to another method. We require that the descriptors for the old and new method (i.e., the number of arguments, argument type, and return type) are identical. Anmerkung: replacement will only occur when oldVDBSig is the _declared_ target at a call site. So, if oldVDBSig is Integer.toString(), and we see a call to Object.toString(), we will _not_ perform a replacement at that call site, even though it might invoke Integer.toString(). 114 IBM Security AppScan Source Utilities: Benutzerhandbuch Anmerkung: for .NET apps, we need fully-qualified VDB signatures. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName Parameters: v oldVDBSig - signature of method whose calls should be replaced v newVDBSig - signature of method to replace calls with replaceCallsWithSyntheticExpr public void replaceCallsWithSyntheticExpr(java.lang.String vdbSig, com.ibm.appscan.frameworks.specinfo.SyntheticExpr expr) Replace all calls to a method with an arbitrary WAFL SyntheticExpr. For example, one could replace calls with an assignment via an AssignmentExpr. Anmerkung: replacement will only occur when oldVDBSig is the _declared_ target at a call site. So, if oldVDBSig is Integer.toString(), and we see a call to Object.toString(), we will _not_ perform a replacement at that call site, even though it might invoke Integer.toString(). Anmerkung: for .NET apps, we need fully-qualified VDB signatures. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName Parameters: v vdbSig - signature of method whose calls should be replaced v expr - synthetic expression to replace calls with replaceCallsWithParamPattern public void replaceCallsWithParamPattern(java.lang.String oldVDBSig, java.util.Map<java.lang.String, java.util.Map<java.lang.Integer, java.util.regex.Pattern>> newSig2Pattern) Replace calls to one method with calls to another method only if the parameters of String type are constants meeting specified patterns. We require that the descriptors for the old and new method (i.e., the number of arguments, argument type, and return type) are identical. Anmerkung: replacement will only occur when oldVDBSig is the _declared_ target at a call site. So, if oldVDBSig is Integer.toString(), and we see a call to Object.toString(), we will _not_ perform a replacement at that call site, even though it might invoke Integer.toString(). Anmerkung: for .NET apps, we need fully-qualified VDB signatures. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName Parameters: v oldVDBSig - signature of method whose calls should be replaced Kapitel 7. Framework for Frameworks-APIs handhaben 115 v newSig2Pattern - maps VDB signature of each possible replacement method m to a map M from integer parameter positions to Patterns. If the string constant parameters in the appropriate positions match the patterns in M at some call site, a replacement to m will be performed. addFrameworkInfo public void addFrameworkInfo (com.ibm.appscan.frameworks.specinfo.IFrameworkInfo info) Add arbitrary additional framework info. This method should only be needed for rare cases where the other APIs provided are insufficient. addTaintedCallback public void addTaintedCallback(java.lang.String vdbMethodSig, java.util.Collection<TaintedParam> taintedParams) Make some method a tainted callback, with only certain parameter access paths being treated as tainted. Anmerkung: for .NET apps, we need fully-qualified VDB signatures. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName Parameters: v vdbMethodSig - the signature of the callback method, in VDB format v taintedParams - information on which parameter access paths should be tainted addHighLevelSyntheticMethod public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m) equivalent to addHighLevelSyntheticMethod(m, true) addHighLevelSyntheticMethod public void addHighLevelSyntheticMethod(HighLevelSyntheticMethod m, boolean isEntrypoint) Add a high-level synthetic method. A corresponding WAFL synthetic method (possibly an entrypoint) will be generated. Parameters: v m - the method v isEntrypoint - should the method be marked as an entrypoint in WAFL? createGlobal public Global createGlobal(java.lang.String name, java.lang.String declaredVDBType, boolean isEntrypointScoped) Create a new global that can be accessed from HighLevelSyntheticMethods. Parameters: v name - name for the global v declaredVDBType - the declared type of the global (e.g., java.lang.String). 116 IBM Security AppScan Source Utilities: Benutzerhandbuch Anmerkung: for .NET apps, we need a fully-qualified VDB type. So, instead of int as a parameter type, we need System.Int32, etc. To see the full mapping from fully-qualified names to the names usually used in VDB, see DotNetVDBUtil.systemName2VDBShortName v isEntrypointScoped - if true, the global is scoped to a single entrypoint (i.e., it is request-scoped). Otherwise, the global is scoped across entrypoints (i.e., it is "session" or "application" scoped) Returns: v a Global object, which can be read/written inside a HighLevelSyntheticMethod createGlobal public Global createGlobal(java.lang.String name, IClass declaredClass, boolean isEntrypointScoped) Just like „createGlobal” auf Seite 116(String, String, boolean), but takes an IClass for the declared type instead of a type name getGlobals public java.util.Collection<Global> getGlobals() For internal usage. getAdditionalFrameworkInfo public java.util.Collection <com.ibm.appscan.frameworks.specinfo.IFrameworkInfo> getAdditionalFrameworkInfo() For internal usage. getCallReplacement2SigsInfo public java.util.Map <java.lang.String,java.util.Map <java.lang.String,java.util.Map <java.lang.Integer,java.util.regex.Pattern>>> getCallReplacement2SigsInfo() For internal usage. getCallReplacement2ExprInfo public java.util.Map <java.lang.String,com.ibm.appscan.frameworks.specinfo.SyntheticExpr> getCallReplacement2ExprInfo() For internal usage. getCallback2TaintedParams public java.util.Map <java.lang.String,java.util.Collection<TaintedParam>> getCallback2TaintedParams() For internal usage. Kapitel 7. Framework for Frameworks-APIs handhaben 117 getHighLevelSyntheticMethods public java.util.List <com.ibm.wala.util.collections.Pair <HighLevelSyntheticMethod,java.lang.Boolean>> getHighLevelSyntheticMethods() For internal usage. toString public java.lang.String toString() Overrides: v toString in class java.lang.Object F4FApp java.lang.Object extended by com.ibm.appscan.frameworks.highlevelapi.F4FApp public class F4FApp extends java.lang.Object Representation of an application, with methods to query various properties of classes, methods, etc. Implemented mostly by delegating to methods from the T.J. Watson Libraries for Analysis (WALA); the goal is to consolidate the most useful WALA methods in a single type. See the WALA home page (http:// wala.sourceforge.net) for full details on WALA APIs. Constructor Detail public F4FApp(IClassHierarchy cha) Should not be needed to implement a new handler. The relevant F4FApp object will be passed as a parameter to F4FHandler.handleApp(F4FApp, F4FActions) getAppClass @Deprecated public IClass getAppClass(java.lang.String vdbClassName) Deprecated. Use getIClass(String) instead; this method simply delegates to that one. getIClass public IClass getIClass(java.lang.String vdbClassName) get the IClass for some class in the application, including library jars/DLLs. If no class with the provided name is found, return null Parameters: v vdbClassName - class name in VDB format, e.g., java.lang.String getClassAnnotations public java.util.Collection<Annotation> getClassAnnotations(IClass klass) Get the annotations/attributes for a class. For .NET, the result will include inherited attributes. 118 IBM Security AppScan Source Utilities: Benutzerhandbuch Parameters: v klass - the class whose annotations are desired getMethodAnnotations public java.util.Collection<Annotation> getMethodAnnotations(IMethod method) Get the annotations / attributes for a method. For .NET, these will include inherited attributes. Parameters: v method - the method whose annotations are desired getFieldAnnotations public java.util.Collection<Annotation> getFieldAnnotations(IField field) Get the annotations / attributes for a field. Parameters: v field - the field whose annotations are desired getMethodParametersAnnotations public java.util.Collection<Annotation>[] getMethodParametersAnnotations(IMethod method) Get annotations on parameters as an array of Collections, where each array element gives the annotations on the corresponding parameter. Note that the this parameter for an instance method cannot have annotations. Parameters: v method - the method whose parameter annotations are desired getAllApplicationClasses public java.util.Collection<IClass> getAllApplicationClasses() Get all the classes in the application (i.e., excluding those in library jars). getClassHierarchy public IClassHierarchy getClassHierarchy() Get the WALA class hierarchy for the application. Most handlers should be able to work via the other methods in this class and shouldn't need to operate directly on the class hierarchy. But, access is provided for advanced use. getMethodsDeclaredInClass public java.util.Collection<IMethod> getMethodsDeclaredInClass(IClass klass) Get all the static and instance methods declared in klass Kapitel 7. Framework for Frameworks-APIs handhaben 119 getClassMethods public java.util.Collection<IMethod> getClassMethods(java.lang.String className, java.lang.String methodName) Get all the methods in an class with a particular name. If the class cannot be found, returns an empty Collection. Parameters: v className - the class name in VDB (i.e., source-level) format, e.g., java.lang.String v methodName - getClassMethods public java.util.Collection<IMethod> getClassMethods(IClass appClass, java.lang.String methodName) Get all the methods in an class with a particular name. Parameters: v appClass - the class v methodName - getStringConstantsReturnedByMethod public java.util.Collection<java.lang.String> getStringConstantsReturnedByMethod(IMethod method) Get the possible String constants returned by the method. E.g., if the method has a statement return "result";, then "result" will be in the returned Collection. Throws an IllegalArgumentException if the return type of method is not String. F4FHandler java.lang.Object com.ibm.appscan.frameworks.highlevelapi.F4FHandler public abstract class F4FHandler extends java.lang.Object The abstract class that any new framework handler should extend. Anmerkung: Any sub-class of F4FHandler must have a no-argument constructor, for instantiation using reflection Constructor Detail F4FHandler public F4FHandler() handleApp public abstract void handleApp(F4FApp app, F4FActions actions) Define what actions should be represented in the generated WAFL specification to handle the given application. 120 IBM Security AppScan Source Utilities: Benutzerhandbuch Parameters: v app - the application to be analyzed v actions - the actions to be taken; implementations of handleApp(F4FApp, F4FActions) should mutate this parameter and store the desired actions isApplicable public abstract boolean isApplicable() Is the framework handler applicable for the target application? Implementations should check the language of the app, whether relevant configuration files are present, etc. setFrameworksInput public void setFrameworksInput(FrameworksInput input) Should not be invoked by a framework handler. getFrameworksInput protected FrameworksInput getFrameworksInput() Get the parsed representation of the input parameters to the frameworks code. TaintedParam java.lang.Object extended by com.ibm.appscan.frameworks.highlevelapi.TaintedParam public class TaintedParam extends java.lang.Object A type used to represented how some method parameter may reference tainted data. Constructor Detail public TaintedParam(int paramPos, java.lang.String accessPath) Creates a new TaintedParam object for a particular parameter position and access path. Parameters: v paramPos - the position of the tainted parameter, numbered starting from 0 (where the this parameter of an instance method is parameter 0) v accessPath - access path of fields from the parameter that should be tainted, e.g., "f.g". Use "" to indicate the parameter itself should be tainted. getParamPos public int getParamPos() getAccessPath public java.lang.String getAccessPath() Kapitel 7. Framework for Frameworks-APIs handhaben 121 hashCode public int hashCode() Overrides: v hashCode in class java.lang.Object equals public boolean equals(java.lang.Object obj) Overrides: v equals in class java.lang.Object toString public java.lang.String toString() Overrides: v toString in class java.lang.Object Übergeordnete synthetische Methoden Synthetische Methoden sind ein nützliches Konstrukt zum Modellieren eines erweiterten Datenflusses in Frameworks. Beispielsweise favorisieren viele Standardframeworks (wie z. B. Struts und Spring) eine Modell-Ansicht-Controller-Architektur (MVC - Model View Controller) (MVC) für die Anwendung. Mit einer Model View Controller-Struktur, wird die Formularübergabe des Clients häufig auf folgende Weise behandelt: 1. Legen Sie basierend auf der URL fest, dass die Modellklasse M der Anwendung die übergebenen Formulardaten enthält und dass die Controllerklasse C die Geschäftslogik enthält. 2. Erstellen Sie ein Modellobjekt mit dem Typ M und legen Sie die zugehörigen Eigenschaften basierend auf den (nicht gesicherten) Formulardaten in der HTTPAnforderung fest. Die Eigenschaften werden in der Regel mithilfe von setter JavaBeans (z. B. setName() oder setAddress()) festgelegt. 3. Führen Sie eine Überprüfung der Daten im M-Objekt durch. 4. Erstellen Sie ein Controller-Objekt mit dem Typ C und übergeben Sie das M-Objekt an eine Methode C.execute(), die die Geschäftslogik ausführt. In der Regel gibt execute() den Namen einer Ansicht zurück, in der die Ergebnisse bereitgestellt werden. 5. Legen Sie basierend auf dem Namen der Ansicht die entsprechende Ansichtdatei (beispielsweise eine JavaServer-Seite) für die Anzeige fest. Häufig werden die Daten im M-Objekt über Attribute des Anforderungs- oder des Sitzungsobjekts an die Ansicht übergeben. Alle oben genannten Funktionen können mithilfe von synthetischen Methoden von Framework for Frameworks modelliert werden und machen auf diese Weise das unterschiedliche Verhalten für eine Analyse durch AppScan Source verfügbar. Die Framework for Frameworks-API bietet übergeordnete synthetische Methoden, um die einfache Durchführbarkeit der Generierung von synthetischen Methoden sicherzustellen. Anmerkung: Traceknoten mit Klassennamen, die mit Appscan.Synthetic, Appscan.Synthetic.Validator und AppScan.Synthetic.Replacement beginnen, entsprechen den Methoden, die von AppScan Source synthetisch erstellt werden. 122 IBM Security AppScan Source Utilities: Benutzerhandbuch v Die AppScan.Synthetic-Methoden werden verwendet, um Traces in einem Anwendungscode, der Frameworks verwendet, zusammenzufügen. v Die AppScan.Synthetic.Validator-Methode modelliert die zugrunde liegende Überprüfung, die von der Frameworklaufzeit durchgeführt wird. Sie können eine Validatormethode auswählen und Sie bei Bedarf als Validator markieren. v Die AppScan.Synthetic.Replacement-Methode gibt an, dass eine Methode im Anwendungscode durch AppScan Source ersetzt wurde, um den Datenfluss zwischen zusammenhangslosen Komponenten (z. B. Controller und Ansichten) des Frameworks zu erfassen. VDB-Format Methoden in der Framework for Frameworks-API erfordern, dass Strings, die Typnamen oder Methodensignaturen darstellen, das VDB-Format aufweisen. VDBTypnamen sind lediglich vollständig qualifizierte Namen auf Quellebene (z. B. java.lang.String) oder werden im Fall von untergeordneten inneren Klassen mit einem Dollar-Symbol ($) dargestellt (z. B. javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction). Für .NET sollten kurze Namen wie int und string vermieden werden, wenn die Framework for Frameworks-API verwendet wird. Verwenden Sie stattdessen vollständig qualifizierte Namen wie System.Int32 und System.String. Eine VDB-Methodensignatur besteht aus zwei Teilen: 1. Methodenname, einschließlich des vollständig qualifizierten Namens der einschließenden Klasse (z. B. java.lang.String.substring). 2. Deskriptor für die Methode, der die Parametertypen und den Rückgabetyp angibt. Die Parametertypen werden in runde Klammern eingeschlossen und durch Semikola voneinander getrennt (;). Auf die rechte runde Klammer folgt ein Semikolon (:) und anschließend der Rückgabetyp. Beispiel für eine VDB-Methodensignatur: java.lang.String.substring(int;int):java.lang.String Beispiel für eine VDB-Methodensignatur aus einer inneren Klasse: javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction. actionPerformed(ActionEvent):void Für die meisten API-Methoden, die einen String in VDB-Format erfordern, ist häufig eine funktional entsprechende Methode vorhanden, die stattdessen ein IClassoder IMethod-Objekt akzeptiert. Beispielsweise erfordert die Methode F4FActions.addTaintedCallback(String,int), dass der erste zugehörige Parameter eine Methodensignatur im VDB-Format ist, während F4FActions.addTaintedCallback(IMethod,int) die Methode durch ein IMethodObjekt angibt. Die Verwendung der API-Methode, die IClass- und IMethod-Objekte akzeptiert, kann aus folgenden Gründen bequemer sein: 1. Der Benutzer muss sich keine Gedanken über das VDB-Format dieser Methoden machen, da dieses Problem intern behandelt wird. 2. Durch Abrufen des IClass- bzw. des IMethod-Objekts (z. B. über F4FApp.getClassMethods()) wird sichergestellt, dass die entsprechende Klasse oder Methode im Anwendungscode tatsächlich enthalten ist. Kapitel 7. Framework for Frameworks-APIs handhaben 123 Verwendung von übergeordneten synthetischen Methoden In diesem Thema wird dargestellt, wie einige der Schlüsselfunktionen übergeordneter synthetischer Methoden verwendet werden. Vollständige Details finden Sie in der Javadoc-Dokumentation zu den Klassen und Methoden der Framework for Framework-API. v „Übergeordnete synthetische Methode erstellen” v „Lokale Variablen erstellen” v „Aufrufe hinzufügen” v „Rückgabewert hinzufügen” auf Seite 125 v „Globals” auf Seite 125 Übergeordnete synthetische Methode erstellen Verwenden Sie zum Erstellen einer übergeordneten synthetischen Methode und zum Hinzufügen dieser Methode zum F4FActions-Objekt actions Code ähnlich dem folgenden: HighLevelSyntheticMethod m = HighLevelSyntheticMethod.make(); actions.addHighLevelSyntheticMethod(m); Sie können den Namen, die Parametertypen und den Rückgabetyp der synthetischen Methode angeben, indem Sie eine VDB-Methodensignatur an HighLevelSyntheticMethod.make() übergeben. Lokale Variablen erstellen Eine neue lokale Variable für eine übergeordnete synthetische Methode m kann auf folgende Weise erstellt werden: Local l = m.newLocal("java.lang.String"); Konstrukturfunktionen müssen in synthetischen Methoden nicht aufgerufen werden. Bei Zugrundelegung des oben genannten Codes kann vorausgesetzt werden, dass l auf ein String-Objekt ungleich null verweist, wenn weitere Anweisungen zu der synthetischen Methode hinzugefügt werden. Aufrufe hinzufügen Bei den meisten Anweisungen in übergeordneten synthetischen Methoden wird es sich um Methodenaufrufe handeln, die über die Methode addCall() hinzugefügt werden. Die Parameter für addCall() stellen die aufzurufende Methode dar, Positionsdaten zur Datei für den Aufruf sowie Parameter, die beim Aufruf übergeben werden. Dies ist ein Beispiel für das Hinzufügen eines Aufrufs zu der Setter-Methode sample.BeanType.setName(), bei dem das F4FApp-Objekt app vorausgesetzt wird: Collection<IMethod> setterMethods = app.getClassMethods("sample.BeanType", "setName"); // unter der Voraussetzung, dass in BeanType genau eine Methode "setName" vorhanden ist IMethod setter = setterMethods.iterator().next(); HighLevelSyntheticMethod m = HighLevelSyntheticMethod.make(); Local l = m.newLocal("sample.BeanType"); m.addCall(setter, null, l, Taint.taint()); Die Schritte 2-5 für die Behandlung einer Formularübergabe durch einen Client in einer Model View Controller-Architektur (wie in „Übergeordnete synthetische Methoden” auf Seite 122 dargestellt) können bis zu einem bestimmten Grad alle 124 IBM Security AppScan Source Utilities: Benutzerhandbuch durch Hinzufügen von entsprechenden Aufrufen zu einer synthetischen Methode auf die oben gezeigte Weise modelliert werden. Die Parameter für einen Aufruf werden durch Objekte des Typs Param dargestellt. Dabei kann es sich um folgende Objekte handeln: v Ein Objekt Local, das eine lokale Variable darstellt. v Ein Objekt Taint, das nicht gesicherte oder unzuverlässige Daten darstellt. v Ein Objekt EnclosingFormal, das einen formalen Parameter der übergeordneten synthetischen Methode darstellt. Wenn Sie beispielsweise eine synthetische Methode mit der Signatur synthMethod(int):void haben, bezieht sich EnclosingFormal.FIRST auf den Parameter int der Methode. v Ein Global-Objekt, das sich auf eine globale Variable bezieht (wird in „Globals” behandelt). Anmerkung: Bei nicht statischen Instanzdefinitionsmethoden muss der als this zu übergebende Wert für addCall() bereitgestellt werden. Im oben genannten Beispiel wird der Wert in l als this für setName() bereitgestellt. Rückgabewert hinzufügen Eine synthetische Methode kann mithilfe der Methode setReturnedValue() einen Wert zurückgeben. Rückgabewerte können zum Generieren von Markierungsmethoden nützlich sein, mit denen die Überprüfung komplexer Frameworks modelliert wird. Wenn Sie beispielsweise ein Framework verwenden, das eine komplexe Prüfung eines als unsicher eingestuften HTTP-Anforderungswerts ausführt, bevor dieser Wert an die setter-Methode eines Modellobjekts weitergegeben wird, können Sie die Prüfung für von AppScan Source erkannte Traces durch die Verwendung von Code ähnlich dem folgenden verfügbar machen: String validatorSig = "Synth.validatorModel(java.lang.String): java.lang.String"; HighLevelSyntheticMethod validator = HighLevelSyntheticMethod.make(validatorSig); // Geben Sie den übergebenen Parameter einfach zurück validator.setReturnedValue(EnclosingFormal.FIRST); HighLevelSyntheticMethod m = ...; Local validated = m.addCall(validatorSig, null, Taint.taint()); // Jetzt kann der geprüfte Wert an eine setter-Methode übergeben werden Die synthetische Methode Synth.validatorModel() gibt die an sie als Parameter übergebene String (Zeichenfolge) einfach zurück. Anschließend wird in einer anderen synthetischen Methode ein Aufruf an Synth.validatorModel() hinzugefügt, indem ein als unsicher eingestufter Wert als Argument übergeben wird. Das Ergebnis dieses Aufrufs wird in validated gespeichert, das in einem nachfolgenden Aufruf an eine setter-Methode übergeben werden kann (wie durch das Beispiel in „Aufrufe hinzufügen” auf Seite 124 dargestellt). Traces, die diese als unsicher eingestuften Daten enthalten, beinhalten den Aufruf an Synth.validatorModel() und ein AppScan Source-Benutzer kann auswählen, die Traces zu filtern, falls die Prüfung als ausreichend angesehen wird. Globals Globals stellen eine erweiterte Funktion dar, die verwendet werden kann, um Datenfluss zwischen unterschiedlichen und voneinander unabhängigen Teilen einer Anwendung verfügbar zu machen. Globals können beispielsweise verwendet werden, um den Datenfluss von einem Controller zu einer Ansicht über AnforderungsKapitel 7. Framework for Frameworks-APIs handhaben 125 oder Sitzungsattribute zu modellieren. Die wichtigsten Operationen zum Erstellen und Zugreifen auf Globals lauten wie folgt: v Zum Erstellen eines Global-Objekts, das ein Global darstellt, verwenden Sie F4FActions.createGlobal(). v Zum Schreiben eines Globals verwenden Sie HighLevelSyntheticMethod.addGlobalWrite(). v Zum Lesen aus einem Global übergeben Sie das Global-Objekt als Parameter Param in einem Aufruf an HighLevelSyntheticMethod.addCall() - oder erhalten Sie es über HighLevelSyntheticMethod.setReturnedValue() von einer synthetischen Methode zurück. Beispiel: Eine Controllerklasse schreibt den Vornamen eines Benutzers an das Anforderungsattribut firstName und die Ansicht liest anschließend dieses Anforderungsattribut und gibt den Wert an die Antwort aus. Auf einer übergeordneten Ebene können Sie diesen Ablauf wie folgt modellieren: Global firstNameGlobal = actions.createGlobal ("firstName", "java.lang.String", true); HighLevelSyntheticMethod controller = ...; Local firstNameLocal = controller.newLocal("java.lang.String"); controller.addGlobalWrite(firstNameGlobal, firstNameLocal, null); HighLevelSyntheticMethod view = ...; view.addCall("Response.write(java.lang.String):void", null, firstNameGlobal); Indem Sie in der synthetischen Methode des Controllers ein 'write' zu firstNameGlobal hinzufügen und anschließend firstNameGlobal in der synthetischen Methode view an Response.write() übergeben, wird der Datenfluss vom Controller zur Ansicht verfügbar gemacht. Anmerkung: Dieses Beispiel enthält viele Vereinfachungen. Eine Vollversion würde unter anderem den ordnungsgemäßen Fluss von Daten an firstNameLocal verfügbar machen müssen. Beispiel: Synthetische Methoden erstellen In diesem Beispiel wird die Erstellung einer synthetischen Methode veranschaulicht. In dieser synthetischen Methode wird zunächst ein Klassenfeld verbreitet und dann ein Aufruf zu einer Methode im Benutzercode hinzugefügt und schließlich das Ergebnis dieses Methodenaufrufs an eine Senke übergeben. v v v v v „Anwendungsszenario” „Elemente, die in der synthetischen Methode modelliert werden” auf Seite 127 „Schritt 1: Eine leere synthetische Methode erstellen” auf Seite 127 „Schritt 2: Die Verbreitung eines Klassenfelds modellieren” auf Seite 127 „Schritt 3: Das Aufrufen der createUser()-Methode modellieren” auf Seite 128 v „Schritt 4: Die Datenrückgabe an den Client modellieren” auf Seite 128 Anwendungsszenario In diesem Beispiel ist createUser eine REST-API, die im JAX-RS-Framework implementiert ist. Ein Benutzer kann diese API mit einer URL aufrufen, z. B. http:// host:port/users/createUser. Da der Pfad übereinstimmt, leitet die FrameworkLaufzeit diesen Aufruf an UserRestService.createUser() weiter. Zusätzlich initialisiert die Framework-Laufzeit die Klassenvariable urlInfo aus den Clientdaten, bevor createUser() aufgerufen wird. Als letzter Schritt werden die durch 126 IBM Security AppScan Source Utilities: Benutzerhandbuch createUser() zurückgegebenen Daten von der Laufzeit an den Client zurückgesendet. Elemente, die in der synthetischen Methode modelliert werden Um das „Anwendungsszenario” auf Seite 126 mit einer synthetischen Methode zu behandeln, werden die folgenden Elemente modelliert: v Die als unsicher eingestufte Klassenvariable urlInfo von UserRestService. v Der Aufruf an UserRestService.createUser(). v Die Rückgabe von Daten an den Client. Dies ist der Code für die Methode createUser(): import java.io.BufferedWriter; @Path("users") public class UserRestService { @Context UriInfo urlInfo; @Path("/createUser") public User createUser(){ MultivaluedMap<String, String> queryParams = urlInfo.getQueryParameters(); String name = queryParams.getFirst("name"); User user = new User(name); return user; } } Schritt 1: Eine leere synthetische Methode erstellen 22 23 24 public class JAXRSHandler extends F4FHandler{ @Override public void handleApp(F4FApp app, F4FActions actions) { HighLevelSyntheticMethod synthMethod = HighLevelSyntheticMethod.make(); v In Zeile 24 wird das Objekt der synthetischen Methode initialisiert. Schritt 2: Die Verbreitung eines Klassenfelds modellieren Das Code-Snippet unten veranschaulicht, wie bestimmte Klassenfelder verbreitet werden können. In diesem Beispiel sollen die Klassenfelder verbreitet werden, die die Anmerkung @Context haben. 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 // Erstellen Sie eine lokale Variable des entsprechenden Typs Local userRestServiceClazzInstance = synthMethod.newLocal("com.ibm.appscan.UserRestService"); // Rufen Sie alle Klassenfelder ab for(IField field: app.getIClass ("com.ibm.appscan.UserRestService").getDeclaredInstanceFields()){ // Rufen Sie alle Anmerkungen zu diesem Feld ab Collection<Annotation> fieldAnnotations = app.getFieldAnnotations(field); // Prüfen Sie bei jeder Anmerkung des Felds, ob es sich um eine @Context-Anmerkung handelt for (Annotation annotation : fieldAnnotations) { if (annotation.getType().getName().toString().equals ("Ljavax/ws/rs/core/Context")) { // Rufen Sie die F4F-API auf, um die Verbreitung dem Feld zuzuordnen synthMethod.addInstanceVariableWrite( userRestServiceClazzInstance /*Variable representing Kapitel 7. Framework for Frameworks-APIs handhaben 127 class instance*/, field /*field to taint */, Taint.taint() /* taint */, null); 44 45 46 47 } } } Die Framework for Framework-API addInstanceVariableWrite hat vier Argumente: 1. Das erste Argument ist die Klassenreferenz, deren Feld verbreitet werden soll. Im genannten Beispiel bezieht sich die lokale Variable userRestServiceClazzInstance auf dieses Argument. 2. Das erste Argument ist das Klassenfeld, das verbreitet werden soll. 3. Das dritte Argument ist der neue Wert, der dem Klassenvariablenfeld zugeordnet werden soll. In diesem Beispiel soll diese Variable so verbreitet werden, dass Taint.taint() übergeben wird. 4. Das letzte Argument ist FilePositionInfo, das in diesem Beispiel null ist. Schritt 3: Das Aufrufen der createUser()-Methode modellieren In diesem Schritt wird der Aufruf in der synthetische Methode simuliert. 50 51 52 53 // Rufen Sie ’createUser()’ auf und speichern Sie den zurückgegebenen Wert in eine lokale Variable Local returnObj = synthMethod.addCall( "com.ibm.appscan.UserRestService.createUser():com.ibm.appscan.User" /* signature of the method to be called */, null, /* FilePositionInfo */ userRestServiceClazzInstance /* Object on which the method will be called */); Die übergeordnete API addCall benötigt drei Argumente: v Das erste Argument ist die Signatur der Methode, die aufgerufen werden soll. In diesem Fall sollUser.createUser() aufgerufen werden, da seine Signatur verwendet wird. v Das zweite Argument ist FilePositionInfo. Es wird als null weitergereicht, da es für dieses Beispiel nicht erforderlich ist. v Das letzte Argument stellt die Liste der Parameter dar, die erforderlich sind, um die createUser()-Methode aufzurufen. Da createUser() keine Argumente annimmt, ist das einzige Argument, das an diesen Aufruf übergeben wird, das this-Objekt, das eine Local-Variable (userRestServiceClazzInstance) des Typs User ist. Die Methode createUser() gibt einen neu erstellten User zurück, der in einer neuen Local-Variable mit dem Namen returnedObj (siehe Zeile 51) gespeichert wird. Schritt 4: Die Datenrückgabe an den Client modellieren In diesem letzten Schritt wird eine Senke erstellt, um die Rückgabe der Daten an den Client zu modellieren. 58 59 60 61 62 63 128 // Erstellen Sie ein PrintWriter-Objekt Local printWriterObj = synthMethod.newLocal("java.io.PrintWriter"); // Die Print-API soll im PrintWriter-Objekt aufgerufen werden. // Die Print-API nimmt ein einziges Argument des Objekttyps gibt ’void’ zurück // Erstellen Sie eine Parameterliste der Größe 2. Das erste Element in der Liste ist immer das // ’this’-Objekt. Der Rest sind tatsächliche Methodenargumente. IBM Security AppScan Source Utilities: Benutzerhandbuch 64 65 Param[] printWriterObjParam = new Param[2]; printWriterObjParam[0] = printWriterObj; // Das "this"-Objekt // Der Wert, der vom Aufruf an die createUser-Methode zurückgegeben wird printWriterObjParam[1] = returnObj; 66 67 68 69 70 // Fügen Sie jetzt der Print-Methode einen Aufruf hinzu synthMethod.addCall("java.io.PrintWriter.print(java.lang.Object):void", null, printWriterObjParam); } v In Zeile 59 soll ein lokales Objekt für die Klasse PrintWriter in der synthetischen Methode erstellt werden. v In den Zeilen 64 bis 66 wird die Liste der Parameter vorbereitet, die für den Aufruf der Methode print in der Klasseninstanz PrintWriter erforderlich ist (printWriterObj): – Der erste Parameter ist der Objektverweis selbst (printWriterObj). – Der zweite Parameter ist das Argument für die Methode print. Der zurückgegebene Werte, der in der lokalen returnObj-Variable gespeichert ist, soll zurückgegeben werden. v In Zeile 69 wird der PrintWriter.print-Methode ein Aufruf hinzugefügt, um die Rückgabe der Daten an den Client zu modellieren. Neues Web-Service-Framework for Frameworks-Handler mit dem vorhandenen angepassten Web Service Description Language-Scanner integrieren Informationen zu diesem Vorgang Beim Überprüfen einer JAX-RS- oder JAX-WS-Anwendung mit AppScan Source sollten Sie sicherstellen, dass Sie alle Webserviceeingangspunkte erfassen, sodass Sie keine Schwachstellen in Ihrer Anwendung übersehen. In diesem Dokument wird ein Verfahren beschrieben, wie Sie dies durchführen können. Es werden die Schritte beschrieben, um einen neuen Framework for Frameworks (F4F)-Handler zu integrieren, der für die Analyse von nicht unterstützten Web-Service-Frameworks mit dem angepassten Web Service Description Language (WSDL)-Scanner verwendet wird. Dies ist notwendig, damit der WSDL-Scanner zwischen den Webserviceeingangspunkten, die vom neuen F4F-Handler bereits ermittelt wurden, und den Webserviceeingangspunkten, die in der WSDL-Datei vorhanden sind, unterscheiden kann. Mit diesen Informationen kann der WSDL-Scanner die Konfigurationsergebnisse eliminieren, die bereits vom neuen F4F-Handler analysiert wurden. v „Den Web-Service-F4F-Handler mit dem angepassten WSDL-Scanner verbinden” v „Signaturzuordnung” auf Seite 131 Den Web-Service-F4F-Handler mit dem angepassten WSDLScanner verbinden Vorbereitende Schritte In diesem Abschnitt wird vorausgesetzt, dass der Haupt-F4F-Handler und die synthetische Methodengeneration bereits entwickelt und getestet wurden. Kapitel 7. Framework for Frameworks-APIs handhaben 129 Vorgehensweise 1. Fügen Sie eine Abhängigkeit von Ihrem Plug-in zu com.ibm.appscan.frameworks.wsdl.util hinzu, der die Helper-APIs zum Melden der gefundenen Services einschließt. Sie ist auch im Ordner walalib vorhanden. 2. Fügen Sie im Haupt-Handler (der die Klasse F4FHandler erweitert), vor der Methode handleApp() diese Zeilen hinzu: String filePath = WSDLReportingUtil.getServicesFilePath (getFrameworksInput().getFileLocs()); if (filePath!=null) { WSDLReportingUtil.initXmlDocument(filePath); } Mit diesen Zeilen wird eine temporäre Datei erstellt, die vom angepassten WSDL-Scanner verwendet wird. 3. Fügen Sie am Ende der Methode handleApp() folgende Zeile hinzu, um sicherzustellen, dass alle gemeldeten Services gespeichert werden, bevor der F4FHandler beendet wird: WSDLReportingUtil.saveXmlDocument(); 4. Um einen Service zu melden, fügen Sie einen Aufruf zu einer dieser APIs aus der API WSDLReportingUtil hinzu: v reportService(String targetNameSpace, String serviceName, String methodSignature) v reportService(String targetNamespace, String serviceName, String operationName, ArrayList<String> wsdlParams) Hierbei gilt: v targetNameSpace ist der Zielnamensbereich des Services. In JAX-WS befindet er sich in den Anmerkungen oder er entspricht dem Package-Namen. v serviceName ist der Name des Services. Er befindet sich in den Anmerkungen oder er entspricht dem Namen der Serviceklasse. v methodSignature ist die Signatur der Methode aus der WSDL-Datei mit einigen Vereinfachungen. v operationName ist der Name der Methode, der mit dem Namen der Operation in einem Porttyp in der WSDL-Datei verbunden ist. v wsdlParams ist die Liste der Parametertypen in einem einfachen WSDL-Format. 5. Zurzeit kann der angepasste WSDL-Scanner als Standalone-Scanner oder als Bestandteil einer Java/JSP-Prüfung verwendet werden. Wenn der neue F4FWeb-Service-Handler mit einer anderen Sprache als Java (beispielsweise .NET) verwendet werden soll, stellen Sie sicher, dass der angepasste WSDL-Scanner mit dem richtigen Überprüfungstyp aufgerufen wird. Führen Sie dazu folgende Schritte durch: a. Gehen Sie zum <data_dir>/ltd-Verzeichnis (wobei <datenverzeichnis> die Position Ihrer AppScan Source-Programmdaten ist, die in Kapitel 9, „Positionen für Installations- und Benutzerdatendateien”, auf Seite 143 beschrieben wird). b. Erstellen Sie eine Backup-Kopie aller Dateien, um unerwartete Probleme zu vermeiden. c. Öffnen Sie die .ltd-Datei, die dem richtigen Überprüfungstyp entspricht. Für C++ öffnen Sie beispielsweise die Datei cpp.ltd. d. Fügen Sie die folgende Zeile hinzu, bevor Sie den Tag <LanguageTypeDefinition> schließen: <Scanner name="wsdl"/> 130 IBM Security AppScan Source Utilities: Benutzerhandbuch e. Kopieren Sie den Wert file_extention_set_name, der für den nächsten Schritt erforderlich ist. f. Öffnen Sie file_extensions.xml und suchen Sie nach FileExtensionSet, in dem der Name enthalten ist, der im vorherigen Schritt kopiert wurde. g. Fügen Sie die folgende Zeile der Datei hinzu: <FileExtension extension="wsdl" assess="true"/> h. Speichern Sie alle Dateien und starten Sie AppScan Source neu. Der angepasste WSDL-Scanner wird jetzt als Bestandteil der vollständigen Anwendungsüberprüfung ausgeführt. Ergebnisse An dieser Stelle zeigt der angepasste WSDL-Scanner nur Konfigurationsergebnisse (in der Ansicht 'Ergebnisse') der WSDL-Dateien an, die von Ihrem Framework nicht implementiert wurden. Alle Services von WSDL-Dateien, die bereits in der Anwendung implementiert wurden, werden nicht als Konfigurationsergebnis angezeigt. Sie werden von neuen Web-Services-F4F-Handler analysiert. Signaturzuordnung Informationen zu diesem Vorgang Der angepasste WSDL-Scanner versucht, die gemeldeten Methoden mit den entsprechenden WSDL-Services, WSDL-Porttypen und WSDL-Operationen abzugleichen. Daher werden die Web-Services im WSDL-Format gemeldet. Einige Vereinfachungen wurden hinzugefügt, um das Verständnis zu erleichtern: v Für die primitiven XSD-Typen muss kein Zielnamensbereich hinzugefügt werden, sondern nur der Name (z. B. string, int, float, double). v Für Sammlungen und Arrays wird [] nach dem Typ hinzugefügt (z. B. string[], int[]). v Bei Klassentypen, die den komplexen XSD-Typen (mit JAX-B oder anderen Technologien) zugeordnet werden, wird der Typ wie folgt angezeigt: http//my-types/myxsdnamespace/:Customer Der Namensbereich sollte als Teil der Java-Anmerkung verfügbar sein. Wenn er kein Teil der Java-Anmerkung ist, sollte er dem Namensbereich des aufrufenden Services oder des Pakets je nach Implementierung des Frameworks sein. Anmerkung: Zuordnungsfehler verhindern häufig, dass der angepasste WSDLScanner Ihre gemeldete Web-Service-API mit der dazugehörigen WSDL-Operation abgeglichen wird. Wenn dies der Fall ist, wird ein zusätzliches Konfigurationsergebnis angezeigt. Dieses zusätzliche Ergebnis ist ein Fehlalarm und weist auf ein Zuordnungsproblem hin. Wenn Sie nicht wissen, wie die erwartete Signatur aussehen soll, führen Sie eine WSDL-Überprüfung von AppScan Source auf den WSDL-Dateien selbst durch. Dadurch werden Ergebnisse für alle Operationen der WSDL-Services generiert. Wenn Sie auf ein Ergebnis klicken, wird die Methodensignatur in der Ansicht für die Ergebnisdetails angezeigt. Kapitel 7. Framework for Frameworks-APIs handhaben 131 132 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten CRWSA0900E Das ausgeschlossene Bundle kann nicht umbenannt werden. Das 'Ausgeschlossene Bundle' ist ein integriertes Bundle, das alle ausgeschlossenen Ergebnisse enthält. Es kann nicht umbenannt werden. CRWSA0907E Hinzufügen von <> ist fehlgeschlagen, weil es bereits in der Datenbank vorhanden ist und nicht überschrieben werden kann. Die angepasste Regel ist bereits in der AppScan Source-Datenbank vorhanden und kann daher nicht neu erstellt oder überschrieben werden. Dies tritt in einer der folgenden Situationen auf: v Die Regel, die im Lieferumfang der Datenbank enthalten ist, ist als Senke markiert. Sie versuchen, eine angepasste Regel zu erstellen, die die Senke als Verbreitung von als unsicher eingestuften Daten markiert. v Die Regel, die im Lieferumfang der Datenbank enthalten ist, ist als Verbreitung von als unsicher eingestuften Daten markiert. Sie versuchen, eine angepasste Regel zu erstellen, die diese Regel ändert, indem eine Verbreitung von als unsicher eingestuften Daten hinzugefügt wird. CRWSA0920E Beim Importieren der Signaturen in das Projekt sind Fehler aufgetreten. Stellen Sie vor dem Importieren von Signaturen sicher, dass das Projekt ordnungsgemäß konfiguriert ist. CRWSA0925E Der für "{0}" eingegebene Wert ist ungültig. Der eingegebene Wert weist kein gültiges Format auf. Geben Sie ein gültiges Format ein. CRWSA0930E Das für "{0}" eingegebene Datenformat ist ungültig. CRWSA0935E Das für "{0}" eingegebene Zahlenformat ist ungültig. CRWSA0940E Unbekannter Benutzer. Stellen Sie sicher, dass der Benutzer auf dem Enterprise Server vorhanden ist und dass Sie die Benutzerdaten ordnungsgemäß eingegeben haben. CRWSA0945E Die angegebene Benutzer-ID ist zu kurz. BenutzerIDs müssen eine Mindestlänge von 1 Zeichen aufweisen. CRWSA0950E Das angegebene Kennwort ist zu kurz. Kennwörter müssen eine Mindestlänge von 6 Zeichen aufweisen. © Copyright IBM Corp. 2003, 2015 133 CRWSA0955E Die angegebene Benutzer-ID ist zu lang. BenutzerIDs dürfen höchstens 255 Zeichen lang sein. CRWSA0960E Die angegebene Benutzer-ID enthält ungültige Zeichen. CRWSA0965E Das angegebene Kennwort ist zu lang. Kennwörter dürfen höchstens 16 Zeichen lang sein. CRWSA0970E Die angegebenen Kennwörter stimmen nicht überein. Geben Sie die Kennwörter noch einmal ein. CRWSA0975E Der Benutzer mit Administratorberechtigung kann nicht geändert werden. CRWSA0980E Die angegebene E-Mail-Adresse ist ungültig. Das erforderliche Format lautet <Benutzer>@<Domäne>, wobei <Domäne> nicht die Länge von 255 Zeichen überschreiten darf. CRWSA0985E Eine Angabe im Feld 'E-Mail' ist erforderlich. CRWSA0990E Eine Angabe im Feld 'Name' ist erforderlich. CRWSA0995E Die angegebene Benutzer-ID ist im Repository vorhanden; die Felder 'Name' und 'E-Mail' wurden aktualisiert. CRWSA1010W Benutzer {0} konnte nicht hinzugefügt werden. Informationen finden Sie in der Hilfe zu AppScan Enterprise Server. CRWSA1050E Unerwarteter Fehler beim Laden des externen Editors. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. CRWSA1055E Fehler beim Laden des externen Editors. Die Eigenschaftendatei ist beschädigt. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. CRWSA1060E Fehler beim Laden des externen Editors. Die Eigenschaftendatei fehlt. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. CRWSA1065E Fehler beim Laden des externen Editors. Der bevorzugte Editor kann nicht geladen werden. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. 134 IBM Security AppScan Source Utilities: Benutzerhandbuch CRWSA1070E Fehler beim Laden des externen Editors. Das Editor-Plug-in meldete einen Fehler. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. CRWSA1075E Fehler beim Laden des externen Editors. Die ausführbare Instanz kann nicht erstellt werden. Stellen Sie sicher, dass der externe Editor verfügbar ist und ordnungsgemäß funktioniert. CRWSA1080E Fehler beim Laden von Eclipse. Verbindungsaufbau fehlgeschlagen. Stellen Sie sicher, dass Sie Eclipse ordnungsgemäß konfiguriert haben, sodass es als externer Editor verwendet werden kann (verwenden Sie eine Eclipse-Instanz, die die Datei com.ouncelabs.core.filelauncher.jar im zugehörigen Verzeichnis plugins\ enthält). CRWSA1085E Fehler beim Laden von Eclipse. Keine Antwort vom Server. Stellen Sie sicher, dass Sie Eclipse ordnungsgemäß konfiguriert haben, sodass es als externer Editor verwendet werden kann (verwenden Sie eine Eclipse-Instanz, die die Datei com.ouncelabs.core.filelauncher.jar im zugehörigen Verzeichnis plugins\ enthält). CRWSA1090E Fehler beim Laden von Eclipse. Protokollfehler. CRWSA1095E Fehler beim Laden von Eclipse. Pfad zu Eclipse ist ungültig. Stellen Sie sicher, dass Sie Eclipse ordnungsgemäß konfiguriert haben, sodass es als externer Editor verwendet werden kann (verwenden Sie eine Eclipse-Instanz, die die Datei com.ouncelabs.core.filelauncher.jar im zugehörigen Verzeichnis plugins\ enthält). CRWSA1100E Fehler beim Laden des angepassten Editors. {0} kann nicht ausgeführt werden. CRWSA1120E Überprüfung fehlgeschlagen. CRWSA1125E Beim Abrufen der Überprüfungsergebnisse ist ein Fehler aufgetreten. CRWSA1150W Warnung: Wenn "{0}" als Prüfroutine markiert wird, hat dies keine Auswirkung auf das aktuelle Ergebnis bzw. auf das Tracediagramm. Möchten Sie den Stammknoten wirklich als Prüfroutine hinzufügen? CRWSA1155E Mindestens eine Quelle, eine Senke, eine Quelleneigenschaft oder eine Senkeneigenschaft ist erforderlich. CRWSA1160E Der Assistent für angepasste Regeln kann nicht gestartet werden, wenn eine Beurteilung durchgeführt wird. Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten 135 CRWSA1165E Fehler beim Hinzufügen der angepassten Regeln. CRWSA1170E Hinzufügen von {0} ist fehlgeschlagen. CRWSA1175E Hinzufügen von {0} ist fehlgeschlagen, weil es bereits in der Datenbank vorhanden ist und nicht überschrieben werden kann. CRWSA1185E Die Überprüfung ist aufgrund eines Fehlers in der Kompilierung fehlgeschlagen. CRWSA1190E Kompilierung fehlgeschlagen. CRWSA1195E Beim Versuch, den Editor zu öffnen, ist ein Fehler aufgetreten. Versuchen Sie AppScan Source erneut zu starten, falls das Öffnen des Editors fehlschlägt. CRWSA1200E Die ausgewählte Datei wurde auf diesem System nicht gefunden. CRWSA1205E Beim Erstellen von Quellcodemarkierungen für die Beurteilung ist ein Fehler aufgetreten. CRWSA1210E Mindestens eine Quellendatei konnte nicht zur Nutzung durch die Snippetfunktion für Quellcode gefunden werden. Möchten Sie nach der Speicherposition der fehlenden Dateien abgefragt werden? CRWSA1215E Herstellen einer Verbindung zu AppScan Enterprise Console ist fehlgeschlagen. Überprüfen Sie, dass der Server an der angegebenen Position aktiv ist. CRWSA1220E Überschreitung des Anmeldezeitlimits nach {0,number} Sekunden. Es wird empfohlen, dass Sie die AppScan Enterprise Console-Services erneut starten. CRWSA1225E Fehler beim Ablegen nicht gespeicherter Filter. Die Änderungen an den Filtern werden nicht gespeichert. CRWSA1230E Während des Durchsuchens kann die Beurteilung nicht gespeichert werden. CRWSA1240E Anwendung nicht gefunden. CRWSA1245E {0} konnte nicht gefunden werden. Überprüfen Sie die Speicherposition der angegebenen Java Runtime Environment (JRE). CRWSA1250E 'startup.jar' oder das Plug-in 'org.eclipse.equinox.launcher' kann nicht gefunden werden. Überprüfen Sie die angegebene Eclipse-basierte Installation. 136 IBM Security AppScan Source Utilities: Benutzerhandbuch CRWSA1290W Mindestens ein Projekt weist kein Java Development Kit (JDK) auf. Für diese Projekte wurde das standardmäßige JDK festgelegt. Das angegebene JDK eines importierten Projekts wurde von AppScan Source nicht erkannt. Um dies zu korrigieren, fügen Sie es als erkannte JDK hinzu, indem Sie die Seite für Java und JSP-Benutzervorgaben verwenden. CRWSA1295W Das Projekt weist kein Java Development Kit (JDK) auf. Für dieses Projekt wurde das standardmäßige JDK festgelegt. Das angegebene JDK eines importierten Projekts wurde von AppScan Source nicht erkannt. Um dies zu korrigieren, fügen Sie es als erkannte JDK hinzu, indem Sie die Seite für Java und JSP-Benutzervorgaben verwenden. CRWSA1300E Mindestens ein Projekt weist kein JDK auf und es ist kein Standard-JDK festgelegt. Nachdem Sie auf 'OK' geklickt haben, werden Sie zur Wahl Ihres Standard-JDKs aufgefordert. Künftig wird dieses JDK für alle Projekte verwendet, bei denen kein JDK explizit festgelegt ist. CRWSA1305E Die Anwendung ist schreibgeschützt. Änderungen, die an der Beurteilung vorgenommen werden, bleiben bei künftigen Überprüfungen nicht bestehen. Es ist möglich, dass es sich um eine ferne Anwendung handelt oder dass sie gespeichert werden muss. In beiden Fällen stehen Änderungen, die an der Beurteilung vorgenommen werden, zukünftigen Überprüfungen nicht zur Verfügung. CRWSA1340E Registrierung von "{0}" fehlgeschlagen. CRWSA1345E Die Anwendungsdatei ist nicht beschreibbar. CRWSA1350E Fehler beim Löschen von Einträgen. CRWSA1355E Eine Anwendung kann nicht gelöscht werden, während eine Beurteilung ausgeführt wird. CRWSA1360E Ein Projekt kann nicht gelöscht werden, während eine Beurteilung ausgeführt wird. CRWSA1365W Alle Projekte, auf die die Änderungen Anwendung finden sollen, müssen aktualisiert werden. CRWSA1370W Einige der ausgewählten Ergebnisse verfügen über bestehende Anmerkungen. Möchten Sie sie wirklich überschreiben? CRWSA1375W Export in Datei fehlgeschlagen. CRWSA1380W Keine Ergebnisse für Export vorhanden. In den Beurteilungsergebnissen fehlen alle ausgewählten Ergebnisse. CRWSA1383E Keine Ergebnisse zur Übergabe. Alle ausgewählten Ergebnisse wurden zuvor übergeben und die Vorgabe 'Fehler Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten 137 nur einmal übergeben' wurde festgelegt. CRWSA1385W Die folgenden Felder müssen ausgefüllt werden, um einen Fehler zu übergeben: CRWSA1395W Bundle erfolgreich in {0} gespeichert. CRWSA1400E Die Projektdatei "{0}" konnte nicht gefunden werden. Prüfen Sie, ob die AppScan Source-Projektdatei vorhanden ist. CRWSA1405E Das ASP.NET-Verzeichnis "{0}" konnte nicht gefunden werden. Prüfen Sie, ob das ASP.NET-Verzeichnis vorhanden ist. CRWSA1410E Fehler beim Importieren der Projektdatei "{0}". CRWSA1415E Fehler beim Importieren des ASP.NET-Verzeichnisses "{0}". CRWSA1420E Fehler beim Erstellen des Projekts. CRWSA1425E Das Arbeitsverzeichnis "{0}" existiert nicht. Wählen Sie ein gültiges Verzeichnis aus. CRWSA1430E Das Web-Kontextstammelement "{0}" existiert nicht. Wählen Sie ein gültiges Verzeichnis oder eine gültige WAR-Datei aus. CRWSA1435E Bei dem Web-Kontextstammverzeichnis "{0}" darf es sich nicht um ein übergeordnetes Verzeichnis oder um dasselbe Verzeichnis wie das Projektverzeichnis "{1}" handeln. CRWSA1440E Das Kontextstammelement "{0}" ist nicht vorhanden. Wählen Sie ein gültiges Verzeichnis aus. CRWSA1445E Die Datei bzw. das Verzeichnis "{0}" ist nicht vorhanden. Wählen Sie eine gültige Datei bzw. ein gültiges Verzeichnis aus. CRWSA1450E Bei dem Inhaltsstammverzeichnis "{0}" darf es sich nicht um ein übergeordnetes Verzeichnis oder um dasselbe Verzeichnis wie das Projektverzeichnis "{1}" handeln. CRWSA1455E Die Methode "{0}" verfügt bereits über ein Aktionsobjekt für Typ "{1}". CRWSA1460E "{0}" ist kein gültiges Verzeichnis. CRWSA1465E JDK für Projekt fehlt. CRWSA1470E Dieses Java-/JSP-Projekt verweist auf ein ungültiges Java Development Kit ({0}). Es wird ein Standard-JDK zur Verfügung gestellt. 138 IBM Security AppScan Source Utilities: Benutzerhandbuch CRWSA1475E JDK-Name ist bereits vorhanden. CRWSA1480E Ein JDK namens "{0}" ist bereits vorhanden. Geben Sie einen eindeutigen JDK-Namen an. CRWSA1485E Der JDK-Name muss über mindestens ein Zeichen verfügen. CRWSA1490E Für diese Operation muss ein JDK ausgewählt werden. Ein vorhandenes JDK muss ausgewählt werden. CRWSA1495E Speichern nicht möglich. CRWSA1500E Speichern nicht möglich, während eine Beurteilung ausgeführt wird. CRWSA1505E Das Quellenstammelement "{0}" ist bereits als Stammelement vorhanden. CRWSA1510E Das Verzeichnis "{0}" ist nicht vorhanden. Wählen Sie ein gültiges Verzeichnis aus. CRWSA1515E Das Vorkompilierungsverzeichnis "{0}" ist nicht vorhanden. Wählen Sie ein gültiges Verzeichnis aus. CRWSA1520E Die Klasse {0} ist sowohl in der Abhängigkeit {1} als auch auf dem Quellenpfad vorhanden. Überprüfen Sie die angegebenen Abhängigkeiten. CRWSA1525E Nicht erwarteter Dateityp auf Klassenpfad ({0}). Stellen Sie sicher, dass Ihr Java-Projekt nur .jar-, .class- oder .java-Dateien enthält. CRWSA1530E Projekte können nicht validiert werden, während eine Überprüfung ausgeführt wird. CRWSA1535E CRWSA1540E Der Konfigurationsname ist leer. CRWSA1545E Ungültiges Quellenstammverzeichnis. CRWSA1550E Quellenstammverzeichnis "{0}" ist ungültig. Quellenstammverzeichnisse, die Dateien sind, müssen sich unter dem Arbeitsverzeichnis befinden. CRWSA1555E Es konnte kein gültiges Web-Kontextstammverzeichnis gefunden werden. CRWSA1565E Codierungsroutine für {0} erfolgreich erstellt. Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten 139 CRWSA1568E Variablen im Pfad "{0}" konnten nicht aufgelöst werden. Fügen Sie die Pfadvariable auf der Vorgabenseite 'Variablen ändern' hinzu. CRWSA1570E Ungültiger Attributname {0}. CRWSA1575E Ungültiger Attributwert {0}. CRWSA1580E Sie müssen zunächst ein Attribut erstellen, bevor Sie Werte hinzufügen können. CRWSA1585E Die Anwendung muss einen nicht leeren Namen haben. CRWSA1590E Doppelter Eintrag "{0}". Geben Sie einen eindeutigen Wert an. CRWSA1595E Der Name darf nicht leer sein. CRWSA1600E Zum Generieren des Berichts muss eine Ansicht mit Ergebnissen ausgewählt werden. CRWSA1625E Zugriff verweigert. Aktuelles Konto hat keine Berechtigung für {0}. CRWSA1630E Beim Import des Arbeitsbereichs ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihr Importmodul unter 'Vorgaben > Importmodule des Eclipse-Arbeitsbereichs' ordnungsgemäß konfiguriert ist. CRWSA1640E Projekt kann nicht hinzugefügt werden. {0} ist ein Verweis oder eine schreibgeschützte Anwendung. Die Anwendung ist schreibgeschützt oder es handelt sich um einen Verweis auf einen Eclipse-Arbeitsbereich oder eine Microsoft Visual Studio-Lösung. Es können keine Projekte hinzugefügt werden. CRWSA1650E Formatvorlage {0} kann nicht gefunden werden. CRWSA1655E Für das Muster ist ein Name erforderlich. CRWSA1660E Für das Muster muss mindestens ein Kriterium angegeben werden. CRWSA1665E Die Kriterien dürfen nicht leer sein. CRWSA1670E Für das Muster ist eine Datei erforderlich. CRWSA1675E Eine Überprüfungsregel mit dem Namen "{0}" ist bereits vorhanden. Wählen Sie einen eindeutigen Namen aus. CRWSA1700E Der Berichtsentwurf ist derzeit leer. Fügen Sie in der Registerkarte 'Berichtsentwurf' Berichtselemente hinzu. 140 IBM Security AppScan Source Utilities: Benutzerhandbuch CRWSA1705E Es sind keine zu exportierenden Bundles vorhanden. CRWSA1710E Es ist keine offene Beurteilung vorhanden, die exportiert werden kann. CRWSA1715E Die Kennwörter, die Sie in den Feldern 'Neues Kennwort' und 'Neues Kennwort bestätigen' eingegeben haben, stimmen nicht überein. CRWSA1725E Das Kennwort ist zu kurz. Geben Sie ein Kennwort mit mindestens 6 und maximal 16 Zeichen ein. CRWSA1730E Das Kennwort ist zu lang. Geben Sie ein Kennwort mit mindestens 6 und maximal 16 Zeichen ein. CRWSA1735E Datei mit Einstellungen "{0}" hat keinen Anzeigenamen und wird übersprungen. CRWSA1736E Datei <dateiname> konnte nicht geöffnet werden. Stellen Sie sicher, dass der Benutzer, für den der Automationsserver läuft, aktiv ist und ausreichend Berechtigungen für die Datei hat. CRWSA1737E Datei <dateiname> konnte nicht geöffnet werden. Stellen Sie sicher, dass der Benutzer, für den der Automationsserver läuft, aktiv ist und ausreichend Berechtigungen für die Datei hat und dass es sich um eine lokale Anwendung handelt. CRWSA1740E Die Datei mit Einstellungen namens "{0}" ist bereits geöffnet. CRWSA1745E Die Datei mit Einstellungen "{0}" ist für den Benutzer nicht sichtbar. CRWSA1750I Diese Registerkarte enthält einige Einstellungen, die einen Neustart der Services von AppScan Source erfordern, damit Änderungen wirksam werden. Schließen Sie vor dem Neustart der Services von AppScan Source alle Clientanwendungen von AppScan Source, die auf diesem Computer ausgeführt werden oder mit ihm verbunden sind. Möchten Sie die Services jetzt erneut starten? CRWSA1755E {0} verfügt über eine Einstellung, bei der mindestens eines der erforderlichen Attribute (name, display_name oder type) fehlt. Diese Datei wird nicht geladen. CRWSA1760E Es ist ein Lizenzierungsfehler aufgetreten: CRWSA1775E Die Initialisierung der Verbindung der AppScan Enterprise Console ist fehlgeschlagen. Überprüfen Sie die Verfügbarkeit der AppScan Enterprise Console mit diesen Einstellungen in einem externen Browser. Kapitel 8. Fehlernachrichten in AppScan Source-Clientkomponenten 141 CRWSA1780E CRWSA1780E Die Initialisierung der Verbindung der AppScan Enterprise Console ist fehlgeschlagen. Prüfen Sie die Protokolle und/oder überprüfen Sie die Verfügbarkeit der AppScan Enterprise Console mit diesen Einstellungen in einem externen Browser. - Fehlerdetails: - {0} CRWSA1790E Veröffentlichung der Beurteilung in AppScan Enterprise Console ist fehlgeschlagen. Prüfen Sie die Protokolle und/oder wenden Sie sich an Ihren Systemadministrator. CRWSA1795E Initialisierung des Veröffentlichungsservice fehlgeschlagen. Prüfen Sie die Verbindungseinstellungen Ihrer AppScan Enterprise Console. CRWSA1800E Initialisierung des Veröffentlichungsservice fehlgeschlagen. Überprüfen Sie die Verfügbarkeit der AppScan Enterprise Console und Ihre Fähigkeit, sich anzumelden. CRWSA1805E Datei kann nicht heruntergeladen werden. Beim Versuch, eine Verbindung zu der Site aufzubauen, ist ein Fehler aufgetreten. Stellen Sie sicher, dass Ihre Internetverbindung funktioniert und dass die Site verfügbar ist. CRWSA1810E Bevor das in der Produktversion 7.0.0 erstellte Bundle geöffnet werden kann, müssen Sie sich anmelden. CRWSA9999E AppScan Source for Analysis hat einen kritischen Fehler festgestellt und muss geschlossen werden. 142 IBM Security AppScan Source Utilities: Benutzerhandbuch Kapitel 9. Positionen für Installations- und Benutzerdatendateien Wenn Sie AppScan Source installieren, werden Benutzerdaten- und Konfigurationsdateien außerhalb des Installationsverzeichnisses gespeichert. v „Standardinstallationsverzeichnis” v „Standarddatenverzeichnis für AppScan Source” v „Position der temporären Dateien von AppScan Source” auf Seite 144 Standardinstallationsverzeichnis Wenn AppScan Source installiert wird, dann wird die Software unter einer der folgenden Standardpositionen abgelegt: v 32-Bit Versionen von Microsoft Windows: <SYSTEMDRIVE>:\Program Files\IBM\AppScanSource v 64-Bit Versionen von Microsoft Windows: <SYSTEMDRIVE>:\Program Files (x86)\IBM\AppScanSource v Linux: Wenn Sie der Rootbenutzer sind, dann installiert der Installationsassistent Ihre Software in /opt/ibm/appscansource. Wenn Sie nicht der Rootbenutzer sind, können Sie das AppScan Source for Development-Eclipse-Plug-in installieren, das standardmäßig in <ausgangsverzeichnis>/AppScan_Source installiert wird. v OS X: /Applications/AppScanSource.app Wichtig: v Der Name des Installationsverzeichnisses darf nur englische Zeichen enthalten. Ordner mit Namen, die andere als englische Zeichen enthalten, sind nicht zulässig. v Wenn Sie unter Windows installieren, müssen Sie über Administratorrechte verfügen, um AppScan Source-Komponenten installieren zu können. v Wenn Sie unter Linux installieren, müssen Sie über Rootberechtigungen verfügen, um AppScan Source-Serverkomponenten installieren zu können. Standarddatenverzeichnis für AppScan Source AppScan Source-Daten bestehen aus Elementen wie z. B. Konfigurations-, Beispielund Protokolldateien. Wenn AppScan Source installiert wird, dann werden Datendateien standardmäßig unter den folgenden Positionen abgelegt: v Microsoft Windows: <Systemlaufwerk>:\ProgramData\IBM\AppScanSource Anmerkung: Bei ProgramData\ handelt es sich um einen verdeckten Ordner. Um ihn anzuzeigen, müssen Sie die Benutzervorgaben für die Anzeige im Explorer ändern, um verdeckte Dateien und Ordner anzuzeigen. v Linux: /var/opt/ibm/appscansource v OS X: /Users/Shared/AppScanSource Informationen zum Ändern der Position des AppScan Source-Datenverzeichnisses finden Sie in „Datenverzeichnis für AppScan Source ändern” auf Seite 144. © Copyright IBM Corp. 2003, 2015 143 Position der temporären Dateien von AppScan Source Bestimmte AppScan Source-Operationen führen zur Erstellung temporärer Dateien, die standardmäßig unter den folgenden Positionen abgelegt sind: v Microsoft Windows: <Systemlaufwerk>:\ProgramData\IBM\AppScanSource\temp Anmerkung: Bei ProgramData\ handelt es sich um einen verdeckten Ordner. Um ihn anzuzeigen, müssen Sie die Benutzervorgaben für die Anzeige im Explorer ändern, um verdeckte Dateien und Ordner anzuzeigen. v Linux: /var/opt/ibm/appscansource/temp v OS X: /Users/Shared/AppScanSource/temp Die Position der temporären Dateien befindet sich immer in einem temporären Verzeichnis (temp) im Datenverzeichnis von AppScan Source. Sie können die Position der temporären Dateien ändern, indem Sie das Datenverzeichnis wie in „Datenverzeichnis für AppScan Source ändern” beschrieben ändern. Dadurch wird das Verzeichnis temp unter das Datenverzeichnis versetzt, das Sie ausgewählt haben. Datenverzeichnis für AppScan Source ändern Bei Bedarf kann die Position des Datenverzeichnisses von AppScan Source geändert werden, um den Festplattenspeicherplatz zu verwalten. Sie können die Position nach der AppScan Source-Installation ändern, indem Sie die in diesem Abschnitt aufgeführten Schritte ausführen. Vorbereitende Schritte Bevor Sie diese Aufgabe ausführen, müssen Sie sicherstellen, dass alle AppScan Source-Clientanwendungen beendet oder heruntergefahren wurden. Folgende AppScan Source-Clientanwendungen stehen zur Verfügung: v AppScan Source for Analysis v AppScan Source for Development (Eclipse- oder Visual Studio-Plug-in) (nur unter Windows und Linux unterstützt) v AppScan Source-Befehlzeilenschnittstelle (CLI) v AppScan Source for Automation Darüber hinaus müssen Sie, wenn auf ihrem System AppScan Source for Automation installiert wurde, sicherstellen, dass der Automatisierungsserver heruntergefahren wurde: v Unter Windows müssen Sie den Dienst (Service) IBM Security AppScan Source Automation stoppen. v Unter Linux müssen Sie den folgenden Befehl eingeben: /etc/init.d/ounceautod stop v Geben Sie auf OS X diesen Befehl ein: launchctl stop com.ibm.appscan.autod Vorgehensweise 1. Definieren Sie die Umgebungsvariable APPSCAN_SOURCE_SHARED_DATA=<datenverzeichnis>. Hierbei steht <datenverzeichnis> für die Position, unter der die Daten von AppScan Source gespeichert werden sollen. Anmerkung: 144 IBM Security AppScan Source Utilities: Benutzerhandbuch v Die Position von <datenverzeichnis> muss mit einem vollständigen und absoluten Pfad angegeben werden, der auf demselben System, auf dem auch die AppScan Source-Installation implementiert ist, bereits vorhanden sein muss. v Der Verzeichnisname <data_dir> darf nur englische Zeichen enthalten. Ordner mit Namen, die andere als englische Zeichen enthalten, sind nicht zulässig. 2. Suchen Sie das Standarddatenverzeichnis, das bei der Installation von AppScan Source erstellt wurde (weitere Informationen zur Position des Standarddatenverzeichnisses finden Sie in „Standarddatenverzeichnis für AppScan Source” auf Seite 143). 3. Kopieren Sie den Inhalt des Standarddatenverzeichnisses an die Position von <datenverzeichnis>, die in der Umgebungsvariablen angegeben wurde, oder verschieben Sie den Inhalt dorthin. 4. Gilt nur, wenn AppScan Source for Automation unter Linux Linux installiert wurde: a. Bearbeiten Sie die Datei /etc/init.d/ounceautod. b. Suchen Sie die folgende Zeile: su - ounce -c ’export LD_LIBRARY_PATH="/opt/IBM/AppScan_Source/bin":$LD_LIBRARY_PATH && cd "/opt/IBM/AppScan_Source/bin" && "/opt/IBM/AppScan_Source/bin/ounceautod" -s’ >> "/var/opt/ibm/appscansource/logs/ounceautod_output.log" 2>&1 & Ersetzen Sie sie durch den folgenden Code: su - ounce -c ’export APPSCAN_SOURCE_SHARED_DATA=<new data directory path here> && export LD_LIBRARY_PATH="/opt/IBM/AppScan_Source/bin":$LD_LIBRARY_PATH && cd "/opt/IBM/AppScan_Source/bin" && "/opt/IBM/AppScan_Source/bin/ounceautod" -s’ >> "<new data directory path here>/logs/ounceautod_output.log" 2>&1 & Anmerkung: Der obige Befehl stellt eine Zeile dar. c. Speichern Sie die Datei /etc/init.d/ounceautod. Nächste Schritte Wenn Sie AppScan Source for Automation installiert haben, dann starten Sie den Automatisierungsserver: v Unter Windows müssen Sie den Dienst (Service) IBM Security AppScan Source Automation starten. v Unter Linux müssen Sie den folgenden Befehl eingeben: /etc/init.d/unceautod start v Geben Sie auf OS X diesen Befehl ein: launchctl start com.ibm.appscan.autod Kapitel 9. Positionen für Installations- und Benutzerdatendateien 145 146 IBM Security AppScan Source Utilities: Benutzerhandbuch Bemerkungen Die vorliegenden Informationen wurden für Produkte und Services entwickelt, die auf dem deutschen Markt angeboten werden. Möglicherweise bietet IBM die in dieser Dokumentation beschriebenen Produkte, Services oder Funktionen in anderen Ländern nicht an. Informationen über die gegenwärtig im jeweiligen Land verfügbaren Produkte und Services sind beim zuständigen IBM Ansprechpartner erhältlich. Hinweise auf IBM Lizenzprogramme oder andere IBM Produkte bedeuten nicht, dass nur Programme, Produkte oder Services von IBM verwendet werden können. Anstelle der IBM Produkte, Programme oder Services können auch andere, ihnen äquivalente Produkte, Programme oder Services verwendet werden, solange diese keine gewerblichen oder anderen Schutzrechte von IBM verletzen. Die Verantwortung für den Betrieb von Produkten, Programmen und Services anderer Anbieter liegt beim Kunden. Für die in diesem Handbuch beschriebenen Erzeugnisse und Verfahren kann es IBM Patente oder Patentanmeldungen geben. Mit der Auslieferung dieses Handbuchs ist keine Lizenzierung dieser Patente verbunden. Lizenzanforderungen sind schriftlich an folgende Adresse zu richten (Anfragen an diese Adresse müssen auf Englisch formuliert werden): IBM Director of Licensing IBM Europe, Middle East & Africa Tour Descartes 2, avenue Gambetta France Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement might not apply to you. Trotz sorgfältiger Bearbeitung können technische Ungenauigkeiten oder Druckfehler in dieser Veröffentlichung nicht ausgeschlossen werden. Die hier enthaltenen Informationen werden in regelmäßigen Zeitabständen aktualisiert und als Neuausgabe veröffentlicht. IBM kann ohne weitere Mitteilung jederzeit Verbesserungen und/ oder Änderungen an den in dieser Veröffentlichung beschriebenen Produkten und/ oder Programmen vornehmen. Verweise in diesen Informationen auf Websites anderer Anbieter werden lediglich als Service für den Kunden bereitgestellt und stellen keinerlei Billigung des Inhalts dieser Websites dar. Das über diese Websites verfügbare Material ist nicht Bestandteil des Materials für dieses IBM Produkt. Die Verwendung dieser Websites geschieht auf eigene Verantwortung. Werden an IBM Informationen eingesandt, können diese beliebig verwendet werden, ohne dass eine Verpflichtung gegenüber dem Einsender entsteht. Lizenznehmer des Programms, die Informationen zu diesem Produkt wünschen mit der Zielsetzung: (i) den Austausch von Informationen zwischen unabhängig voneinander erstellten Programmen und anderen Programmen (einschließlich des vorliegenden Programms) sowie (ii) die gemeinsame Nutzung der ausgetauschten Informationen zu ermöglichen, wenden sich an folgende Adresse: © Copyright IBM Corp. 2003, 2015 147 IBM Corporation 2Z4A/101 11400 Burnet Road Austin, TX 78758 U.S.A. Die Bereitstellung dieser Informationen kann unter Umständen von bestimmten Bedingungen - in einigen Fällen auch von der Zahlung einer Gebühr - abhängig sein. Die Lieferung des in diesem Dokument beschriebenen Lizenzprogramms sowie des zugehörigen Lizenzmaterials erfolgt auf der Basis der IBM Rahmenvereinbarung bzw. der Allgemeinen Geschäftsbedingungen von IBM, der IBM Internationalen Nutzungsbedingungen für Programmpakete oder einer äquivalenten Vereinbarung. Alle in diesem Dokument enthaltenen Leistungsdaten stammen aus einer kontrollierten Umgebung. Die Ergebnisse, die in anderen Betriebsumgebungen erzielt werden, können daher erheblich von den hier erzielten Ergebnissen abweichen. Einige Daten stammen möglicherweise von Systemen, deren Entwicklung noch nicht abgeschlossen ist. Eine Gewährleistung, dass diese Daten auch in allgemein verfügbaren Systemen erzielt werden, kann nicht gegeben werden. Darüber hinaus wurden einige Daten unter Umständen durch Extrapolation berechnet. Die tatsächlichen Ergebnisse können davon abweichen. Benutzer dieses Dokuments sollten die entsprechenden Daten in ihrer spezifischen Umgebung prüfen. Alle Informationen zu Produkten anderer Anbieter stammen von den Anbietern der aufgeführten Produkte, deren veröffentlichten Ankündigungen oder anderen allgemein verfügbaren Quellen. IBM hat diese Produkte nicht getestet und kann daher keine Aussagen zu Leistung, Kompatibilität oder anderen Merkmalen machen. Fragen zu den Leistungsmerkmalen von Produkten anderer Anbieter sind an den jeweiligen Anbieter zu richten. Aussagen über Pläne und Absichten von IBM unterliegen Änderungen oder können zurückgenommen werden und repräsentieren nur die Ziele von IBM. Alle von IBM angegebenen Preise sind empfohlene Richtpreise und können jederzeit ohne weitere Mitteilung geändert werden. Händlerpreise können unter Umständen von den hier genannten Preisen abweichen. Diese Veröffentlichung dient nur zu Planungszwecken. Die in dieser Veröffentlichung enthaltenen Informationen können geändert werden, bevor die beschriebenen Produkte verfügbar sind. Diese Veröffentlichung enthält Beispiele für Daten und Berichte des alltäglichen Geschäftsablaufs. Sie sollen nur die Funktionen des Lizenzprogramms illustrieren und können Namen von Personen, Firmen, Marken oder Produkten enthalten. Alle diese Namen sind frei erfunden; Ähnlichkeiten mit tatsächlichen Namen und Adressen sind rein zufällig. COPYRIGHTLIZENZ: Diese Veröffentlichung enthält Beispielanwendungsprogramme, die in Quellensprache geschrieben sind und Programmiertechniken in verschiedenen Betriebsumgebungen veranschaulichen. Sie dürfen diese Beispielprogramme kostenlos kopieren, ändern und verteilen, wenn dies zu dem Zweck geschieht, Anwendungsprogramme zu entwickeln, zu verwenden, zu vermarkten oder zu verteilen, die mit der Anwendungsprogrammierschnittstelle für die Betriebsumgebung konform sind, für 148 IBM Security AppScan Source Utilities: Benutzerhandbuch die diese Beispielprogramme geschrieben werden. Diese Beispiele wurden nicht unter allen denkbaren Bedingungen getestet. Daher kann IBM die Zuverlässigkeit, Wartungsfreundlichkeit oder Funktion dieser Programme weder zusagen noch gewährleisten. Sie dürfen diese Beispielprogramme kostenlos kopieren, ändern und verteilen, wenn dies zu dem Zweck geschieht, Anwendungsprogramme zu entwickeln, zu verwenden, zu vermarkten oder zu verteilen, die mit der Anwendungsprogrammierschnittstelle für die Betriebsumgebung konform sind, für die diese Beispielprogramme geschrieben werden. Kopien oder Teile der Beispielprogramme bzw. daraus abgeleiteter Code müssen folgenden Copyrightvermerk beinhalten: © (Name Ihrer Firma) (Jahr). Teile des vorliegenden Codes wurden aus Beispielprogrammen der IBM Corporation abgeleitet. © Copyright IBM Corp. _Jahr/Jahre angeben_. All rights reserved. Wird dieses Dokument als Softcopy (Book) angezeigt, sind Fotografien oder Farbabbildungen möglicherweise nicht sichtbar. Marken IBM, das IBM Logo und ibm.com sind Marken oder eingetragene Marken der International Business Machines Corp. in den USA und/oder anderen Ländern. Weitere Produkt- und Servicenamen können Marken von IBM oder anderen Herstellern sein. Eine aktuelle Liste der IBM Marken finden Sie auf der Website "Copyright and trademark information" unter www.ibm.com/legal/ copytrade.shtml. Adobe, Acrobat, PostScript und alle auf Adobe-basierenden Marken sind sind Marken oder eingetragene Marken der Adobe Systems Incorporated in den USA und/ oder anderen Ländern. IT Infrastructure Library ist eine eingetragene Marke der Central Computer and Telecommunications Agency. Die Central Computer and Telecommunications Agency ist nunmehr in das Office of Government Commerce eingegliedert worden. Intel, das Intel-Logo, Intel Inside, das Intel Inside-Logo, Intel Centrino, das Intel Centrino-Logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium und Pentium sind Marken oder eingetragene Marken der Intel Corporation oder ihrer Tochtergesellschaften in den USA oder anderen Ländern. Linux ist eine Marke von Linus Torvalds in den USA und/oder anderen Ländern. Microsoft, Windows, Windows NT und das Windows-Logo sind Marken der Microsoft Corporation in den USA und/oder anderen Ländern. ITIL ist eine eingetragene Marke, eine eingetragene Gemeinschaftsmarke des Office of Government Commerce, die beim US Patent and Trademark Office registriert ist. UNIX ist eine eingetragene Marke von The Open Group in den USA und anderen Ländern. Java und alle auf Java basierenden Marken und Logos sind Marken oder eingetragene Marken der Oracle Corporation und/oder ihrer verbundenen Unternehmen. Bemerkungen 149 Cell Broadband Engine wird unter Lizenz verwendet und ist eine Marke der Sony Computer Entertainment, Inc. in den USA und/oder anderen Ländern. Linear Tape-Open, LTO, das LTO-Logo, Ultrium und das Ultrium-Logo sind Marken von HP, IBM Corp. und Quantum in den USA und/oder anderen Ländern. 150 IBM Security AppScan Source Utilities: Benutzerhandbuch Index A Anforderungs-ID 98 Anwendungen erstellen mit Ounce/Ant 62 AppScan Enterprise Server SSL-Zertifikat 36 AppScan Source AppScan Enterprise Server-Anmeldung SSL-Zertifikat 36 AppScan Source for Automation 89, 95 Anmeldung 95 Befehlszeile 98 Einstellungsdatei 96 max_concurrent_requests 96 port 96 server_hostname 96 Protokollierung 97 Automatisierungsserver Anforderungs-ID 98 Befehlszeile 98 Einstellungsdatei 96 max_concurrent_requests 96 port 96 server_hostname 96 Protokollierung 97 B Befehlszeilenschnittstelle 19 automatisierte Beurteilungen durchführen 54 Befehle 22 Anmeldedatei 36 Anmeldung 35 delete 27 deleteassess 28 deleteuser 28 delvar 28 details 29 echo 30 getaseinfo 30 help 30 importieren 31 info 32 Informationen 27 list 32 listassess 33 listgroups 33 listusers 34 log 34 login_local 37 logout 37 moduser 37 newuser 39 openapplication 41 openassessmentfile 42 password 42 printuser 43 publishassess 43 © Copyright IBM Corp. 2003, 2015 Befehlszeilenschnittstelle (Forts.) Befehle (Forts.) publishassessase 45 quit 45 record 46 refresh 46 register 46 removeassess 47 report 47 scan 49 script 50 setaseinfo 51 setcurrentobject 53 setvar 53 unregister 54 Zusammenfassung 22 Berechtigungen 20 in Landessprache anzeigen 20 Kontext 19 Objektbaumstruktur 19 starten 20 Syntax 21 über Builddienstprogramm Ounce/ Ant aufrufen 62 Befehlszeilenschnittstelle - Ausgabeformate 47 Berechtigungen Befehl moduser 37 newuser, Befehl 39 Berichte 47 Berichtsausgabeformate 98 html 98 pdf-annotated 98 pdf-comprehensive 98 pdf-detailed 98 pdf-summary 98 zip 98 Berichtstypen suchen 98 C CLI (siehe Befehlszeilenschnittstelle) 19 D Data Access API JVM-Argumente 63 Data Access-API 63 Objektmodell 64 verwenden 66 Beurteilung öffnen 66 Ergebnisse ausgeben 66 Trace ausgeben 67 veröffentlichte Beurteilungen abrufen 67 F Fehlernachrichten Clientkomponenten 133 Framework for Frameworks 103 angepasster WSDL-Scanner 129 ausgeführte allgemeine Aktionen 112 Beispiel 104 importieren 105 Informationen 105 JAR-Datei erstellen 109 JAR-Datei exportieren 112 Manifest erstellen 109 Hauptkomponenten 104 übergeordnete synthetische Methoden 122 Beispiel 126 VDB-Format 123 verwenden 124 verwenden F4FHandler-Klasse erstellen 108 I Installation Dateiposition 143 Datenposition 143 ändern 144 K Klassen und Methoden der Data AccessAPI 68 AssessedFile 68 getFilename 69 getFindings 68 getStats 68 AssessmentDiff 71 AssessmentFilter 71 AssessmentFilter 71, 72 AssessmentResults 72 getAssessmentForApplication 73 getAssessmentForProject 74 getAssessments 73 getFindings 72 getMessages 75 getName 75 getStats 73 Aufruf 75 getCalls 75 getClassName 77 getColumnNumber 76 getFilename 75 getLineNumber 76 getMethodName 77 getSignature 76 getSrcContext 76 getTraceType 77 Beurteilung 69 getAssesseeName 71 getAssessments 69 getFileByPath 70 getFiles 70 getFindings 69 151 Klassen und Methoden der Data AccessAPI (Forts.) Beurteilung (Forts.) getStats 69 ClassificationType 77 statische Elemente 77 value 78 com.ouncelabs.sdk.AssessmentDiff getCommonFindings 71 getLostFindings 71 getNewFindings 71 com.ouncelabs.sdk.Factory 78 Anmeldung 79 clearCache 79 diffAssessments 81 getPublishedAssessments 80 init 78 openAssessment 80 shutdown 79 DateProximityUnit 78 statische Elemente 78 value 78 Ergebnis 81 getApiName 81 getCallerName 82 getClassification 82 getDefectInfo 85 getDefectSubmissionDate 85 getDefectSubmissionUser 85 getFilename 81 getLineNumber 81 getModifiedClassification 84 getModifiedSeverity 84 getModifiedVulnerabilityType 84 getNotes 87 getOriginalClassification 83 getOriginalSeverity 83 getOriginalVulnerabilityType 83 getProperties 85 getSeverity 82 getSrcContext 84 getTrace 86 getVulnerabilityType 82 isExcluded 86 OunceException 89 SeverityType 87 statische Elemente 87 value 88 Trace 87 getCalls 87 L Linux Befehlszeilenschnittstelle starten 20 Ounce/Make, Builddienstprogramm, Konventionen 3 Ounce/Make-Builddienstprogramm Suchpfad 8 O Ounce/Ant, Builddienstprogramm Buildintegration 62 ounceCli-Task 62 152 Ounce/Ant-Erstellungsdienstprogramm 57 Anwendungen erstellen 62 Apache/Ant-Integration 57 Eigenschaften 58 festlegen 59 Jar-Datei ant-contrib 57 Java JDK-Version 57 ounceant.jar 57 Projekte benennen 61 Projekte erstellen 59 ounceCreateProject 60 ounceExclude 61 ounceSourceRoot 60 ounceWeb 61 Ounce/Make, Builddienstprogramm 1 Befehl 1 Beispiele 15 Ounce/Make im Einprojektmodus mit rekursiver Option 17 Ounce/Make mit rekursiver Option 16 Ounce/Make ohne Optionen 16 Eigenschaftendatei Beispiele 15 Elemente der Eigenschaftendatei 9 Projektdateien benennen 3 starten 1 Ounce/Make-Builddienstprogramm Eigenschaftendatei 8 suchen 8 ouncemake_properties.xml (siehe auch Eigenschaftendatei) 8 Suchpfad 8 Ounce/Make-Erstellungsdienstprogramm ausführen 3 Optionen 11 Ausgabenachrichten 5 Befehle make 1 make clean 1 Befehlssyntax 5 Betrieb 3 Einsatz 3 Elemente der Eigenschaftendatei Compiler 9 Executable 14 FileOptions 13 GlobalProjectOptions 12 Linker 10 Make 10 MakeOptions 10 MountRoot 14 Optionen 11 Make-Optionen 5 Optionen 5 Projektdateien benennen explizites Benennen 4 unterstützte Compiler 2 unterstützte Make-Versionen 2 unterstützte Plattformen platforms 2 Voraussetzungen 1 zur PATH-Umgebungsvariable hinzufügen 3 Ounce/Maven 89 installieren 89 Szenarios 90 IBM Security AppScan Source Utilities: Benutzerhandbuch Ounce/Maven (Forts.) verwenden 90 Zielanfragen 91 ounce:application 92 ounce:project 92 ounce:project-only 93 ounce:report 93 ounce:scan 93 Ounce/Maven-Plug-in Szenarios Anwendungen überprüfen 91 Anwendungs- und Projektdateien erstellen 90 Berichte mit dem Siteziel integrieren 91 Berichterstellung 91 ounceautod 95 Anmeldung über die Befehlszeile 95 Befehle 98 GenerateReport 98 PublishAssessment 100 PublishAssessmentASE 100 ScanApplication 101 Wait 102 Befehlszeile 98 Einstellungsdatei 96 Protokollierung 97 P Projekte benennen mit Ounce/Ant 61 Dateien mit Builddienstprogramm Ounce/Make benennen 3 Dateien mit dem Ounce/Make-Erstellungsdienstprogramm benennen explizites Benennen 4 erstellen mit Ounce/Ant 59 ounceCreateProject 60 ounceExclude 61 ounceSourceRoot 60 ounceWeb 61 S Standardinstallationsverzeichnis 143 W Windows Befehlszeilenschnittstelle starten 20 Ounce/Make, Builddienstprogramm, Konventionen 3 Ounce/Make-Builddienstprogramm Suchpfad 8 Gedruckt in Deutschland