
Überprüft Ihre Dateien auf das Vorhandensein von Unicode-BIDI-Zeichen, die für Supply-Chain-Angriffe missbraucht werden können. Siehe CVE-2021-42574.
Dieses Tool überprüft Ihre Dateien auf das Vorhandensein von Unicode-BIDI-Zeichen, die für Supply-Chain-Angriffe missbraucht werden können, um CVE-2021-42574 zu entschärfen. Dieses Tool wurde in Rust geschrieben und wird als kleiner (< 3 MB) Docker-kompatibler Container verteilt, um eine schnelle und einfache Nutzung zu ermöglichen.
Eine Erklärung des Angriffs finden Sie im GitHub-Blogeintrag oder im Originalpapier, in dem der Angriff veröffentlicht wurde.
Dieses Paket ist hauptsächlich für die Verwendung über seinen Docker-Container gedacht. Aber eine lokale Installation ist natürlich auch möglich.
Die Kompilierung erfordert mindestens Rust 1.56.0, da es die Rust 2021 Edition verwendet.
Klonen Sie dieses Repository und führen Sie cargo install --path . aus, um die Binärdatei für Ihren aktuellen Benutzer zu installieren. Danach können Sie den Befehl bidi_detector aufrufen.
Das Tool über seinen offiziellen Docker-Container auszuführen, ist wahrscheinlich der einfachste Weg, um zu beginnen. Um es über Docker auszuführen, sollte der folgende Befehl funktionieren, um alle Dateien in Ihrem aktuellen Arbeitsverzeichnis zu scannen:
docker run --rm -it -v $(pwd):/data ghcr.io/maweil/bidi_char_detector:latest
Abhängig von Ihrem System müssen Sie diesen Befehl möglicherweise leicht anpassen. Wenn Sie z.B. Podman verwenden und SELinux aktiviert haben, versuchen Sie stattdessen den folgenden Befehl:
podman run --rm -it -v $(pwd):/data:Z ghcr.io/maweil/bidi_char_detector:latest
Standardmäßig werden alle Dateien überprüft. Wenn sich Binärdateien im aktuellen Verzeichnis befinden, schlägt der Befehl fehl, da er eine nicht UTF-8-kodierte Datei nicht dekodieren kann.
Um den Befehl an Ihre Bedürfnisse anzupassen, legen Sie eine Datei namens bidi_config.toml im Stammverzeichnis Ihres Projekts ab.
Ein Beispiel dafür finden Sie in diesem Repository, siehe unten ein Beispiel. Die Optionen werden unterhalb des Beispiels detaillierter beschrieben:
[general]
includes = [
"src/**/*",
"**/*.patch",
"**/*.json",
"**/Dockerfile",
"test/*.js"
]
excludes = [
".git/*",
"target/*"
]
[display]
show_details = true
Dieser Abschnitt enthält zwei Arrays (includes und excludes), in denen Sie Muster von Dateien angeben können, die gescannt werden sollen (oder vom Scan ausgeschlossen werden sollen).
Stellen Sie bitte sicher, dass Ihre Muster tatsächlich die Dateien im Verzeichnis und nicht den Verzeichnisnamen selbst abgleichen, da Ihre Dateien sonst nicht gescannt werden.
Wenn Sie alle Dateien scannen und nur z.B. Ihr .git-Verzeichnis ausschließen möchten, würde die folgende Konfiguration den Zweck erfüllen:
[general]
includes = [
"**/*"
]
excludes = [
".git/*",
]
[display]
show_details = true
Wenn Sie stattdessen explizit definieren möchten, welcher Ordner Ihre Quelldateien enthält, würde das folgende Konfigurationsbeispiel alle Dateien im src-Verzeichnis scannen (ohne etwas zu ignorieren):
[general]
includes = [
"src/**/*"
]
excludes = [
]
[display]
show_details = true
Die folgenden Einstellungen sind in diesem Abschnitt verfügbar:
Beispiel: show_details = true, verbose = true
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:4:3
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:7
Found character PDI (Pop Directional Isolate), test/example-commenting-out.js:4:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:4:22
Found character RLO (Right-to-Left Override), test/example-commenting-out.js:6:20
Found character LRI (Left-to-Right Isolate), test/example-commenting-out.js:6:24
Found 6 potentially dangerous Unicode BIDI characters!
Beispiel: show_details = false, verbose = true
src/lib.rs - 0 BIDI characters
src/main.rs - 0 BIDI characters
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!
Beispiel: show_details = false, verbose = false
test/example-commenting-out.js - 6 BIDI characters
Found 6 potentially dangerous Unicode BIDI characters!
Alle Anerkennung für die Entdeckung des Angriffs, einschließlich der Liste der relevanten BIDI-Zeichen, gebührt den ursprünglichen Autoren des entsprechenden Papiers. Bitte zitieren Sie ihr Originalpapier, wenn Sie auf ihrer Arbeit aufbauen.
Die Datei test/example-commenting-out.js in diesem Repository ist eine Kopie von commenting-out.js in ihrem ursprünglichen Repository. Ihre Lizenzierung folgt dem ursprünglichen Repository (MIT-Lizenz)
Sie wird hier nur zu Testzwecken verwendet.
@article{boucher_trojansource_2021,
title = {Trojan {Source}: {Invisible} {Vulnerabilities}},
author = {Nicholas Boucher and Ross Anderson},
year = {2021},
journal = {Preprint},
eprint = {2111.00169},
archivePrefix = {arXiv},
primaryClass = {cs.CR},
url = {https://arxiv.org/abs/2111.00169}
}
| Setting | Description | Optional | Default | Introduced in |
|---|
show_details | Entscheidet, ob Zeile/Position und Typ des erkannten BIDI-Zeichens ausgegeben werden sollen (siehe Beispiele unten) | No | - | v0.1.1 |
ignore_invalid_data | Gibt an, ob eine Fehlermeldung ausgegeben werden soll, wenn binäre/nicht-UTF8-Dateien erkannt werden | Yes | true | v0.1.2 |
verbose | Gibt an, ob der Dateiname auch dann ausgegeben werden soll, wenn keine verdächtigen Zeichen gefunden wurden | Yes | true | v0.1.2 |