Behebung von Sicherheitsrisiken

Linux 7.2 entfernt die strncpy-Funktion vollständig

Linux
Bildquelle: Shutterstock/jivacore

Nach sechs Jahren Arbeit wurde die fehleranfällige Funktion strncpy komplett aus dem Linux-Kernel gelöscht. Fünf sicherere Funktionen ersetzen sie nun.

Das Integrationsfenster für den kommenden Linux-Kernel 7.2 wurde am 20. Juni 2026 geschlossen und markiert den Abschluss einer sechsjährigen Überarbeitung des Quellcodes. Die Entwickler haben die C-Bibliotheksfunktion strncpy vollständig aus sämtlichen Subsystemen, Treibern und architekturspezifischen Dateien entfernt. Die kernelinterne Dokumentation hatte die Funktion zuvor als aktiv gefährlich eingestuft. Insgesamt waren rund 362 Commits erforderlich, um alle Stellen im Code zu bereinigen, an denen die Funktion genutzt wurde. Mit der endgültigen Löschung aus dem Quellbaum, inklusive der letzten für bestimmte CPU-Architekturen optimierten Implementierungen, steht die Funktion zukünftigen Entwicklern nicht mehr zur Verfügung.

Anzeige

Behebung von potenziellen Sicherheitsrisiken in Linux

Die Entfernung der Funktion hat eine direkte Relevanz für die Systemsicherheit. Die strncpy-Funktion galt als dauerhafte Quelle für eine spezifische Kategorie von Speicherfehlern. Wenn Puffer im Kernel sensible Daten enthalten, können Bytes über eine nicht ordnungsgemäß durch ein Null-Byte abgeschlossene String-Grenze hinweg ausgelesen werden. Solche Fehler ermöglichen Schwachstellen zur Offenlegung von Speicherinhalten. Durch die vollständige Eliminierung wird diese Fehlerklasse aus der Angriffsfläche des Kernels entfernt. Die bisherige Empfehlung, die Funktion zu vermeiden, wurde damit zu einer festen, systemseitig erzwungenen Programmierrichtlinie.

Differenzierte Nachfolge durch fünf spezialisierte Funktionen

Als Ersatz für die universelle, aber unpräzise strncpy-Funktion kommen im Linux-Kernel nun fünf verschiedene Funktionen zum Einsatz:

  • strscpy für Zielpuffer, die zwingend mit einem Null-Byte abgeschlossen werden müssen
  • strscpy_pad für Null-Byte-abgeschlossene Puffer mit zusätzlicher Auffüllung durch Nullen
  • strtomem_pad für feste Datenfelder ohne Null-Byte-Abschluss
  • memcpy_and_pad für begrenzte Kopierprozesse mit explizitem Auffüllen
  • memcpy für Kopiervorgänge im Speicher mit einer vorab bekannten Länge

Der Grund für diese Aufteilung liegt in den unterschiedlichen Einsatzszenarien im Betriebssystem. Die Tech Times erläuterte die Notwendigkeit dieser Differenzierung wie folgt:

Anzeige

„Der Grund, warum fünf Funktionen benötigt wurden, liegt darin, dass verschiedene Teile des Kernels strncpy() für fünf semantisch unterschiedliche Speicheroperationen verwendeten – jede mit einer anderen Absicht, einer anderen Abschlussanforderung und einem anderen Auffüllverhalten.“

Tech Times

Durch die Ersetzung wurde der gesamte Quellcode dahingehend überprüft, dass jede Speicheroperation nun ihre exakte Absicht im Code deklariert. Dadurch wird die Speichersemantik des Kernels explizit lesbar.

(red)

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.