Open Source im professionellen Einsatz
Linux-Magazin 03/2009

Die GNU-C-Bibliothek in Version 2.9

Code-Bücherei

Eine Bibliothek erspart es dem Programmierer, das Rad ständig neu zu erfinden. Daneben kann sie aber auch Anwendungen beschleunigen und den Entwickler vor gefährlichen Fehlern bewahren. Eine Vorstellung der Neuerungen in Version 2.9 der GNU C-Bibliothek.

513

Große Entwicklungssprünge sind von der neuen Version 2.9 der Glibc ([1], [2]) nicht zu erwarten, schließlich soll sie ja stabile Schnittstellen garantieren. Aber als Bibliothek, gegen die der Großteil der Programme auf einer typischen Linux-Installation gelinkt ist, übt sie erheblichen Einfluss auf Performance und Sicherheit des Systems aus. Die Library-Entwickler haben auch bei der jüngsten Ausgabe der freien C-Bibliothek vom November 2008 an einigen Stellschräubchen gedreht, um die Code-Bibliothek zu optimieren. Erste Linux-Distributionen nutzen die neue Release bereits im Produktiveinsatz.

Wer steckt dahinter?

Maintainer und Hauptentwickler der Glibc ist derzeit Ulrich Drepper. Der deutsche Informatiker lebt in Kalifornien und arbeitet dort beim Linux-Distributor Red Hat. Über die Bibliothek entscheidet er nicht allein: Politisch wichtige Entscheidungen trifft das GNU C Library Steering Committee, dem unter anderem die Suse-Mitarbeiter Andreas Jaeger und Andreas Schwab, der Red-Hat-Mann Jakub Jelinek sowie der Original-Autor der Bibliothek, Roland McGrath, angehören.

Die Weiterentwicklung umfasst beispielsweise Security-Features. Die Verantwortung für die Sicherheit einer Anwendung liegt zwar zunächst bei deren Entwickler, doch Ulrich Drepper ist überzeugt, die verwendete Bibliothek müsse nach Kräften mithelfen. "Bei Library-Code muss man einfach auf Nummer sicher gehen", schreibt er in seinem Blog [3]. "Das bedeutet zwar eine Menge Arbeit, aber die muss einfach gemacht werden."

Release 2.9 bringt neben Bugfixes ein Security-relevantes Detail: Viele Funktionen und Systemaufrufe verwenden nun das Close-on-Exec-Flag, wenn sie einen Dateideskriptor öffnen. Warum das relevant ist, erläutert Drepper in folgendem Beispielszenario: Ein Webbrowser hat in einem Tab eine Internetbanking-Seite geöffnet, in einem anderen lädt er eine beliebige Seite, die ein Flash-Objekt enthält. Um das Objekt anzuzeigen, startet der Browser per »fork()« und »exec()« einen Plugin-Prozess. Dieser erbt vom Browserprozess alle offenen Dateideskriptoren, sofern diese nicht mit Close-on-Exec markiert sind.

Böswillig konstruierte Flash-Inhalte dürften so vertrauliche Informationen aus den vom Elternprozess geöffneten Dateien lesen, also etwa aus dem Onlinebanking-Tab des Browsers. Solche Informationslecks könnte der Programmierer durch Schließen der Filedeskriptoren vor dem Aufruf von »exec(«) verhüten - er vergisst aber vielleicht, dies zu erledigen. Gut, wenn bereits beim Öffnen der Deskriptoren das Flag zum automatischen Schließen gesetzt ist, und noch besser, wenn die Bibliothek dabei hilft.

Kernel-Schnittstellen

Um diese Security-Verbesserung auch bei Systemaufrufen zu nutzen, die Programme an den Linux-Kernel absetzen, hat Ulrich Drepper Patches auf der Kernel-Mailingliste eingereicht. Sie schaffen neue Systemaufruf-Varianten wie »dup3()«, »pip2()« »epoll_create1()« und »inotify_init1()«. Diese unterscheiden sich von ihren Namensbrüdern ohne Numeral darin, dass sie als zusätzlichen Parameter das Close-on-Exec-Flag aufnehmen. Dem Systemaufruf »popen()« zum Öffnen von Pipes verpasste der Entwickler zu diesem Zweck den Modus »e«.

Die Änderungen gingen in Kernel 2.6.27 ein, Glibc 2.9 unterstützt selbstverständlich die neuen Linux-Schnittstellen. Diese Kombination aus Kernel und passender C-Bibliothek ist die Basis für Red Hats und Novells jüngsten Community-Distributionen: Fedora 10 erschien nur wenige Tage nach der neuen Library-Version im November 2008, Open Suse 11.1 (Abbildung 1) etwa vier Wochen später.

Abbildung 1: Open Suse 11.1 gehört zu den ersten Distributionen, die die Glibc-Version 2.9 als C-Bibliothek verwenden. So kommt sie auch in den Genuss der neu geschaffenen Kernel-Schnittstellen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 2 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.