Skip to content

Pass 14: Malware-Prüfung (MALWARE) ​

EigenschaftWert
Pass-Nummer14
Schlüssel (--passes)malware (Kurzform mal in --passes und Lens-Profilen)
Signal-PräfixMAL
TypDeterministisch, mit externen Kommandozeilen-Scannern
StandardOptional (Opt-in): nicht in der Standardliste von --passes
Assessment-Typenapplication; service, wenn Binärdateien bereitgestellt sind und der Pass angefordert wird
TierAlle Tiers (keine Lizenzsperre)
Quellepackages/@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 ​

EingabeHinweise
Die Scanner in Ihrem PATHGitleaks, 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.

  1. Gitleaks läuft als gitleaks detect --source <source> --no-git mit JSON-Bericht (Timeout 60 s). Optional kann eine eigene Konfigurationsdatei angegeben werden.
  2. OSV-Scanner läuft als osv-scanner --lockfile <file> --format json gegen die erste unterstützte Lockfile im Wurzelverzeichnis des Quellpfads (Timeout 60 s).
  3. ClamAV versucht zuerst den Daemon-Client clamdscan; fehlt dieser oder läuft der Daemon nicht, wird auf clamscan -r zurückgegriffen (Timeout 120 s).
  4. YARA läuft als yara -r <rule file> <source> einmal je Regeldatei (Timeout 60 s je Datei).
  5. ORT (nur wenn aktiviert) führt ort analyze auf dem Quellcode aus (Timeout 180 s). Ist ein Regelskript vorhanden, folgt ort evaluate (Timeout 60 s).
  6. Temporäre Berichtsdateien werden im temporären Systemordner abgelegt und danach gelöscht.

Wie gemessen wird ​

SignalWerkzeugBefundSchweregrad bei BefundBei sauberem Lauf
MAL-00-Alle aktivierten Werkzeuge fehlen, es konnte nichts geprüft werdenhigh (Ergebnis negative)-
MAL-01ClamAVTreffer von Antivirus-Signaturen (Datei und Signaturname)criticalpositive
MAL-02YARARegeltreffer (Regelname und Datei)highpositive
MAL-03GitleaksGefundene Secrets (Regel, Datei und Zeile)highpositive
MAL-09OSV-ScannerBekannte Schwachstellen je Paket und Versionhighpositive
MAL-10ORT analyzeAbhä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 beginnenhigh; die Herleitung nennt Netzwerk-Copyleft, wenn eine Lizenz der Katalogstufe critical (AGPL, OSL-3.0) vorkommtpositive
MAL-11ORT analyzeAbhängigkeiten ohne deklarierte Lizenzhigh (Konfidenz medium)positive
MAL-12ORT evaluateVerstöße gegen Richtlinienregeln aus Ihrem Regelskripthighpositive
MAL-13ORT analyzeAbhä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 lowpositive (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 ​

WerkzeugZweckLizenzGebündelt oder optionalVerhalten bei Fehlen
GitleaksErkennung von SecretsMITOptional, selbst zu installierenÜbersprungen mit Installationshinweis
OSV-ScannerSchwachstellen in Lockfile-Abhängigkeiten (fragt die Datenbank OSV.dev ab)Apache-2.0OptionalÜbersprungen; auch übersprungen, wenn keine Lockfile gefunden wird
ClamAV (clamdscan / clamscan)Antivirus-SignaturenGPL-2.0OptionalÜbersprungen
YARAEigene MusterregelnBSD-3-ClauseOptionalÜbersprungen; auch übersprungen, wenn keine Regeldateien existieren
OSS Review Toolkit (ORT)Lizenzanalyse und Richtlinienbewertung (benötigt eine Java-Laufzeit)Apache-2.0Optional, 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 ​

DateiInhalt
apps/<app>/wsp/runs/<ts>/passes/14-malware.yamlPass-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:

bash
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-detection

Die Werkzeugeinstellungen stehen in der .swao.yml der App. Pfade sind relativ zum App-Ordner:

yaml
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    # Standard

Bekannte 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-00 wird nur ausgelöst, wenn überhaupt kein Werkzeug laufen konnte. Fehlen nur einige Werkzeuge, laufen die übrigen, und die fehlenden erscheinen in tools_skipped ohne 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.