Pass 14: Malware-Prüfung (MALWARE)
| Eigenschaft | Wert |
|---|---|
| Pass-Nummer | 14 |
Schlüssel (--passes) | malware (Kurzform mal in --passes und Lens-Profilen) |
| Signal-Präfix | MAL |
| Typ | Deterministisch, mit externen Kommandozeilen-Scannern |
| Standard | Optional (Opt-in): nicht in der Standardliste von --passes |
| Assessment-Typen | application; service, wenn Binärdateien bereitgestellt sind und der Pass angefordert wird |
| Tier | Alle Tiers (keine Lizenzsperre) |
| Quelle | packages/@swao/module-app-assessment/src/passes/pass-14-malware.ts |
Wofür dieser Pass gedacht ist
Pass 14 beantwortet die Frage: „Enthalten der Code oder die gelieferte Software bekannte Schadsoftware, fest eingetragene Secrets, verwundbare Abhängigkeiten oder problematische Lizenzen?“
Er führt etablierte Open-Source-Scanner über den Quellcode der Anwendung aus (bei einem Service-Assessment über die bereitgestellten Binärdateien) und übersetzt ihre Befunde in SWAO-Signale. Saubere Ergebnisse werden als positive Signale erfasst, damit der Bericht zeigen kann, dass eine Prüfung lief und nichts gefunden hat.
Was Sie bereitstellen müssen
| Eingabe | Hinweise |
|---|---|
Die Scanner in Ihrem PATH | Gitleaks, OSV-Scanner, ClamAV und YARA sind standardmäßig aktiviert; ORT ist standardmäßig aus. Fehlende Werkzeuge werden übersprungen. |
| Eine Lockfile im Wurzelverzeichnis des Quellpfads (für OSV-Scanner) | package-lock.json, yarn.lock, pnpm-lock.yaml oder pnpm-lock.yml |
| YARA-Regeln (für YARA) | Dateien .yar oder .yara in apps/<app>/wsp/inputs/yara-rules/ (nicht rekursiv) oder in einem in .swao.yml festgelegten Ordner |
| ORT-Regelskript (optional, für MAL-12) | apps/<app>/wsp/inputs/ort-rules.kts oder eine in .swao.yml festgelegte Datei |
Mit swao health-check sehen Sie, welche der Werkzeuge gitleaks, osv-scanner, clamav (geprüft über clamscan) und yara installiert sind. ORT ist nicht Teil dieser Prüfung. Installationsbefehle für jedes Werkzeug stehen auf der Seite Malware-Prüfung.
So funktioniert der Pass
Der Pass führt jedes aktivierte Werkzeug nacheinander aus. Die Werkzeuge sind voneinander unabhängig: Ein fehlendes oder fehlschlagendes Werkzeug hält die anderen nicht auf.
- Gitleaks läuft als
gitleaks detect --source <source> --no-gitmit JSON-Bericht (Timeout 60 s). Optional kann eine eigene Konfigurationsdatei angegeben werden. - OSV-Scanner läuft als
osv-scanner --lockfile <file> --format jsongegen die erste unterstützte Lockfile im Wurzelverzeichnis des Quellpfads (Timeout 60 s). - ClamAV versucht zuerst den Daemon-Client
clamdscan; fehlt dieser oder läuft der Daemon nicht, wird aufclamscan -rzurückgegriffen (Timeout 120 s). - YARA läuft als
yara -r <rule file> <source>einmal je Regeldatei (Timeout 60 s je Datei). - ORT (nur wenn aktiviert) führt
ort analyzeauf dem Quellcode aus (Timeout 180 s). Ist ein Regelskript vorhanden, folgtort evaluate(Timeout 60 s). - Temporäre Berichtsdateien werden im temporären Systemordner abgelegt und danach gelöscht.
Wie gemessen wird
| Signal | Werkzeug | Befund | Schweregrad bei Befund | Bei sauberem Lauf |
|---|---|---|---|---|
MAL-00 | - | Alle aktivierten Werkzeuge fehlen, es konnte nichts geprüft werden | high (Ergebnis negative) | - |
MAL-01 | ClamAV | Treffer von Antivirus-Signaturen (Datei und Signaturname) | critical | positive |
MAL-02 | YARA | Regeltreffer (Regelname und Datei) | high | positive |
MAL-03 | Gitleaks | Gefundene Secrets (Regel, Datei und Zeile) | high | positive |
MAL-09 | OSV-Scanner | Bekannte Schwachstellen je Paket und Version | high | positive |
MAL-10 | ORT analyze | Abhängigkeiten mit Copyleft- oder reziproker Lizenz. Deklarierte Lizenzen, die controls/licence-risk-catalogue.yaml führt, werden nach Lizenzklasse eingeordnet (Netzwerk-, starkes und schwaches Copyleft zählen; das umfasst SSPL-1.0, EPL, CDDL, OSL-3.0 und CeCILL, und MIT OR GPL-2.0-only wird zu MIT aufgelöst); nicht geführte Lizenzen fallen auf SPDX-IDs zurück, die mit GPL, AGPL, LGPL, EUPL, OSL, CeCILL, MPL, CDDL oder EPL beginnen | high; die Herleitung nennt Netzwerk-Copyleft, wenn eine Lizenz der Katalogstufe critical (AGPL, OSL-3.0) vorkommt | positive |
MAL-11 | ORT analyze | Abhängigkeiten ohne deklarierte Lizenz | high (Konfidenz medium) | positive |
MAL-12 | ORT evaluate | Verstöße gegen Richtlinienregeln aus Ihrem Regelskript | high | positive |
MAL-13 | ORT analyze | Abhängigkeiten, deren Lizenz die Nutzung einschränkt statt Copyleft aufzuerlegen: Source-available-Lizenzen (BUSL-1.1, Elastic-2.0) und Creative-Commons-Bedingungen „nicht kommerziell“ oder „keine Bearbeitung“ | medium, wenn eine Source-available-Lizenz vorkommt, sonst low | positive (nur wenn der Katalog geladen wurde) |
Die IDs MAL-04 bis MAL-08 werden nicht verwendet. Alle Befunde werden zusammengefasst: ein Signal je Werkzeug, jeder Befund als Nachweis aufgeführt.
Lizenzeinstufung (#3160). MAL-10 und MAL-13 lesen controls/licence-risk-catalogue.yaml (38 SPDX-Kennungen, jeweils mit Risikostufe: critical, high, medium, low oder clear, und einer Lizenzklasse, die zwischen MAL-10 und MAL-13 entscheidet). Ein SPDX-Ausdruck wird Term für Term ausgewertet: Bei OR zählt die risikoärmste Alternative, bei AND der riskanteste Term, WITH <Ausnahme> wird ignoriert, und veraltete Formen (GPL-2.0, GPL-2.0+) werden auf -only und -or-later abgebildet. Fehlt der Katalog oder ist er ungültig, nutzt MAL-10 nur die SPDX-Präfixliste, MAL-13 entfällt, und assessment.licence_risk_catalogue hält den Grund fest.
Exit-Codes werden je Werkzeug ausgewertet: Bei Gitleaks, OSV-Scanner und ClamAV bedeutet Exit 0 sauber und Exit 1 Befunde; höhere Codes werden als Werkzeugfehler in assessment.errors festgehalten. Meldet OSV-Scanner Befunde, ist sein JSON aber nicht auswertbar, gibt SWAO trotzdem ein MAL-09 mit high und der Rohausgabe als Nachweis aus (Konfidenz medium).
Der Pass-Status ist complete, wenn mindestens ein Werkzeug lief, und not_applicable, wenn keines lief. assessment.malware_scan_status ist complete, skipped_tools_missing oder skipped_all_disabled.
Mit --malware-fail-on-detection beendet sich swao assess mit Exit-Code 5, wenn ein Befund MAL-01 oder MAL-03 vorliegt (keine positive Entwarnung).
Module, Werkzeuge und externe Dienste von Drittanbietern
| Werkzeug | Zweck | Lizenz | Gebündelt oder optional | Verhalten bei Fehlen |
|---|---|---|---|---|
| Gitleaks | Erkennung von Secrets | MIT | Optional, selbst zu installieren | Übersprungen mit Installationshinweis |
| OSV-Scanner | Schwachstellen in Lockfile-Abhängigkeiten (fragt die Datenbank OSV.dev ab) | Apache-2.0 | Optional | Übersprungen; auch übersprungen, wenn keine Lockfile gefunden wird |
ClamAV (clamdscan / clamscan) | Antivirus-Signaturen | GPL-2.0 | Optional | Übersprungen |
| YARA | Eigene Musterregeln | BSD-3-Clause | Optional | Übersprungen; auch übersprungen, wenn keine Regeldateien existieren |
| OSS Review Toolkit (ORT) | Lizenzanalyse und Richtlinienbewertung (benötigt eine Java-Laufzeit) | Apache-2.0 | Optional, standardmäßig deaktiviert | Übersprungen |
Die genannten Lizenzen sind die von den Upstream-Projekten veröffentlichten; SWAO ruft die Werkzeuge nur auf und liefert sie nicht mit. OSV-Scanner und die Signatur-Aktualisierungen von ClamAV benötigen je nach eigener Konfiguration Netzwerkzugriff; SWAO selbst führt in diesem Pass keine Netzwerkaufrufe aus.
Ausgaben
| Datei | Inhalt |
|---|---|
apps/<app>/wsp/runs/<ts>/passes/14-malware.yaml | Pass-Kopf, Signale MAL-NN und assessment mit tools_attempted, tools_skipped, malware_scan_status, missing_tools, errors und, wenn ORT lief, licence_risk_catalogue (loaded oder skipped: <Grund>) |
Konfiguration und Einschränkungen
Aktivieren Sie den Pass auf der Kommandozeile:
swao assess --app app-crm-01 --passes inv,state,data,ctx,sbom,tf,egr,crypto,synth,comp,blocks,scope,malware
swao assess --app app-crm-01 --passes malware --malware-fail-on-detectionDie Werkzeugeinstellungen stehen in der .swao.yml der App. Pfade sind relativ zum App-Ordner:
passes:
malware:
tools:
gitleaks:
enabled: true
config_file: wsp/inputs/gitleaks.toml # optional
osv_scanner:
enabled: true
clamav:
enabled: true
yara:
enabled: true
rules_dir: wsp/inputs/yara-rules # Standard
ort:
enabled: false # Standard; JVM-Werkzeug, kann Minuten dauern
rules_file: wsp/inputs/ort-rules.kts # StandardBekannte Einschränkungen:
- OSV-Scanner wird nur für Lockfiles von npm, Yarn und pnpm im Wurzelverzeichnis des Quellpfads ausgeführt. Andere Ökosysteme (zum Beispiel Maven oder pip) prüft dieser Pass nicht; für Schwachstellen in Abhängigkeiten siehe Pass 05 SBOM.
MAL-00wird nur ausgelöst, wenn überhaupt kein Werkzeug laufen konnte. Fehlen nur einige Werkzeuge, laufen die übrigen, und die fehlenden erscheinen intools_skippedohne eigenes Warnsignal.- YARA liest Regeldateien nur aus der obersten Ebene des Regelordners.
- Die Timeouts sind fest; sehr große Quellbäume können sie überschreiten, was als Werkzeugfehler festgehalten wird.
- Gitleaks prüft den Arbeitsstand (
--no-git), nicht die Git-Historie.
Siehe auch Malware-Prüfung für Installation und Beispiele.
