wm-audit / Dokumentation
Dokumentation · wm-audit 1.0.0Was wm-audit genau tut – und wie Sie es aufrufen
wm-audit liest den Export eines webMethods API Gateway und prüft die Konfiguration, die dort tatsächlich greift. Diese Seite beschreibt Eingabe, Kommandozeile, Exit-Codes, die Berichtsformate einschließlich JUnit-XML, alle Prüfregeln und die Grenzen des Werkzeugs.
Überblick
Eine API-Spezifikation beschreibt, was eine Schnittstelle tun soll. Der Export des Gateways beschreibt, was sie tut: welche Policies zugeordnet sind, wohin geroutet wird, welche Protokolle erlaubt sind. wm-audit wertet diesen Export in einem Lauf aus:
- ›liest APIs, Policies, Policy-Aktionen und Aliase aus einem ZIP-Archiv oder einem entpackten Ordner,
- ›berücksichtigt nur Policy-Aktionen, die im Gateway einer Stage zugeordnet sind,
- ›prüft jede API gegen zehn Regeln und trennt belegte Befunde von Hinweisen,
- ›liest die Lastgrenzen der Traffic-Optimization-Policies aus,
- ›schreibt einen Bericht als Text, JSON, HTML oder JUnit-XML und setzt auf Wunsch einen Exit-Code für die Pipeline.
Was wm-audit nicht tut: Es stellt keine Verbindung her und sendet keine Anfrage an Ihre APIs. Es verändert den Export nicht und entpackt kein ZIP auf die Platte. Passwörter und Schlüssel (PassmanData, Keystore, Truststore, Kerberos) öffnet es nie. Ob eine Policy im Betrieb greift, zeigt erst ein Test gegen die laufende API – diese Fragen nennt der Bericht, statt sie zu bewerten.
Quelltext auf GitHub
Der Quelltext von wm-audit ist öffentlich: github.com/cehlert9999/sectestx-api-scanner ↗ (Apache-2.0). Im Ordner wm-audit-rs/ liegt das Programm in Rust: alle Prüfregeln, die Berichtsformate einschließlich JUnit und Lastrechner, die Sicherheitstests, das Prüfskript und die Startdateien. Unter wm-audit/tests/ liegen die 15 Prüffälle mit den erwarteten Ausgaben in allen vier Formaten. Daneben enthält das Repo oas-audit, die Prüfung hinter dem kostenlosen API-Check.
- ›Es ist derselbe Quelltext, aus dem die Programme für Windows, macOS und Linux gebaut werden; er liegt zusätzlich dem Lieferpaket bei.
- ›Bei jeder Änderung prüft GitHub Actions Formatierung, statische Analyse (clippy, Warnungen als Fehler) und alle Tests einschließlich der Prüffälle.
- ›
pruefen.shwiederholt die vollständige Prüfung in einem Lauf: Tests, Lizenzen, bekannte Schwachstellen, SBOM und Build ohne lokale Pfade. Es brauchtcargo-deny,cargo-auditundcargo-cyclonedx.
Selbst bauen
git clone https://github.com/cehlert9999/sectestx-api-scanner cd sectestx-api-scanner/wm-audit-rs cargo build --release --locked # Programm: target/release/wm-audit cargo test --locked # Prüffälle und Sicherheitstests ./pruefen.sh # alle Prüfungen in einem Lauf
Schnellstart
Ohne Kommandozeile: Den Export auf die Startdatei ziehen oder sie doppelklicken und eine ZIP-Datei auswählen. Der HTML-Bericht wird unter Dokumente/wm-audit Berichte/ als Bericht_<Export>_<Datum>_<Uhrzeit>.html gespeichert und im Browser geöffnet.
| Plattform | Programm | Startdatei |
|---|---|---|
| Windows (x86-64) | wm-audit.exe | wm-audit-starten.cmd – beim ersten Start „Weitere Informationen“ → „Trotzdem ausführen“ |
| macOS (Apple Silicon und Intel) | wm-audit | wm-audit.app – beim ersten Start Rechtsklick → Öffnen; ab macOS 15 unter Systemeinstellungen → Datenschutz & Sicherheit freigeben |
| Linux (x86-64, statisch gelinkt) | wm-audit | wm-audit-starten.sh – Dateiauswahl mit zenity, falls installiert |
Mit Kommandozeile:
wm-audit gateway-export.zip # Bericht als Text wm-audit gateway-export.zip --html -o bericht.html # Bericht mit Aufgabenliste wm-audit gateway-export.zip --junit -o junit.xml --fail-on high # für die Pipeline
Eine Installation oder Laufzeitumgebung ist nicht nötig; das Programm ist eine einzelne Datei.
Den Export erstellen
Laut IBM-Dokumentation exportieren Sie APIs im API Gateway so:
- ›In der Titelleiste APIs öffnen.
- ›Eine API: das Export-Symbol neben der API anklicken. Mehrere APIs: die Kästchen der APIs markieren, das Zahnrad-Symbol anklicken und Export wählen.
- ›Optional „Include applications“ und weitere Optionen wählen, dann Export. Der Browser bietet das Archiv zum Speichern an.
Quelle: IBM: Exporting APIs ↗. Übergeben Sie wm-audit das Archiv unverändert oder den entpackten Ordner.
test/ und prod/, liest wm-audit jede API mit den Policies und Aliasen aus ihrem eigenen Teilbaum. Dieselbe API aus Test und Produktion wird getrennt geprüft; eine Policy aus der Produktion verdeckt keine Lücke im Test.Kommandozeile
wm-audit EXPORT [--json | --html | --junit] [--output DATEI] [--fail-on SCHWERE]
Unter Windows heißt das Programm wm-audit.exe. Optionen dürfen vor oder nach dem Export stehen. Wird eine Option mehrfach angegeben, gilt der letzte Wert. Optionen werden nur ausgeschrieben erkannt, Abkürzungen wie --js sind ein Aufruffehler.
| Option | Standard | Wirkung |
|---|---|---|
EXPORT | Pflicht, genau einer je Aufruf | Ein Ordner wird als entpackter Export gelesen, jede andere Datei als ZIP-Archiv – unabhängig von der Dateiendung. |
| (keine Formatoption) | Standard | Bericht als Text. |
--json | – | Bericht als JSON im Format wm-audit-bericht/1. |
--html | – | Bericht als HTML-Datei mit Aufgabenliste, Anleitungen und Lastrechner. Mit --output verwenden. |
--junit | – | Bericht als JUnit-XML für CI-Systeme. Siehe „CI/CD und JUnit“. |
--output DATEI-o DATEI--output=DATEI | Standardausgabe | Schreibt den Bericht in diese Datei. Eine vorhandene Datei wird überschrieben, der Ordner muss existieren. Ohne die Option geht der Bericht auf die Standardausgabe. |
--fail-on SCHWERE--fail-on=SCHWERE | aus | Exit-Code 1, wenn mindestens ein belegter Befund diese Schwere oder eine höhere hat. Werte: critical, high, medium, low, info. Bestimmt im JUnit-Bericht, welche Befunde als Fehler zählen; Text, JSON und HTML ändern sich nicht. |
--version | – | Gibt „wm-audit 1.0.0“ aus und endet mit 0. |
-h, --help | – | Gibt die Hilfe aus und endet mit 0. |
-- | – | Beendet die Optionen; alles danach gilt als Pfad (für Exporte, deren Name mit „-“ beginnt). |
Regeln für Ausgabe und Formate
- ›
--json,--htmlund--junitschließen sich gegenseitig aus. Ohne eine davon entsteht Text. - ›Der Bericht ist immer UTF-8. Fehlermeldungen gehen auf die Fehlerausgabe, nie in den Bericht.
- ›Außer der Ausgabedatei schreibt wm-audit nichts: keine temporären Dateien, keine Logs, keine Konfiguration.
Keine Konfigurationsdatei, keine Umgebungsvariablen
wm-audit liest keine Konfigurationsdatei und keine Umgebungsvariablen. Das Verhalten hängt allein von den Argumenten und dem Export ab: gleicher Export, gleiche Optionen, byte-gleicher Bericht. Die Grenzen gegen manipulierte Exporte sind fest eingebaut:
| Grenze | Wert | Bei Überschreitung |
|---|---|---|
| Einträge im ZIP bzw. Dateien im Ordner | 50.000 | Abbruch, Exit-Code 2 |
| Entpackte Asset-Daten insgesamt | 512 MiB | Abbruch, Exit-Code 2 |
| Größe einer Asset-Datei | 32 MiB | Datei übersprungen (zu_gross) |
| Verschachtelungstiefe von JSON | 100 | Datei übersprungen (zu_tief) |
Beispiele
# Bericht mit Aufgabenliste und Lastrechner wm-audit gateway-export.zip --html -o bericht.html # Entpackter Export, JSON in eine Datei wm-audit ./export-ordner --json -o bericht.json # Gate in der Pipeline: Exit 1 bei belegtem Befund ab "high" wm-audit gateway-export.zip --fail-on high # JUnit-XML für Jenkins, GitLab oder Azure DevOps wm-audit gateway-export.zip --junit -o wm-audit-junit.xml --fail-on high # Windows (PowerShell oder cmd) wm-audit.exe C:\Exporte\gateway-export.zip --html -o bericht.html
Exit-Codes
| Code | Bedeutung |
|---|---|
0 | Export gelesen, Bericht geschrieben. Gilt auch mit Befunden, solange --fail-on nicht ausgelöst hat, und für einen Export ohne API. |
1 | Export gelesen, Bericht geschrieben, und --fail-on hat ausgelöst: mindestens ein belegter Befund mit der angegebenen oder einer höheren Schwere. |
2 | Kein Bericht. Aufruffehler: unbekannte Option, fehlender Wert, ungültige Schwere, kein oder ein zweiter Export, mehrere Formatoptionen; dann folgt auf der Fehlerausgabe die Hilfe und wm-audit: error: …. Lesefehler: Pfad nicht gefunden, keine gültige ZIP-Datei, doppelte Eintragsnamen im ZIP, mehr als 50.000 Einträge, mehr als 512 MiB entpackte Asset-Daten. Schreibfehler: Ausgabedatei nicht schreibbar. Meldung jeweils als wm-audit: … auf der Fehlerausgabe. |
zusammenfassung.apis_gelesen im JSON bzw. die Eigenschaft apis_gelesen im JUnit-Bericht.CI/CD und JUnit
Mit --junit schreibt wm-audit einen Testbericht, den Jenkins, GitLab, Azure DevOps und andere CI-Systeme anzeigen. Jede API ist eine Testsuite, jede Prüfregel ein Testfall: Für 100 APIs entstehen 1.000 Testfälle aus den Prüfregeln.
Wann ein Testfall fehlschlägt
- ›Ohne
--fail-on: Jeder Befund, der die API trifft, ist ein Fehler – belegte Befunde wie Hinweise. Der Exit-Code bleibt 0. - ›Mit
--fail-on SCHWERE: Fehler sind genau die Befunde, die auch Exit-Code 1 auslösen: belegt und mindestens diese Schwere. Alle übrigen Befunde stehen im Testfall untersystem-out; der Testfall gilt als bestanden. - ›Zusammengefasste Befunde (eine Regel trifft mehr als die Hälfte der APIs) erscheinen bei jeder betroffenen API.
- ›Dieselbe API aus mehreren Umgebungen ergibt eine Testsuite; die Befunde beider Umgebungen stehen darin.
Aufbau
| Element | Inhalt |
|---|---|
testsuites | name „wm-audit“; tests und failures über alle Suiten; errors immer 0. |
Suite Export | Eigenschaften des Laufs: werkzeug, quelle, art, sha256 (nur bei ZIP), fail_on (falls gesetzt), apis_gelesen, apis_eindeutig, gesperrt, uebersprungen. Dazu je übersprungener Datei ein Testfall als skipped; Name ist der Pfad im Export, message der Grund. |
Suite API: Name Version | Je API ein Testfall pro Prüfregel, also 10. classname ist „wm-audit.“ plus Name und Version, Punkte durch „_“ ersetzt (sonst teilt Jenkins am Punkt in Paket und Klasse). name ist die Regel-ID und bleibt über Läufe stabil – so führt das CI-System Verläufe je Regel und API. |
failure | type ist die Schwere, message der Titel des Befunds; der Text nennt Schwere und Einstufung, Begründung, Empfehlung und Fundstelle im Export. Treffen mehrere Befunde derselben Regel eine API, stehen sie in einem failure, type ist die höchste Schwere. |
Suite Statisch nicht prüfbar | Die acht Fragen, die kein Export beantwortet, als skipped mit Begründung. |
Das XML enthält keine Zeitstempel und keine Laufzeiten: Derselbe Export ergibt dieselbe Datei. Zeichen, die XML 1.0 nicht erlaubt, werden durch U+FFFD ersetzt; alles andere wird maskiert. Geprüft ist das Format gegen das JUnit-Schema des Jenkins-xUnit-Plugins (junit-10.xsd).
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="wm-audit" tests="109" failures="7" errors="0">
<testsuite name="Export" tests="1" failures="0" errors="0" skipped="1">
<properties>
<property name="werkzeug" value="wm-audit 1.0.0"/>
<property name="quelle" value="gateway-export.zip"/>
<property name="sha256" value="2144f9b1…"/>
<property name="fail_on" value="high"/>
<property name="apis_gelesen" value="10"/>
…
</properties>
<testcase classname="wm-audit.export" name="…/PolicyAction.c2-verwaist">
<skipped message="nicht_zugeordnet"/>
</testcase>
</testsuite>
<testsuite name="API: AnonymAPI 1.0" tests="10" failures="1" errors="0" skipped="0">
<testcase classname="wm-audit.AnonymAPI 1_0" name="gw.no_identify_policy"/>
<testcase classname="wm-audit.AnonymAPI 1_0" name="gw.anonymous_allowed">
<failure type="critical" message="Identify-Policy erlaubt anonymen Zugriff">[CRITICAL, belegt] …
Empfehlung: allowAnonymous auf false setzen.
Fundstelle: fehler/assets/API/API.b2/API.b2 → Identify & Authorize | allowAnonymous: true</failure>
</testcase>
<testcase classname="wm-audit.AnonymAPI 1_0" name="gw.application_identity_only">
<system-out>Unterhalb der Schwelle --fail-on high: …</system-out>
</testcase>
…
</testsuite>
<testsuite name="Statisch nicht prüfbar" tests="8" failures="0" errors="0" skipped="8">
<testcase classname="wm-audit.laufzeit" name="key_verification">
<skipped message="Wird ein erfundener API-Key tatsächlich abgewiesen? …"/>
</testcase>
…
</testsuite>
</testsuites>Jenkins
Der erste Aufruf schreibt den HTML-Bericht und endet ohne --fail-on mit 0. Der zweite schlägt bei einem belegten Befund ab „high“ fehl; post { always } veröffentlicht den Testbericht und den HTML-Bericht trotzdem. Auf Windows-Agents bat statt sh und wm-audit.exe verwenden.
pipeline {
agent any
stages {
stage('Gateway-Audit') {
steps {
sh 'wm-audit gateway-export.zip --html -o wm-audit-bericht.html'
sh 'wm-audit gateway-export.zip --junit -o wm-audit-junit.xml --fail-on high'
}
post {
always {
junit 'wm-audit-junit.xml'
archiveArtifacts artifacts: 'wm-audit-bericht.html'
}
}
}
}
}GitLab CI
wm-audit:
stage: test
script:
- wm-audit gateway-export.zip --html -o wm-audit-bericht.html
- wm-audit gateway-export.zip --junit -o wm-audit-junit.xml --fail-on high
artifacts:
when: always
paths:
- wm-audit-bericht.html
reports:
junit: wm-audit-junit.xmlAzure DevOps
steps:
- script: wm-audit gateway-export.zip --junit -o wm-audit-junit.xml --fail-on high
displayName: wm-audit
- task: PublishTestResults@2
condition: always()
inputs:
testResultsFormat: JUnit
testResultsFiles: wm-audit-junit.xmlDen Export liefert ein vorheriger Schritt, etwa ein Export aus der Testumgebung, den Sie im Repository oder als Artefakt ablegen. wm-audit selbst braucht keinen Zugriff auf das Gateway.
Berichtsformate
Text (Standard)
Kopfzeile mit Version, Name der Quelle und Art (zip oder verzeichnis), bei ZIP der SHA-256, dann die Zahl der gelesenen APIs, übersprungenen Dateien und nicht geöffneten gesperrten Einträge. Es folgen die Befunde (Schwere, Einstufung, Regel-ID, betroffene API, Titel), die Lastgrenzen je API, die übersprungenen Dateien mit Grund und die statisch nicht prüfbaren Fragen.
HTML
Eine einzelne Datei, die im Browser offline funktioniert: Eine Content-Security-Policy (default-src 'none') verbietet jede Verbindung, Werte aus dem Export werden nur als Text eingesetzt. Abschnitte: Ihre Aufgaben (sofort beheben, prüfen und entscheiden), Befunde mit Schritt-für-Schritt-Anleitung im API Gateway, Erfolgstest und Link zur IBM-Dokumentation, Lastgrenzen und Lastrechner, gelesene APIs, übersprungene Dateien, statisch nicht Prüfbares. Die Rohdaten stehen als JSON in der Datei.
JSON (wm-audit-bericht/1)
Schlüssel sortiert, zwei Leerzeichen Einzug, UTF-8 ohne ASCII-Escapes. Die wichtigsten Felder:
| Feld | Inhalt |
|---|---|
format | „wm-audit-bericht/1“ |
werkzeug | „wm-audit 1.0.0“ |
quelle | name (nur der Dateiname, kein Pfad), art (zip oder verzeichnis), sha256 (bei ZIP, sonst null) |
zusammenfassung | apis_gelesen, apis_eindeutig, befunde, belegt, schwere (Anzahl je critical … info), uebersprungen, gesperrt |
apis[] | label, name, version, id, pfad, policies (zugeordnete Policy-Typen), lastgrenzen[] mit aktion, limit, intervall, einheit, consumer, meldung |
befunde[] | id (stabil), check_id, title, severity, confidence (belegt oder wahrscheinlich), bewertet, owasp, subject, reason, remediation, evidence[] mit pointer, excerpt, note; bei zusammengefassten Befunden aggregate_count und affected[] |
laufzeit_luecken[] | key, title, owasp, why – die statisch nicht prüfbaren Fragen |
uebersprungen[] | pfad, grund |
Gründe für übersprungene Dateien
Jede Datei, die wie ein Asset aussieht und nicht ausgewertet wurde, steht mit einem dieser Gründe im Bericht:
| Grund | Bedeutung |
|---|---|
nicht_zugeordnet | Policy-Aktion ist keiner Stage zugeordnet und greift im Gateway nicht. |
ohne_api | Policy-Aktion ohne zugehörige API. |
ohne_apiname | API-Datei ohne apiName. |
kein_json | Kein gültiges JSON (strikt: kein NaN, keine Kommentare, kein Nachlauf). |
kein_objekt | JSON ist kein Objekt. |
kein_utf8 | Kein gültiges UTF-8. |
zu_gross | Größer als 32 MiB. |
zu_tief | JSON tiefer verschachtelt als 100 Ebenen. |
lesefehler | ZIP-Eintrag verschlüsselt, mit fremder Kompression oder falscher Prüfsumme. |
symlink | Symbolischer Link; wird nicht verfolgt. |
Prüfregeln
Belegt heißt: direkt aus der Konfiguration abgelesen; nur belegte Befunde lösen --fail-on aus. Hinweis heißt: starkes Anzeichen, das sich statisch nicht abschließend entscheiden lässt.
Identify & Authorize (evaluatePolicy) mit allowAnonymous = true. Die Policy ist vorhanden und lässt trotzdem Anfragen ohne Identifikation durch.
Der API ist keine Identify-&-Authorize-Policy zugeordnet.
Mindestens zwei Identifikationsregeln, verknüpft mit logicalConnector = OR. Es genügt das schwächste Verfahren.
Alle Identifikationstypen weisen nur eine Anwendung aus: apiKey, hostNameAddress, ipAddressRange. Benutzerbezogene Prüfung liegt dann allein im Backend.
Enable HTTP/HTTPS (entryProtocolPolicy) erlaubt http.
Das Ziel der Straight-Through-Routing-Policy beginnt mit http://, Aliase aufgelöst. Ohne jede Routing-Policy zählt der nativeEndpoint; bei anderen Routing-Arten trifft die Regel keine Aussage.
Ein nativeEndpoint mit passSecurityHeaders = true.
Der API ist keine Traffic-Optimization-Policy (throttle) zugeordnet. Eine globale Begrenzung steht nicht im API-Export.
Alle lesbaren Traffic-Optimization-Grenzen der API zählen über einen Tag oder länger. Laut IBM wird das Kontingent erst nach Ablauf des Intervalls wieder aufgefüllt; Spitzen innerhalb des Intervalls bremst es nicht.
Log Invocation ist zugeordnet. Je nach Einstellung landen Nutzdaten in den Logs.
Zusammengefasste Befunde
Trifft eine Regel mehr als die Hälfte der APIs (gezählt nach Name und Version), meldet wm-audit sie einmal als „… (durchgängig)“ mit der Liste der betroffenen APIs. Ein belegter Befund behält dabei seine Schwere; ein Hinweis wird zur Information (info), weil er dann eine Gewohnheit beschreibt.
Was gelesen wird
- ›APIs (
API.<id>) mit Name, Version undnativeEndpoint. - ›Policies (
Policy.<id>) mit ihrer Zuordnung von Stages zu Policy-Aktionen (policyEnforcements). Eine Aktion zählt nur, wenn sie zugeordnet ist; eine verwaiste Datei verdeckt keine Lücke und erscheint als übersprungen. - ›Policy-Aktionen (
PolicyAction.<id>) – gehören zur innersten API im Verzeichnisbaum. - ›Aliase vom Typ simple: Routing-Ziele wie
${Backend}/${sys:resource_path}werden aufgelöst; maßgeblich ist der nächstgelegene Alias-Ordner. - ›Nie geöffnet werden PassmanData, Keystore, Truststore und Kerberos. Sie werden nur gezählt. Steht in einer Adresse ein Passwort, ersetzt der Bericht es durch
***. - ›ZIP-Archive werden im Speicher gelesen, nicht entpackt. Doppelte Eintragsnamen führen zum Abbruch, symbolische Links werden nicht verfolgt.
Lastgrenzen und Lastrechner
Je Traffic-Optimization-Policy (throttle) liest wm-audit die Felder, die IBM in der offiziellen Postman-Collection verwendet: erlaubte Aufrufe (throttleRule mit requestCount und Operator GT), alertInterval, alertIntervalUnit (minutes, hours, days, weeks), consumerIds und alertMessage. Was nicht eindeutig lesbar ist, bleibt leer.
Der Lastrechner im HTML-Bericht spielt ein Lastprofil gegen eine Grenze durch und zeigt, was durchgeht, was mit 429 (Kontingent leer) und was mit 503 (Bulkhead) abgelehnt wird. Er stützt sich nur auf diese IBM-Aussagen:
- ›Token-Bucket-Verfahren: Ist das Kontingent leer, wird abgelehnt; nach Ablauf des Intervalls ist es wieder voll – Rate limit your APIs ↗
- ›Abgelehnt wird mit Status 429 und der Alert Message als Grund – Testing the API Rate Limit ↗
- ›Gezählt wird erst nach der Antwort des Backends; bei gleichzeitigen Aufrufen kann das Limit kurz überschritten werden – Traffic Optimization ↗
- ›Der Bulkhead begrenzt gleichzeitige Aufrufe je Gateway-Instanz und antwortet darüber mit 503 – Bulkhead ↗
Was nicht im Export steht – Zahl der Gateway-Knoten, Bulkhead-Wert, Antwortzeit des Backends, ob das Kontingent gemeinsam oder je Anwendung gilt – fragt der Rechner als Annahme ab. Die Überschreitung durch die späte Zählung schätzt er als Aufrufe pro Sekunde × Antwortzeit; das ist eine abgeleitete Größenordnung, keine Messung.
Was nicht geprüft wird
Diese Fragen beantwortet kein Export. Der Bericht nennt sie, bewertet sie aber nie:
- ?Wird ein erfundener API-Key tatsächlich abgewiesen?
- ?Wird die JWT-Signatur wirklich geprüft?
- ?Erreicht ein Aufrufer fremde Objekte (BOLA)?
- ?Wird die Rollenprüfung durchgesetzt?
- ?Lässt sich ein Trust-Header fälschen?
- ?Greift eine globale Threat-Protection?
- ?Werden Security-Header in Antworten gesetzt?
- ?Wie verhält sich CORS tatsächlich?
Bekannte Grenzen: Global Policies, Plans und Quotas sowie die Denial-of-Service-Regeln der Threat Protection stehen nicht im API-Export und werden nicht ausgewertet. Policies auf Teilbereichen einer API (Scopes) werden nicht unterschieden. Klartext-Routing wird für Straight-Through-Routing bewertet. Die Einheiten „Calendar Week“ und „Calendar Month“ der Traffic Optimization sind im Export nicht belegt und erscheinen unverändert. Getestet mit konstruierten Exporten und öffentlichen Software-AG-Beispielen im Format 10.x.
Die Laufzeitfragen beantwortet sectestx mit Tests gegen Ihre Testumgebung.
Sicherheit und Freigabe
- ›Geschrieben in Rust, ohne unsafe-Code; Abbrüche über unwrap, expect und panic sind per Prüfregel ausgeschlossen.
- ›Keine Netzwerk- oder TLS-Bibliotheken – per Bann-Liste in der Lieferkettenprüfung ausgeschlossen.
- ›Nur Abhängigkeiten von crates.io unter MIT, Apache-2.0 oder Zlib; Stückliste (SBOM) als CycloneDX.
- ›Reproduzierbarer Build ohne lokale Pfade im Programm.
- ›Byte-gleiche Ergebnisse mit der Referenzimplementierung: 15 Golden-Fälle in allen vier Formaten und 10.000 zufällig erzeugte Exporte.
Das Lieferpaket enthält das Sicherheitsdatenblatt (SICHERHEIT.md, zu jeder Zusage der belegende Test), die SBOM, den Quelltext und pruefen.sh, das alle Prüfungen in einem Lauf wiederholt. Die Programme sind noch nicht mit einem Hersteller-Zertifikat signiert.
Versionen
| Version | Datum | Änderungen |
|---|---|---|
1.0.0 | 12.10.2026 | JUnit-XML (--junit) für CI-Systeme; Datenblatt und Dokumentation. |
0.3.0 | 09.10.2026 | Lastgrenzen je API im Bericht, Lastrechner im HTML-Bericht, neue Regel gw.throttle_long_window. |
0.2.0 | 09.10.2026 | HTML-Bericht mit Aufgabenliste und Anleitungen nach IBM-Dokumentation; Programme für Windows, macOS und Linux. |