GNU Cライブラリ

GNU Cライブラリ (glibc) について



GNU Cライブラリ(glibc、ジーリブシー)は、GNUプロジェクトによって開発された標準Cライブラリの実装です。フリーソフトウェア財団(FSF)によって初期開発が行われ、その後、レッドハットのウルリッヒ・ドレッパー氏らを中心とする委員会が開発を監督しました。2012年3月からは、コミュニティ主導の開発プロセスへと移行しています。

歴史



1980年代、ローランド・マクグラス氏らの手によってglibcの開発が始まりました。1988年2月には、FSFがglibcがANSI Cの要件をほぼ完全に満たしていると発表しました。1992年には、ANSI C-1989とPOSIX.1-1990に対応し、POSIX.2への対応も進められました。

一時的なフォーク



1990年代初頭、Linuxカーネル開発者たちはglibcの開発をフォークし、「Linux libc」と呼ばれるものが誕生しました。このフォークは数年間続き、バージョン2から5までリリースされました。しかし、1996年にFSFがglibc 2.0をリリースすると状況は変わります。glibc 2.0では、POSIX標準の完全サポート、優れた国際化/多言語サポート、IPv6対応、64ビットデータアクセス、マルチスレッドのサポートなど、大幅な機能向上が図られました。この時点でLinuxカーネル開発者たちはフォークを解消し、再びFSFのglibcを使用するようになりました。

Linux libcの最終バージョンは、内部での名称(soname)がlibc.so.5でした。glibc 2.xに引き継ぐ際、Linuxではsonameをlibc.so.6としました(AlphaおよびIA64アーキテクチャ向けはlibc.so.6.1)。このsonameはlibc6と略されることが多く、Debianのパッケージ名などにも見られます。

リチャード・ストールマン氏によれば、Linux libcで行われた変更は著作権の状態が不明確であったため、glibcにはマージされませんでした。GNUプロジェクトでは、著者と著作権の記録を厳密に行うことが原則とされています。

ハードウェアおよびカーネルのサポート



glibcは、多様なカーネルハードウェアアーキテクチャ上で利用されています。最も一般的なのは、x86ハードウェア上のLinuxカーネルを使用するシステムですが、公式にサポートされているハードウェアには、x86、モトローラ 680x0、DEC Alpha、PowerPC、ARM、ETRAX CRIS、s390、SPARCなどが含まれます。また、GNU HurdとLinuxカーネルが公式にサポートされているカーネルです。さらに、多数のパッチを適用することで、FreeBSDやNetBSD上でも動作するバージョンが存在します(Debian GNU/kFreeBSDやDebian GNU/NetBSDなど)。また、BeOSのlibrootとしても利用され、Haikuに引き継がれています。

機能



glibcは、以下の標準で要求される機能を提供しています。

  • - Single UNIX Specification
  • - POSIX (1c, 1d, 1j)
  • - ISO C99で要求される機能の一部
  • - BSDインタフェース
  • - System V Interface Definition (SVID)
  • - X/Open Portability Guide (XPG) issue 4.2

さらに、GNUの開発に有用または不可欠と思われる拡張機能も提供しています。

脆弱性



2015年1月27日、セキュリティ企業Qualysの研究者によって、深刻なセキュリティホールが発見されました。これはglibcのバージョン2.2から2.17に影響するものでした。この脆弱性は、2013年5月21日にリリースされたバージョン2.18で修正されましたが、多くのディストリビューションでは修正が適用されないまま使用されていました。現在では多くのディストリビューションで修正されたパッケージが利用可能になっています。

この脆弱性を悪用すると、名前解決に使用される関数に細工されたホスト名を渡すことで、バッファオーバーフローを引き起こし、任意のコード実行やDoS攻撃が可能になる可能性があります。具体的には、gethostbyname関数やgethostbyname2関数を利用するソフトウェアに影響が及びます。2015年1月28日の時点では、メール転送エージェントであるEximがリモートから攻撃を受ける可能性があると確認されています。

小型機器などでの利用



glibcは、そのサイズや速度の面から、かつてはリーナス・トーバルズ氏や組み込みLinuxプログラマなどから批判されることもありました。そのため、メモリ使用量が少ない標準Cライブラリ(Bionic、dietlibc、EGLIBC、Klibc、musl、Newlib、uClibcなど)が開発されてきました。gccでは、ターゲットがGNU/Linuxの場合、-mglibc、-muclibc、-mbionicでライブラリを切り替えることができます。

しかし、標準への適合性、機能の網羅性、各種サポートを考慮して、小型機器にもglibcを採用する例も多くあります。例えば、OpenMokoやiPAQ向けのFamiliar Linux(GPE使用時)などがあります。

関連項目



  • - Gnulib
  • - EGLIBC

外部リンク



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。