Rust Crate cwenum
Weichwerke Heidrich Software hat ihr erstes open source Rust Crate veröffentlicht.
Das erste Weichwerke Heidrich Software open source Rust Crate ist jetzt auf crates.io hochgeladen!
Neben anderen Dingen strebt BOMnipotent an, ein CSAF Pprovider nach dem OASIS Standard zu sein. Das bedeutet insbesondere, dass mehrere Überprüfungen von jedem eingelesenen CSAF Dokument gemacht werden müssen. Eine dieser Überprüfungen betrifft CWEs.
Der Common Weakness Enumeration (CWE) Katalog ist eine Liste an Software und Hardware Schwachstellen, welche von MITRE gepflegt wird. Sie sollte nicht mit dem Common Vulnerability Enumeration (CVE) System verwechselt werden: Eine Schwachstelle (“weakness”) kann verstanden werden als ein Fehlertyp, den ein Programm machen könnte, während eine Sicherheitslücke (“vulnerability”) eine Implementierung bezeichnet, die diesen Fehler tatsächlich macht.
Eine CWE in einem CSAF Dokument enthält eine ID und einen Namen. Die Konsistenzüberprüfung fordert, dass beide zu der gleichen, existierenden Schwachstelle korrespondieren. Wie sollte diese Anforderung umgesetzt werden? Sollte der Code für jede einzelne CWE eine Anfrage an die MITRE Webseite stellen?
Glücklicherweise ist die Gesamtanzahl von ungefähr tausend existierenden CWEs nich unglaublich groß, und der Katalog ändert sich auf einer Zeitskala von Monaten. MITRE selbst empfiehlt, den Katalog lokal zu spiegeln. Das habe ich getan, in Form eines Rust Crates namens “cwenum”.
Kernstück des Crates ist ein großes enum welches alle aktull geführten CWEs enthält. Jede Person, die schon einmal mit Rust gearbeitet hat, weiß, wie viele Möglichkeiten sich bieten, wenn man ein solches Objekt an der Hand hat. Das Crate bietet mehrere feature flags an, welche zusätzliche, optionale Funktionalität generiert, wie String Konvertierungen, (De)Serialisierung, oder einen Iterator um alle Elemente in einer Schleife zu durchlaufen. Das Crate ist unter der sehr freien MIT Lizenz veröffentlicht, was bedeutet dass wenn Sie es nutzen wollen, Sie es lediglich einbinden und sonst nichts tun müssen.
Dieses winzige Crate wandelt den CWE Konsistenzcheck, welcher eine aufwändige Operation mit Netzwerkzugriff hätte sein können, in einen lokalen Zugriff der wenige Nanosekunden benötigt.