FreeBSD-SA-05:07.ldt "Local kernel memory disclosure in i386_get_ldt"

The FreeBSD Project よりセキュリティ勧告が出ました。要点を以下にまとめます。

  • i386_get_ldt(2)は引数のチェックが不十分で、負か非常に大きな値を渡すと不適当なカーネルメモリの一部をコピーしてしまう脆弱性がある。
  • この脆弱性により権限のないユーザがカーネルメモリを入手できてしまう。
  • 入手したカーネルメモリにはファイルキャッシュやターミナルバッファの一部などを含む可能性があり、これらには他人の機密情報、たとえば他のユーザが入力したパスワードなどを含む可能性がある。

セキュリティ勧告は ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:07.ldt.asc にあります。
以下は上記のセキュリティ勧告の一部とその訳文です。ただし品質は保証致しません。

I. 背景 - Background

The i386_get_ldt(2) system call allows a process to request that a portion of its Local Descriptor Table be copied from the kernel into userland.
i386_get_ldt(2)システムコールは、プロセスが、そのローカルディスクリプタテーブルの一部をカーネルからuserlandにコピーするように要求することを可能にしています。

II. 問題の詳細 - Problem Description

The i386_get_ldt(2) syscall performs insufficient validation of its input arguments. In particular, negative or very large values may allow inappropriate data to be copied from the kernel.
i386_get_ldt(2)システムコールは、その引数の確認が不十分です。特に、負か非常に大きな値は、不適当なデータがカーネルからコピーされることを許容してしまいます。

III. 影響範囲 - Impact

Kernel memory may be disclosed to the user process. Such memory might contain sensitive information, such as portions of the file cache or terminal buffers. This information might be directly useful, or it might be leveraged to obtain elevated privileges in some way. For example, a terminal buffer might include a user-entered password.
カーネルメモリがユーザプロセスに明らかにされるかもしれません。そのようなメモリはファイルキャッシュやターミナルバッファの一部などの機密情報を含むかもしれません。この情報は直接有用かもしれませんし、あるいは、何らかの方法で高い権限を得る手段にされるかもしれません。例えば、ターミナルバッファはユーザによって入力されたパスワードを含むかもしれません。

IV. 回避方法 - Workaround

No workaround is known for i386 and amd64 systems; other platforms are not affected by this issue.
i386amd64システムでの回避方法は知られていません; 他のプラットフォームはこの問題により影響されません。

><