Software::Kernel
Linux: Asynchrone bsg-Schnittstelle wird entfernt
Der Treiber für generische SCSI-Geräte im Linux-Kernel, bsg, wird voraussichtlich in Linux 4.19 seine asynchrone Schnittstelle verlieren. Die Entfernung erfolgt wegen Sicherheitsproblemen und ist möglich, weil die Schnittstelle keine bekannten Nutzer hat.
Larry Ewing
Im Linux-Kernel gibt es
zwei Treiber für generische SCSI-Geräte. Historisch gab es zuerst den sg-Treiber. 2007 kam, von vielen Benutzern unbemerkt, nach dreijähriger Entwicklungszeit der bsg-Treiber hinzu, der mehr Funktionalität bietet und moderner ist. Beide Treiber können aber sowohl synchron als auch asynchron verwendet werden. Synchron werden die Treiber mit
ioctl
-Aufrufen angesprochen, asynchron dagegen mit
write
und
read
. In beiden Fällen werden komplexe Datenstrukturen ausgetauscht, die mehr oder weniger direkt den SCSI-Kommandos entsprechen. Die Treiber für generische SCSI-Geräte können im Prinzip mit jedem SCSI-Gerät verwendet werden. Für Disk-, CD-ROM- und Bandlaufwerke verwendet man allerdings überwiegend die spezialisierten Treiber.
Mit beiden Treibern gab es in der Vergangenheit schon Sicherheitsprobleme, meist deshalb, weil in den übergebenen Datenstrukturen Zeiger auf weitere Daten im Anwendungsprozess eingebettet sind, die nicht ausreichend überprüft wurden. Die Treiber werden aufgrund ihrer Schnittstellen als latentes Risiko angesehen und es gibt Bemühungen, unter anderem durch Jann Horn, das Risiko zu minimieren. Horn erkannte, dass der Aufruf von release
im bsg-Treiber den Zugriff auf beliebigen Speicher ermöglichen kann. Das alarmierte die Entwickler, und es wurde diskutiert, wie das Problem zu beheben sei. Christoph Hellwig machte schließlich den Vorschlag, die asynchrone Schnittstelle von bsg einfach zu entfernen. Dadurch würde der potentiell unsichere Code komplett verschwinden. Nach Recherchen von Horn wird die asynchrone Schnittstelle von keiner bekannten Anwendung genutzt, daher könnte es in diesem Fall möglich sein, die Kompatibilität zu brechen. Die Änderung wird, was bereits sicher ist, in Linux 4.19 kommen und, wie Linus Torvalds befürwortete, auch in ältere Kernel zurückportiert. Nur wenn sich ein Nutzer der Schnittstelle melden sollte, der nicht auf die synchrone Schnittstelle umstellen kann, könnte die Änderung noch einmal in Frage gestellt werden.