Das Unternehmen Cisco hat ein bedeutendes Update des kostenlosen Antivirus-Pakets ClamAV 1.0.0 vorgestellt. Der neue Branch ist bemerkenswert, da er auf die traditionelle Versionsnummerierung „Major.Minor.Patch“ (statt 0.Version.Patch) umschaltet. Der signifikante Versionswechsel ist auch durch die Änderungen an der Bibliothek libclamav bedingt, die aufgrund der Entfernung des Namensraums CLAMAV_PUBLIC, der Änderung von Argumenttypen in der Funktion cl_strerror und der Einbeziehung von Symbolen in den Namensraum für die Programmiersprache Rust eine Verletzung der ABI-Kompatibilität aufweist. Das Projekt ging 2013 in den Besitz von Cisco über, nachdem das Unternehmen Sourcefire, das ClamAV und Snort entwickelte, übernommen wurde. Der Code des Projekts wird unter der GPLv2-Lizenz veröffentlicht.
Der Branch 1.0.0 gehört zur Kategorie der Langzeitunterstützung (LTS), für den eine Betreuung von drei Jahren gewährleistet ist. Die Veröffentlichung von ClamAV 1.0.0 wird die frühere LTS-Version ClamAV 0.103 ablösen, für die bis September 2023 Sicherheitsupdates und kritische Problemlösungen veröffentlicht werden. Updates für reguläre Branches, die nicht in die LTS-Kategorie fallen, werden mindestens vier Monate nach der ersten Veröffentlichung des nächsten Branches bereitgestellt. Die Möglichkeit, die Signaturdatenbank für non-LTS-Branchen herunterzuladen, wird ebenfalls mindestens vier Monate nach der Veröffentlichung des nächsten Branches sichergestellt.
Wesentliche Verbesserungen in ClamAV 1.0:
- Unterstützung für die Entschlüsselung von schreibgeschützten XLS-Dateien auf OLE2-Basis, die standardmäßig mit einem Passwort geschützt sind, hinzugefügt.
- Der Code wurde neu geschrieben, um den all-match-Modus zu implementieren, in dem alle Übereinstimmungen in der Datei identifiziert werden, d.h. der Scan wird nach der ersten Übereinstimmung fortgesetzt. Der neue Code gilt als zuverlässiger und einfacher zu warten. In der neuen Implementierung wurden auch eine Reihe konzeptioneller Mängel behoben, die beim Signatur-Check im all-match-Modus auftraten. Tests zur Überprüfung des korrekten Verhaltens im all-match-Modus wurden hinzugefügt.
- Im API wurde der Callback clcb_file_inspection() hinzugefügt, um Handler zu verbinden, die die Inspektion des Inhalts von Dateien, einschließlich der aus Archiven extrahierten Dateien, durchführen.
- Im API wurde die Funktion cl_cvdunpack() hinzugefügt, um die Archive der Signaturen im CVD-Format zu entpacken.
- Die Skripte zum Erstellen von Docker-Images mit ClamAV wurden in ein separates Repository clamav-docker verschoben. Die Docker-Images umfassen die Header-Dateien für die C-Bibliothek.
- Überprüfungen wurden hinzugefügt, um das Rekursionsniveau beim Extrahieren von Objekten aus PDF-Dokumenten zu begrenzen.
- Das Limit für den bei der Verarbeitung von unsicheren Eingabedaten zugewiesenen Speicher wurde erhöht, und eine Warnmeldung wurde implementiert, die bei Überschreitung dieses Limits ausgegeben wird.
- Der Aufbau der Unit-Tests für die Bibliothek libclamav-Rust wurde erheblich beschleunigt. Die in Rust geschriebenen Module für ClamAV werden nun im gleichen Verzeichnis wie ClamAV kompiliert.
- Die Einschränkungen bei der Überprüfung von Überschneidungen in ZIP-Dateiformaten wurden gelockert, was es ermöglicht hat, falsche Warnmeldungen bei der Verarbeitung leicht modifizierter, aber nicht schadhafter JAR-Archive zu vermeiden.
- Bei der Kompilierung wurden die minimalen und maximalen unterstützten LLVM-Versionen festgelegt. Ein Kompilierungsversuch mit einer zu alten oder zu neuen Version führt nun zu einer Fehlermeldung mit einem Hinweis auf mögliche Komplikationen bei der Kompatibilität.
- Es wurde die Möglichkeit hinzugefügt, mit einer eigenen RPATH-Liste (Liste von Verzeichnissen, aus denen Shared Libraries geladen werden) zu kompilieren, was es erlaubt, ausführbare Dateien nach der Kompilierung an einem anderen Ort in einer Entwicklungsumgebung zu verschieben.
Quelle: opennet.ru
