DMA-Schutz bei Mac-Computern
Computer müssen den direkten Speicherzugriff (Direct Memory Access, DMA) von Peripheriegeräten unterstützen, um einen hohen Durchsatz bei Highspeed-Schnittstellen wie PCIe, FireWire, Thunderbolt und USB zu erzielen. Sie müssen also in der Lage sein, Lese- und Schreibvorgänge im RAM auszuführen, ohne dass die CPU kontinuierlich involviert ist. Seit 2012 haben Mac-Computer als DMA-Schutz zahlreiche Technologien implementiert und so eine der besten und umfassendsten DMA-Schutzvorkehrungen getroffen, die es je auf einem PC gegeben hat.
DMA-Schutz bei einem Mac mit Apple Chips
Die Apple-SoCs umfassen für jeden DMA-Agent im System eine IOMMU-Einheit (Input/Output Memory Management Unit), die PCIe- und Thunderbolt-Ports einschließt. Jede IOMMU-Einheit verfügt über eine eigene Tabelle für die Adressübersetzung, die für die Übersetzung von DMA-Anfragen herangezogen wird. Das bedeutet, dass Peripheriegeräte, die über PCIe oder Thunderbolt verbunden sind, nur auf Arbeitsspeicher zugreifen können, der explizit zur Verwendung durch sie bereitgestellt wird. Peripheriegeräte können somit nicht auf Speicherbereiche anderer Teile des Systems zugreifen, etwa auf den Kernel oder die Firmware, oder auf Arbeitsspeicher, der anderen Peripheriegeräten zugewiesen ist. Wenn eine IOMMU-Einheit den Versuch eines Peripheriegeräts erkennt, auf Arbeitsspeicher zuzugreifen, der nicht zur Verwendung durch dieses Peripheriegerät bereitgestellt wurde, signalisiert sie eine kritische Kernel-Situation.
DMA-Schutz bei Intel-basierten Mac-Computern
Intel-basierte Mac-Computer mit Intel Virtualization Technology for Directed I/O (Vt-d) initialisieren die IOMMU-Einheit und damit die Möglichkeit, die DMA-Neuzuweisung vorzunehmen und sie per Interrupt zu unterbrechen, in einer sehr frühen Phase des Startvorgangs, um verschiedenen Klassen sicherheitsrelevanter Schwachstellen entgegenzuwirken. Die Apple-Hardware für IOMMU verwendet zu Beginn des Vorgangs die Richtlinie „default-deny“, sodass DMA-Anfragen durch Peripheriegeräte sofort nach dem Einschalten des Systems automatisch abgeblockt werden. Nachdem die Software initialisiert wurde, lassen die IOMMU-Einheiten DMA-Anfragen von Peripheriegeräten nur zu, wenn diese sich auf Arbeitsspeicherbereiche beziehen, die explizit für die Verwendung durch sie bereitgestellt wurden.
Hinweis: Das Unterbrechen (Interrupt) der Neuzuweisung für PCIe erübrigt sich bei einem Mac mit Apple Chips, da jede IOMMU-Einheit die MSIs für die jeweils eigenen Peripheriegeräte verarbeitet.
Ab macOS 11 führen alle Mac-Computer mit Apple T2 Security Chip UEFI-Treiber aus, die DMA in einer restriktiven Ring-3-Umgebung ermöglichen, wenn die betreffenden Treiber mit externen Geräten gekoppelt werden. Diese Eigenschaft trägt dazu bei, die missbräuchliche Nutzung sicherheitsrelevanter Schwachstellen abzuwehren. Solche Schwachstellen können auftreten, wenn ein Gerät mit Schadsoftware während des Startvorgangs auf unvorhergesehene Weise mit einem UEFI-Treiber interagiert. Im Speziellen reduziert es die Auswirkungen von Schwachstellen bei der Handhabung von DMA-Puffern durch die Treiber.