Virenwächter für Unix Dazuko – ein Open-Source-Projekt zur Dateizugriffskontrolle

Ordnungsmerkmale

erschienen in: <kes> 2004#2, Seite 93

Rubrik: Systeme und ihr Umfeld

Schlagwort: Viren-Abwehr

Schlagwort: Dateizugriffskontrolle

Zusammenfassung: Effizienter Virenschutz muss bereits auf Dateizugriffsebene ansetzen. Das Open-Source-Projekt Dazuko (Datei-Zugriffs-Kontrolle) hat sich die Aufgabe gestellt, ein plattformunabhängiges Standardschnittstellen-Modul zur Dateizugriffssteuerung zu entwickeln, das zugleich jedermann zugänglich ist.

Autor: Von John Ogness und Detlef Langrock, Tettnang

Im Kampf gegen Malware ist der Schutz auf Dateizugriffsebene der einzige Erfolg versprechende Weg. Die Fähigkeit, Computerviren aufzuspüren, bevor sie Gelegenheit haben, das Betriebssystem anzugreifen, stellt einen wirksamen und verlässlichen Echtzeitschutz dar. Allerdings bedeutet die Implementierung auf Dateizugriffsebene einen tiefen Systemeingriff, denn das Betriebssystem muss einem Anti-Viren-Scanner gestatten, noch vor ihm selbst auf Dateien zuzugreifen.

Dies ist umso schwieriger, weil sich die Architekturen der Betriebssysteme in vielfältiger Weise unterscheiden und es differenzierte Varianten beispielsweise bei Benutzerfreigaben gibt. Die Entwicklung eines Scanners auf Dateizugriffsebene ist eine Aufgabe, die die einzelnen Hersteller von Anti-Viren-Software individuell auf ihre Weise zu lösen versuchen – jeder nach seinem Gusto. Die Rollenverteilung bei Zuverlässigkeit und Wirkungsweise fällt dabei oft ganz unterschiedlich aus. Indes kann keiner der Beteiligten auf den enormen Aufwand verzichten, den es erfordert, um sicherzustellen, dass die Module mit den jeweiligen Komponenten reibungslos zusammenarbeiten, ohne das gesamte System zu gefährden.

Was allerdings auf der Strecke bleibt, ist die übergreifende Kompatibilität. Hat sich ein Anwender für eine bestimmte Lösung entschieden, bleibt ihm kaum noch die Möglichkeit offen, auch Produkt-Pakete anderer Anti-Viren-Softwarehersteller einzubinden, weil keine problemlose Koexistenz möglich ist. Umso lauter ertönt der Ruf nach einer Standardschnittstelle im Betriebssystem selbst. Die Anti-Viren-Softwarehersteller könnten sich statt auf die Systemkompatibilität auf die Leistung ihrer Scan-Engine konzentrieren, und der Anwender würde nicht mehr mit einer Auswahl bestimmter Paketen belastet, die eher auf Systemunterstützung als auf Virenprüfung abzielt.

Dazuko – kurz für: Dateizugriffskontrolle – ist die Bezeichnung für ein Open-Source-Projekt, das sich zum Ziel gestellt hat, den Frustrationen der Entwickler und Anwender ein Ende zu bereiten [2]. Es versteht sich als standardisierte Schnittstelle, die Anti-Viren-Software oder anderen Anwendungen den prüfenden Dateizugriff gestattet – und zwar bei unterschiedlichen Betriebssystemen. Dazuko kann als Plug-in zu Betriebssystemen betrachtet werden und stellt ein Interface für On-Access-Virenscanner dar.

Dazuko wurde unter die BSD-Lizenz gestellt, was bedeutet, dass jedermann die Möglichkeit hat, das Quellprogramm uneingeschränkt zu verwenden und abzuändern, solange er das Copyright und die Lizenzbedingungen nennt [3]. Änderungen am Code müssen dem Projekt nicht zugänglich gemacht werden. Auch die Integration in bestehende Software unterliegt keinerlei Beschränkungen oder bestimmten Anforderungen an diese Software. Die Lizenz ist flexibel genug, dass sowohl Closed- als auch Open-Source-Projekte Dazuko sicher in ihren Code integrieren können. Diese Offenheit des Projekts trägt dazu bei, eine positive und kooperative Entwicklung von Dazuko zu fördern.

Funktionsweise

Um die für den Zugriff auf Dateien zuständigen System Calls steuern zu können, ist Dazuko direkt in den Betriebssystem-Kernel eingebunden. Zuerst muss sich die Applikation – als Beispiel AntiVir – bei Dazuko anmelden. Diese Registrierung ist die Voraussetzung für eine reibungslose Kommunikation mit Dazuko und gewährleistet, dass die Applikation den Dateizugriff kontrollieren kann (wichtig: die registrierte Applikation läuft im "Userspace" und nicht als Kernelprozess).

Sobald ein Dateizugriff erfolgt (ein User öffnet beispielsweise ein Dokument), unterbricht Dazuko diesen Vorgang und reicht die Datei an die registrierte Applikation weiter. Dabei stellt es Informationen über die Eigenschaften (wie Dateiname, Zugriffsart, Dateiattribute usw.) zur Verfügung. Anhand dieser Informationen entscheidet die Applikation, ob sie den Zugriff auf diese Datei zulässt oder verweigert. Im Falle von AntiVir für Linux-Server wird die Datei gescannt und nur dann freigegeben, wenn sie virenfrei ist.

Während die Applikation überprüft, ob der Zugang erlaubt werden soll, wartet Dazuko. In Abhängigkeit vom Ergebnis lässt die Schnittstelle das Betriebssystem entweder mit der Dateibearbeitung fortfahren oder unterbricht diesen Prozess, ein Dateizugriff ist dann nicht mehr möglich. Durch die Integration in das Betriebssystem arbeitet Dazuko transparent, also von Anwender und Anwendungsprogrammen unbemerkt im Hintergrund. Wird ein Dateizugriff verweigert, erhält der Anwender eine Fehlermeldung direkt vom Betriebssystem. Das ist wichtig, weil bereits vorhandene Programme nicht extra angepasst werden müssen. Beispiel: Ein Windows-Anwender versucht mit Word eine virenverseuchte Datei auf einem Linux-Server zu öffnen – Word muss von Dazuko nichts "wissen" und benötigt kein Plug-in.

Natürlich unterstützt Dazuko auch Multithreaded-Betriebssysteme und ist in der Lage, mehrere Threads oder Prozesse der gleichen Applikation parallel zu verarbeiten. Hierbei übergibt es den Dateizugriff an den ersten erreichbaren Prozess einer Gruppe – zusammenarbeitende Prozesse sind unter dem gleichen Gruppennamen registriert. Das Resultat ist ein On-Access-Scanner, der die Vorteile eines Multiprocess-Betriebssystems nutzt und dabei den Verzögerungseffekt umgeht, der mit dem sequenziellen Bearbeiten – in unserem Fall: Scannen – einer Datei verbunden ist.

Dazuko unterstützt auch das so genannte Cascading, eine Eigenschaft, um unterschiedliche Anwendungen gleichzeitig laufen zu lassen, beispielsweise zwei Virenscanner. Vergleichbar ist dies mit der Multiprozessunterstützung, allerdings wird der Vorgang hier nicht verteilt, sondern die Applikationen arbeiten den Vorgang nacheinander ab. Die Anwendungen unterscheiden sich dabei durch ihre unterschiedlichen Gruppennamen: Bei einem Dateizugriff haben Prozesse jeder Gruppe die Möglichkeit, den Zugriff zuzulassen oder abzulehnen. Wenn einer der Prozesse entscheidet, dass der Zugriff verweigert werden soll, dann unterbindet ihn Dazuko. Jedoch wird der Zugriff erst dann endgültig verhindert, wenn jeder Prozess seine Aufgabe abgeschlossen hat (vgl. Abb. 1).

[Illustration]
Abbildung 1: Multithreading und Cascading mit Dazuko: Mehrere Prozesse, die unter dem gleichen Gruppennamen registriert sind, können die Virensuche unter sich aufteilen – Dazuko übergibt einen Dateizugriff an den ersten erreichbaren Prozess der Gruppe. Auch verschiedene Applikationen, im Bild zwei mit je drei Prozessen, können gleichzeitig mit der Schnittstelle arbeiten: Der AntiVir-Prozess benutzt einen anderen Gruppennamen als der avast!-Prozess. Dazuko übergibt einen Dateizugriff an den ersten verfügbaren Prozess der AntiVir-Gruppe und anschließend den gleichen Dateizugriff an den ersten verfügbaren Prozess der avast!-Gruppe.

Das Dazuko-Interface ist einfach und überschaubar aufgebaut. Es umfasst Funktionen zur (De-)Registrierung und zum Setzen von Parametern. Außerdem ermöglicht es eine Status-Abfrage für Dateizugriffe. Für welches Betriebssystem oder in welcher Programmiersprache die Applikation geschrieben ist, spielt für Dazuko keine Rolle. Dies versetzt Dritthersteller leichter in die Lage, ihre Produkte auf eine andere Plattform zu portieren. Der nachfolgende Code zeigt das Beispiel eines einfachen On-Access-Scanner (Virenwächter) in C. Details der Schnittstelle sowie ausführliche Beispielprogramme sind auf der Dazuko-Projektsite verfügbar [2].

int main() 
{ 
    struct access_t access; 
    
    dazukoRegister("myScanner"); 
    dazukoSetAccessMask(ON_OPEN | ON_CLOSE | ON_EXEC); 
    dazukoAddIncludePath("/"); 
    
    while (dazukoGetAccess(&access) == 0) 
    { 
        access.deny = so_scan_file(access.filename); 
        dazukoReturnAccess(&access); 
    } 
    dazukoUnregister(); 
    
    return 0; 
}


Aufbau

Um die Plattformunabhängigkeit zu gewährleisten, wurde Dazuko dreischichtig entwickelt (vgl. Abb. 2). Bei der ersten Ebene handelt es sich um eine plattformabhängige Schicht (Platform-Dependent Layer), in der die unterschiedlichen systemspezifischen Funktionen implementiert sind. Dieses Modul ist für die gesamte Interaktion mit dem Betriebssystem verantwortlich. Zur Implementierung von Dazuko auf ein neues Betriebssystem muss man somit nur dieses Modul neu schreiben.

[Zwischen Betriebssystem und Scanner liegen die drei Dazuko-Schichten: (OS) platform-dependent layer + functionality layer + visible layer (Scanner)]
Abbildung 2: Der Schichtaufbau in Dazuko

Die zweite Schicht mit der Bezeichnung Functionality Layer kann als das Gehirn von Dazuko bezeichnet werden: Dieses Modul übernimmt alle zu treffenden Entscheidungen. Die dritte Schicht (Visible Layer) ist die "sichtbare" Schicht: Sie stellt die eigentliche Schnittstelle von Dazuko dar, auf der auch der Informationsaustausch mit Virenscannern oder anderen Prüf-Applikationen erfolgt.

Der Hauptvorteil dieses Softwaredesigns ist, dass die zweite Schicht, der Funktionality Layer, von plattformabhängigem Code freigehalten wird. Das vereinfacht das Implementieren von Funktionen und das Debugging wesentlich. Neue Funktionen in dieser Schicht stehen somit allen Dazuko-Plattformen zur Verfügung. Die Konzentration der plattformabhängigen Funktionen auf den Platform-Dependent Layer gewährleistet zudem eine einfache und unkomplizierte Portierung auf andere Plattformen: Dazuko für FreeBSD konnte daher in relativ kurzer Zeit realisiert werden.

Die dritte Schicht ermöglicht es jedem Anbieter, seine Software auf einfache Weise einzubinden und so seinen Kunden beispielsweise einen On-Access-Virenscanner zur Verfügung zu stellen. Damit existiert eine feste Schnittstelle, welche die wichtigsten Funktionen bereits integriert hat. Wie ernst die Dazuko-Entwickler die Plattformunabhängigkeit nehmen und welche enormen Möglichkeiten sich abzeichnen, ist nicht zuletzt durch die Verfügbarkeit der eigentlichen Schnittstelle in den Programmiersprachen C und Java ersichtlich.

Zukunftsaussichten

Das Dazuko-Projekt möchte als Standard einer definierten Schnittstelle für plattformübergreifendes On-Access-Scanning verstanden werden. Insofern liegt vor engagierten Open-Source-Programmierern noch ein weites Entwicklungsfeld, das bestellt werden möchte. Mit der Portierung von Dazuko auf Windows wird es möglich sein, mehrere Anti-Viren-Scanner auf einer Workstation zu installieren, die kaskadiert zusammenarbeiten. Derzeit entwickelt jeder Anti-Viren-Softwarehersteller sein so genanntes Filterdevice selbst, was dazu führt, dass diese proprietären Lösungen nicht im Parallelbetrieb auf einem Rechner laufen können. Auch ein "richtiger" On-Access-Scanner für MacOS wäre denkbar (derzeit existieren lediglich On-Demand-Scanner) – eine entsprechende Portierung könnte diese Lücke schließen.

Um zu einem systemübergreifenden Standard für das On-Access-Scanning zu werden, müssen aber noch einige Hürden genommen werden. Wie gut Dazuko in der Praxis auf Linux- und FreeBSD-Systemen schon läuft, beweisen beispielsweise die AntiVir-Server-Produkte von H+BEDV.

John Ogness ist Manager Software-Entwicklung bei der H+BEDV Datentechnik GmbH. Detlef Langrock ist Produktmanager bei H+BEDV ([externer Link] http://antivir.de).

Literatur

[1]
Bill Hayes, Who goes there?, An Introduction to On-Access Virus Scanning, [externer Link] www.securityfocus.com/infocus/1622
[2]
Dazuko, Your Gateway to File Access Control, [externer Link] http://dazuko.org
[3]
Dazuko-Lizenz, [externer Link] www.dazuko.org/LICENSE.txt