Die Herausforderung der Lizenzidentifizierung in Linux-Distributionen
Die Identifizierung aller Urheberrechtsinhaber, Lizenzen und Lizenzverpflichtungen innerhalb einer Linux-Distribution ist äußerst komplex und mühsam. Viele Quelldateien in älteren Linux-Versionen (vor 4.19) enthalten keine Lizenzinformationen. Compliance-Tools können deshalb oft keine klare Lizenz ermitteln, und eine manuelle Prüfung ist zeitaufwendig.
Standardmäßig sind alle Linux-Kernel-Dateien ohne explizite Lizenzinformationen unter GPL Version 2 mit Syscall-Ausnahme lizenziert (im Folgenden wird diese Lizenz der Kürze halber als GPLv2 w/SE bezeichnet). Wenn jedoch eine Lizenz in der Datei erwähnt wird, sollte diese Lizenz Vorrang haben.
Standardlizenz und das Problem inkorrekter Zuordnungen
Das Problem ist, dass in Wirklichkeit nicht alle Kernel-Dateien ohne ausdrückliche Lizenzerklärung tatsächlich unter der GPLv2-Lizenz mit SE-Lizenz verbreitet werden oder verbreitet werden sollen.
Die Lizenzbereinigungsaktion der Linux Foundation
2017 startete die Linux Foundation eine Aktion zur Lizenzbereinigung. Das Ziel: mehr Transparenz und eine einfachere Einhaltung der Lizenzen für Endnutzer.
Automatisierte und manuelle Lizenzüberprüfung
Ein teils automatisierter, teils manueller Prozess identifizierte Dateien ohne Lizenzangaben. Anschließend wurden SPDX-Header hinzugefügt. Es wurden einige Anstrengungen unternommen, um die Ergebnisse der automatisch eingefügten Header manuell zu überprüfen. Experten überprüften viele dieser Änderungen, doch einige Dateien blieben falsch lizenziert. Die Community entdeckte einige dieser Fehler später, doch manche bestehen bis heute.
Die Genauigkeit der Lizenzinformationen hängt stark von der jeweiligen Linux-Kernel-Version ab. Ältere Versionen enthalten mehr Fehler, während neuere Versionen oft zuverlässiger sind.
Als konkretes Beispiel können wir die Datei cl0002.h heranziehen. In älteren Kernel-Versionen hat diese Datei keinen Lizenz-Header. Das dazugehörige Projekt (drm/nouvuau), nutzt fast ausschließlich die MIT-Lizenz. Dennoch erhielt die Datei in Linux Kernel v4.19 automatisch einen GPL-2.0-Lizenz-Header.
Erst in Linux Kernel v5.3, erkannte die Linux-Community den Fehler, meldete ihn und änderte die Lizenz auf die ursprüngliche MIT-Lizenz. Der Kommentar unter diesem Commit lautet: „Durch die Massen-SPDX-Ergänzung wurden alle diese Dateien zu GPL-2.0-lizenzierten Dateien. Der Rest dieses Projekts ist jedoch MIT-lizenziert, diesen Dateien fehlte lediglich die Standardformulierung und sie wurden in das globale Update einbezogen.“
Abbildung 1: Beispiel für einen gefälschten GPL-Lizenz-Header
Herausforderungen für Prüfer und Compliance-Tools
Wer Linux 4.19 analysiert, steht vor einem Problem: Ist die angegebene Lizenz (GPL-2.0) korrekt, oder muss die Datei genauer geprüft werden?
Laut Anwälten, die auf die Einhaltung von Lizenzen spezialisiert sind, war es nicht die Absicht der „Lizenzbereinigungsaktion“, die Lizenz der Datei zu ändern. Dies geschah, weil der Algorithmus, der zur automatischen Kennzeichnung aller Quellcode-Dateien im Linux-Kernel verwendet wurde, fehlerhaft war. Dies führt zu der Annahme, dass die Lizenz, die für diese Datei befolgt werden muss, MIT und nicht GPL-2.0 ist. Auch wenn der Header etwas anderes angibt.
Je nach Kernel-Version können sich Lizenzfehler in den Code schleichen. Automatische Scan-Tools oder unerfahrene Prüfer könnten falsche Lizenzinformationen weiterverbreiten.
Lösungsansätze zur Erkennung falscher Lizenz-Header
Um fehlerhafte Lizenzangaben zu entdecken, sollten Unternehmen die Lizenzinformationen in der aktuellen Linux-Kernel-Version immer mit anderen Informationsquellen abgleichen, z.B. mit Untermodulen. Diese Methode erfordert jedoch viel Aufwand, da Tausende von Dateien betroffen sein können.
Alternativ können Tools mit einer Codeanalyse durch Kopieren und Einfügen auf eine Diskrepanz zwischen dem Lizenz-Header und der Lizenz des Codes selbst hinweisen.
Ein weiterer Ansatz zur Identifizierung einiger Dateien, die einer automatischen Lizenzklassifizierung unterzogen wurden, wäre das Durchsuchen der Commit-Nachrichten nach Lizenzen mit Kommentaren zur Lizenzidentifizierung. So können beispielsweise alle Dateien, die nach dem „Aufräumprojekt“ korrigiert wurden, leicht anhand eines bestimmten Kommentars aufgefunden und alle diese Dateien manuell analysiert werden.
Software Composition Analysis als Schlüssel zur Lizenzkonformität
Alle oben genannten und viele weitere Verfahren werden bei Software-Kompositionsanalysen eingesetzt, die von Bitsea durchgeführt werden. Dabei versuchen wir unser Bestes, um sicherzustellen, dass wir möglichst gründliche und eindeutige Ergebnisse liefern.
Bei weiteren Fragen wenden Sie sich bitte an: info@bitsea.de