Ein Gerätetreiber ist eine Software , die einen bestimmten Gerätetyp steuert oder bedient , der an einen Computer angeschlossen ist . [ 1 ] Ein Treiber stellt eine Softwareschnittstelle zu Hardwaregeräten bereit und ermöglicht es anderer Software, auf Hardwarefunktionen zuzugreifen, ohne genaue Hardwaredetails kennen zu müssen.

Ein Treiber kommuniziert mit dem Gerät über den Computerbus oder das Kommunikationssubsystem, an das die Hardware angeschlossen ist. Wenn ein aufrufendes Programm eine Routine im Treiber aufruft, sendet der Treiber Befehle an das Gerät (steuert es an). Sobald das Gerät Daten an den Treiber zurücksendet, kann der Treiber wiederum Routinen im ursprünglichen aufrufenden Programm aufrufen.

Treiber sind hardwareabhängig und betriebssystemspezifisch. Sie stellen üblicherweise die Interruptbehandlung bereit , die für jede notwendige asynchrone, zeitabhängige Hardwareschnittstelle erforderlich ist. [ 2 ]

Zweck

Die Hauptaufgabe von Gerätetreibern besteht darin, Hardwareabstraktion bereitzustellen , indem sie als Übersetzer zwischen einem Hardwaregerät und den Anwendungen oder Betriebssystemen fungieren , die es nutzen. [ 1 ] Programmierer können so unabhängig von der spezifischen Hardware, die der Endbenutzer verwendet, Anwendungscode auf höherer Ebene schreiben.

Eine Anwendung auf höherer Ebene zur Interaktion mit einer seriellen Schnittstelle kann beispielsweise lediglich zwei Funktionen zum Senden und Empfangen von Daten umfassen . Auf einer niedrigeren Ebene kommuniziert ein Gerätetreiber, der diese Funktionen implementiert, mit dem auf dem Computer des Benutzers installierten seriellen Schnittstellencontroller. Die Befehle zur Steuerung einer 16550-UART unterscheiden sich deutlich von denen zur Steuerung eines USB-zu-Seriell-Adapters , jedoch abstrahiert jeder hardwarespezifische Gerätetreiber diese Details in derselben (oder einer ähnlichen) Softwareschnittstelle.

Entwicklung

Die Entwicklung von Gerätetreibern erfordert ein tiefes Verständnis der Funktionsweise von Hardware und Software auf der jeweiligen Plattform . Da Treiber für ihren Betrieb einen direkten Zugriff auf Hardwarefunktionen benötigen, arbeiten sie typischerweise in einer Umgebung mit hohen Berechtigungen und können bei Fehlern zu Systemproblemen führen. Im Gegensatz dazu lässt sich Fehlverhalten in den meisten Benutzerprogrammen moderner Betriebssysteme beheben, ohne das restliche System wesentlich zu beeinträchtigen. Selbst Treiber, die im Benutzermodus ausgeführt werden, können ein System zum Absturz bringen, wenn das Gerät fehlerhaft programmiert ist . Diese Faktoren erschweren die Fehlerdiagnose und bergen Risiken. [ 3 ]

Die Entwicklung von Treibern obliegt daher üblicherweise Software- oder Informatikingenieuren , die für Hardwareentwicklungsunternehmen arbeiten. Als Angestellte verfügen sie über bessere Kenntnisse des Hardware-Designs als die meisten Außenstehenden. Traditionell lag es zudem im Interesse des Hardwareherstellers , die optimale Nutzung seiner Hardware durch die Kunden zu gewährleisten. Typischerweise wird der Hardware- Abstraktionsteil des Treibers vom Betriebssystemhersteller geschrieben, während der physische Gerätezugriff vom Gerätehersteller implementiert wird. In den letzten Jahren haben jedoch auch herstellerunabhängige Entwickler zahlreiche Gerätetreiber für proprietäre Geräte geschrieben, hauptsächlich für die Verwendung mit freien und Open-Source -Betriebssystemen. In solchen Fällen ist es wichtig, dass der Hardwarehersteller Informationen zur Gerätekommunikation bereitstellt. Zwar lassen sich diese Informationen auch durch Reverse Engineering gewinnen , doch ist dies bei Hardware deutlich schwieriger als bei Software.

Windows verwendet eine Kombination aus Treiber und Minitreiber. Der vollständige Klassen-/Porttreiber wird vom Betriebssystem bereitgestellt, während Miniklassen-/Miniporttreiber von Herstellern entwickelt werden und hardware- oder funktionsspezifische Teilmengen des vollständigen Treiberstapels implementieren. [ 4 ] Das Miniportmodell wird von NDIS- , WDM- , WDDM- , WaveRT- , StorPort- , WIA- und HID- Treibern verwendet; jeder dieser Treiber nutzt gerätespezifische APIs und erfordert weiterhin die Geräteverwaltung durch den Entwickler.

Microsoft hat versucht, die Systeminstabilität aufgrund fehlerhafter Gerätetreiber durch ein neues Framework für die Treiberentwicklung, die Windows Driver Frameworks (WDF), zu reduzieren. Dazu gehört das User-Mode Driver Framework (UMDF), das die Entwicklung bestimmter Treibertypen – vor allem solcher, die ein nachrichtenbasiertes Protokoll zur Kommunikation mit ihren Geräten implementieren – als Benutzermodustreiber fördert. Sollten diese Treiber Fehlfunktionen aufweisen, verursachen sie keine Systeminstabilität. Das Kernel-Mode Driver Framework (KMDF) ermöglicht weiterhin die Entwicklung von Kernelmodus-Gerätetreibern, stellt aber Standardimplementierungen für Funktionen bereit, die bekanntermaßen Probleme verursachen, darunter die Abbruch von E/A-Operationen, das Energiemanagement und die Unterstützung von Plug-and-Play-Geräten.

Apple verfügt über ein Open-Source-Framework zur Entwicklung von Treibern für macOS , genannt I/O Kit.

In Linux-Umgebungen können Programmierer Gerätetreiber entweder als Teil des Kernels , separat als ladbare Module oder als Benutzermodustreiber für bestimmte Gerätetypen mit Kernel-Schnittstellen, wie beispielsweise USB-Geräte, erstellen. Makedev enthält eine Liste der in Linux verfügbaren Geräte, darunter ttyS (Terminal), lp ( Parallelport ), hd (Festplatte), loop und sound (einschließlich Mixer , Sequenzer , DSP und Audio). [ 5 ]

Microsoft Windows .sys- Dateien und Linux .ko-Dateien können ladbare Gerätetreiber enthalten. Der Vorteil ladbarer Gerätetreiber besteht darin, dass sie nur bei Bedarf geladen und anschließend wieder entladen werden, wodurch Kernelspeicher gespart wird.

Berechtigungsstufen

Je nach Betriebssystem können Gerätetreiber mit unterschiedlichen Berechtigungsstufen ausgeführt werden . Die Wahl der Berechtigungsstufe hängt maßgeblich vom verwendeten Kernel ab . Ein Betriebssystem mit einem monolithischen Kernel , wie beispielsweise der Linux-Kernel , führt Gerätetreiber typischerweise mit denselben Berechtigungen wie alle anderen Kernelobjekte aus. Im Gegensatz dazu führt ein auf einem Mikrokernel basierendes System , wie beispielsweise Minix , Treiber als vom Kernel unabhängige Prozesse aus, die jedoch Treiber für essentielle Ein-/Ausgabefunktionen nutzen . [ 6 ] Unter Windows NT , einem System mit einem Hybridkernel , ist es üblich, dass Gerätetreiber entweder im Kernelmodus oder im Benutzermodus ausgeführt werden . [ 7 ]

Der gebräuchlichste Mechanismus zur Trennung des Speichers in verschiedene Berechtigungsstufen sind Schutzringe . Auf vielen Systemen, beispielsweise solchen mit x86- und ARM -Prozessoren, führt das Umschalten zwischen Ringen zu Leistungseinbußen. Dies berücksichtigen Betriebssystementwickler und Embedded-Software -Ingenieure bei der Entwicklung von Treibern für Geräte wie Netzwerkkarten , die mit geringer Latenz arbeiten sollen. Der Hauptvorteil des Betriebs eines Treibers im Benutzermodus liegt in der verbesserten Stabilität, da ein fehlerhaft programmierter Benutzermodus-Gerätetreiber das System nicht durch Überschreiben des Kernel-Speichers zum Absturz bringen kann. [ 8 ]

Gängige Abstraktionsebenen für Gerätetreiber sind:

  • Für Hardware:
    • Direkte Schnittstelle
    • Schreiben oder Lesen aus einem Gerätesteuerungsregister
    • Verwendung einer übergeordneten Schnittstelle (z. B. Video-BIOS )
    • Verwendung eines anderen, niedrigeren Gerätetreibers (z. B. Dateisystemtreiber, die Festplattentreiber verwenden)
    • Arbeit mit Hardware simulieren, während man etwas völlig anderes tut [ 9 ]
  • Für Software:
    • Dem Betriebssystem direkten Zugriff auf Hardware-Ressourcen ermöglichen
    • Implementierung von nur primitiven Funktionen
    • Implementierung einer Schnittstelle für Nicht-Treiber-Software (z. B. TWAIN )
    • Die Implementierung einer Programmiersprache, manchmal auf einem recht hohen Niveau (z. B. PostScript ).

Anwendungen

Aufgrund der Vielfalt moderner Hardware und Betriebssysteme arbeiten Treiber in vielen verschiedenen Umgebungen. [ 10 ] Treiber können mit folgenden Systemen interagieren :

Die Auswahl und Installation der richtigen Gerätetreiber für die jeweilige Hardware ist daher oft ein wichtiger Bestandteil der Computersystemkonfiguration. [ 11 ]

Virtuelle Gerätetreiber

Virtuelle Gerätetreiber stellen eine spezielle Variante von Gerätetreibern dar. Sie dienen der Emulation von Hardwaregeräten, insbesondere in Virtualisierungsumgebungen , beispielsweise wenn ein Gastbetriebssystem auf einem Xen- Host ausgeführt wird. [ 12 ] Anstatt dem Gastbetriebssystem die Kommunikation mit der Hardware zu ermöglichen, übernehmen virtuelle Gerätetreiber die gegenteilige Rolle und emulieren ein Hardwarebauteil. Dadurch entsteht für das Gastbetriebssystem und seine Treiber in einer virtuellen Maschine die Illusion, auf reale Hardware zugreifen zu können. Zugriffsversuche des Gastbetriebssystems auf die Hardware werden an den virtuellen Gerätetreiber im Hostbetriebssystem weitergeleitet, beispielsweise Funktionsaufrufe . Der virtuelle Gerätetreiber kann außerdem simulierte Prozessorereignisse wie Interrupts an die virtuelle Maschine senden.

Virtuelle Geräte können auch in nicht-virtualisierten Umgebungen funktionieren. Beispielsweise wird ein virtueller Netzwerkadapter in einem VPN verwendet , während ein virtuelles Festplattenlaufwerk in iSCSI zum Einsatz kommt . Ein gutes Beispiel für virtuelle Gerätetreiber sind die Daemon Tools .

Es gibt verschiedene Varianten von virtuellen Gerätetreibern, wie zum Beispiel VxDs , VLMs und VDDs.

Open-Source-Treiber

Solaris -Beschreibungen häufig verwendeter Gerätetreiber:

  • fas: Schneller/breiter SCSI-Controller
  • hme: Schnelles Ethernet (10/100 Mbit/s)
  • isp: Differential SCSI-Controller und die SunSwift-Karte
  • glm: (Gigabaud Link Module [ 15 ] ) UltraSCSI-Controller
  • scsi: Small Computer Serial Interface (SCSI)-Geräte
  • sf: soc+ oder Social Fiber Channel Arbitrated Loop (FCAL)
  • soc: SPARC Storage Array (SSA)-Controller und Steuergerät
  • Social: Serielle optische Controller für FCAL (soc+)

APIs

Kennungen

Ein Gerät am PCI-Bus oder USB-Anschluss wird durch zwei jeweils zwei Byte lange IDs identifiziert . Die Hersteller-ID (Vendor ID) identifiziert den Hersteller des Geräts. Die Geräte-ID (Device ID) identifiziert ein spezifisches Gerät dieses Herstellers.

Ein PCI-Gerät verfügt häufig über ein ID-Paar für den Hauptchip des Geräts sowie über ein Subsystem-ID-Paar, das den Hersteller identifiziert. Dieser kann sich vom Chiphersteller unterscheiden.

Sicherheit

Computer verfügen oft über eine Vielzahl unterschiedlicher und individuell angepasster Gerätetreiber, die im Betriebssystemkern laufen und häufig verschiedene Fehler und Sicherheitslücken aufweisen , wodurch sie zu einem Ziel für Exploits werden . [ 19 ]Ein Angreifer, der einen eigenen, anfälligen Treiber (BYOVD) verwendet, installiert beliebige signierte, ältere Treiber von Drittanbietern mit bekannten Sicherheitslücken, die das Einschleusen von Schadcode in den Kernel ermöglichen. [ 20 ] Zu den möglicherweise anfälligen Treibern gehören solche für WLAN und Bluetooth, [ 21 ] [ 22 ] Gaming-/Grafiktreiber [ 23 ] und Druckertreiber. [ 24 ]

Es mangelt an effektiven Werkzeugen zur Erkennung von Kernel-Schwachstellen, insbesondere für proprietäre Betriebssysteme wie Microsoft Windows [ 25 ], bei denen der Quellcode der Gerätetreiber größtenteils proprietär und nicht zur Untersuchung verfügbar ist [ 26 ] und die Treiber oft über umfangreiche Berechtigungen verfügen [ 27 ] [ 28 ] [ 29 ] [ 30 ] .

Eine Gruppe von Sicherheitsforschern betrachtet den Mangel an Isolation als einen der Hauptfaktoren , der die Kernel-Sicherheit untergräbt [ 31 ] , und veröffentlichte ein Isolationsframework zum Schutz von Betriebssystemkernen, insbesondere des monolithischen Linux-Kernels, dessen Treiber ihrer Aussage nach jährlich etwa 80.000 Commits erhalten. [ 32 ] [ 33 ]

Ein wichtiger Aspekt beim Entwurf eines Kernels ist die Unterstützung, die er für den Schutz vor Fehlern ( Fehlertoleranz ) und vor böswilligem Verhalten ( Sicherheit ) bietet. Diese beiden Aspekte werden üblicherweise nicht klar voneinander abgegrenzt, und die Berücksichtigung dieser Unterscheidung beim Kernel-Entwurf führt zur Ablehnung einer hierarchischen Schutzstruktur . [ 34 ]

Die vom Kernel bereitgestellten Mechanismen oder Richtlinien können nach verschiedenen Kriterien klassifiziert werden, darunter:

  • ob sie statisch (zur Kompilierzeit erzwungen ) oder dynamisch (zur Laufzeit erzwungen ) sind;
  • ob sie präventiv oder nach der Entdeckung erfolgen;
  • unabhängig davon, ob sie hardwarebasiert oder sprachbasiert sind;
  • ob es sich eher um einen offenen Mechanismus oder eine verbindliche Richtlinie handelt;
  • gemäß den Schutzprinzipien, die sie erfüllen (z. B. Denning [ 35 ] [ 36 ] );
  • und viele mehr.

Siehe auch

Referenzen

  1. ^ a b „Was ist ein Gerätetreiber?“ . WhatIs.com . TechTarget. Archiviert vom Original am 13. Februar 2021 . Abgerufen am 19. März 2018 .
  2. ^ EMC Education Services (2010). Informationsspeicherung und -verwaltung: Speichern, Verwalten und Schützen digitaler Informationen . John Wiley & Sons. ISBN 9780470618332Archiviert vom Original am 13.02.2021 . Abgerufen am 10.11.2020 .
  3. ^ Burke, Timothy (1995). Schreiben von Gerätetreibern: Tutorial und Referenz . Digital Press. ISBN 9781555581411Archiviert vom Original am 26.01.2021 . Abgerufen am 05.08.2016 .
  4. ^ „Auswahl eines Treibermodells“ . Microsoft . Abgerufen am 30.03.2021 .
  5. ^ „MAKEDEV – Linux-Befehl – ​​Unix-Befehl“ . Linux.about.com. 11.09.2009. Archiviert vom Original am 30.04.2009 . Abgerufen am 17.09.2009 .
  6. ^ Tanenbaum, Andrew; Woodhull, Albert (2006). Betriebssysteme, Entwurf und Implementierung (3. Aufl.). Upper Saddle River, NJ: Pearson Pretence Hall. S. 256. ISBN 0-13-142938-8Die
  7. ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark; Solomon, David (2017). Windows Internals, Teil 1 (7. Aufl.). Redmond, Washington: Microsoft Press. ISBN 978-0-7356-8418-8Die
  8. ^ „Einführung in das User-Mode Driver Framework (UMDF)“ . Microsoft . 10.10.2006. Archiviert vom Original am 07.01.2010 . Abgerufen am 04.03.2008 .
  9. ^ Computerperipheriegeräte und Schnittstellen . Technische Veröffentlichungen Pune. Januar 2008. S.  5–8 . ISBN 978-8184314748Abgerufen am 03.05.2016 .
  10. ^ Deborah Morley (2009). Understanding Computers 2009: Today and Tomorrow . Cengage Learning. ISBN 9780324830132Archiviert vom Original am 09.06.2021 . Abgerufen am 10.11.2020 .
  11. ^ „Was sind Gerätetreiber und wozu brauchen wir sie?“ drivers.com . 17. April 2015. Archiviert vom Original am 20. November 2016. Abgerufen am 19. März 2018 .
  12. ^ Chisnall, David (2007). Der definitive Leitfaden zum Xen-Hypervisor (Erste Auflage). USA: Prentice Hall Press. ISBN 978-0-13-234971-0Die
  13. ^ "CCISS" . SourceForge . 2010. Archiviert vom Original am 21.08.2010 . Abgerufen am 11.08.2010 . Treiber für die HP (ehemals Compaq) Smart Array-Controller, die Hardware-RAID-Funktionalität bieten.
  14. Russell , Steve; et al. (21.10.2003). Abkürzungen und Akronyme . IBM International Technical Support Organization. S. 207. ISBN 0-7384-2684-9Abgerufen am 14.08.2011 .{{cite book}}: |work=ignoriert ( Hilfe )
  15. ^ „US-Patent 5969841 – Gigabaud-Link-Modul mit Empfangsleistungserkennungssignal“ . PatentStorm LLC. Archiviert vom Original am 12.06.2011 . Abgerufen am 08.09.2009 . Ein verbessertes Gigabaud-Link-Modul (GLM) wird für bidirektionale Datenübertragungen zwischen einem Host-Gerät und einem seriellen Übertragungsmedium bereitgestellt.
  16. ^ „Unified Audio Model (Windows CE 5.0)“ . Microsoft Developer Network . 14. September 2012. Archiviert vom Original am 22. Juni 2017. Abgerufen am 19. September 2016 .
  17. ^ Dell US. „Was sind DCH-Treiber und warum sollten Sie etwas darüber wissen? | Dell US“ . www.dell.com . Abgerufen am 29.10.2020 .
  18. ^ „dxd - dynax driver framework: Main Page“ . dxd.dynax.at . Archiviert vom Original am 29.05.2016 . Abgerufen am 19.09.2016 .
  19. ^ Talebi, Seyed Mohammadjavad Seyed; Tavakoli, Hamid; Zhang, Hang; Zhang, Zheng; Sani, Ardalan Amiri; Qian, Zhiyun (2018). Charm: Erleichterung der dynamischen Analyse von Gerätetreibern mobiler Systeme . S.  291–307 . ISBN 9781939133045Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  20. ^ Goodin, Dan (14. Oktober 2022). „Wie ein Microsoft-Fehler Millionen von PCs für gefährliche Malware-Angriffe öffnete“ . Ars Technica . Archiviert vom Original am 8. November 2022. Abgerufen am 8. November 2022 .
  21. ^ Ridley, Jacob (9. Februar 2022). „Sie sollten Ihre WLAN- und Bluetooth-Treiber heute aktualisieren . “ PC Gamer . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  22. ^ „Drahtlose ‚BlueBorne‘-Angriffe zielen auf Milliarden von Bluetooth-Geräten ab“ . threatpost.com . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  23. ^ Spadafora, Anthony (12. Januar 2022). „Die Installation von Spieletreibern kann Ihren PC anfällig für Cyberangriffe machen“ . TechRadar . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  24. ^ „HP behebt Sicherheitslücke in Druckern, die seit 16 Jahren vorhanden war“ . ZDNET . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  25. ^ Pan, Jianfeng; Yan, Guanglu; Fan, Xiaocao (2017). Digtool: Ein {virtualisierungsbasiertes} Framework zur Erkennung von Kernel-Schwachstellen . USENIX-Vereinigung. S.  149–165 . ISBN 9781931971409Abgerufen am 5. November 2022 .
  26. ^ King, Bertel (18. Juni 2022). „Closed Source vs. Open Source Hardware Drivers: Why It Matters“ . MUO . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  27. ^ Branscombe, Mary (7. April 2022). „Wie Microsoft anfällige und schädliche Treiber in Defender, Sicherheitstools von Drittanbietern und in Windows 11 blockiert“ . TechRepublic . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  28. ^ Goodin, Dan (5. Oktober 2022). „Keine Lösung in Sicht für die seit Jahren bestehende, kilometergroße Sicherheitslücke in einer wichtigen Windows-Sicherheitsfunktion“ . Ars Technica . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  29. ^ Davenport, Corbin. "„Bring Your Own Vulnerable Driver“-Angriffe brechen Windows-Systeme“ . How-To Geek . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  30. ^ „Windows 10 Sicherheitswarnung: Sicherheitslücken in über 40 Treibern gefunden“ . BleepingComputer . Archiviert vom Original am 5. November 2022. Abgerufen am 5. November 2022 .
  31. ^ „Feingranulare Kernel-Isolation“ . mars-research.github.io . Archiviert vom Original am 15. September 2022. Abgerufen am 15. September 2022 .
  32. ^ Fetzer, Mary. „Automatische Gerätetreiberisolierung schützt vor Fehlern in Betriebssystemen“ . Pennsylvania State University via techxplore.com . Archiviert vom Original am 15. September 2022. Abgerufen am 15. September 2022 .
  33. ^ Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Tan, Gang; Jaeger, Trent; Burtsev, Anton (2022). „KSplit: Automatisierte Gerätetreiberisolierung“ (PDF) . Archiviert (PDF) vom Original am 15. September 2022. Abgerufen am 15. September 2022 .
  34. ^ Wulf 1974, S. 337–345
  35. ^ Denning 1976
  36. ^ Swift 2005, S. 29 Zitat: „Isolation, Ressourcenkontrolle, Entscheidungsüberprüfung und Fehlerbehebung.“