Index | |
プロジェクトのセキュリティ上の目標 |
2.7 用セキュリティ警告 |
OpenBSD は、強いセキュリティを重視しています。われわれの目標は、セキュリティについては業界ナンバーワンになることです(もうすでにナンバーワンという説はありますが)。オープンなソフト開発モデルのおかげで、われわれはSun, SGI, IBM, HPなどのベンダーにできるよりも、セキュリティ強化について妥協のない立場をとることができます。さらに、ベンダーたちならやらないような変更だって加えます。さらに OpenBSD は 各種の暗号つきで出荷されているので、セキュリティ問題への対応にも暗号を使った手段が講じられるわけです。
BUGTRAQ メーリングリスト読者のみなさんと同じように、われわれはセキュリティ問題は完全に公開すべきだと信じています。オペレーティングシステムの分野では、この考え方をとりいれたのは、われわれがたぶん最初です。多くのベンダーは、フリーソフトのベンダーでさえ、いまだに問題があってもそれをユーザから隠そうとします。
セキュリティ情報は、クラッカーの世界ではものすごい勢いで広まります。一方、われわれの経験によれば、きちんとしたセキュリティのフィックスをコーディングしてリリースするには、平均で 30 分ほどの作業ですみます――つまり、フィックスの出荷までは、きわめて短時間でできます。だから、完全なディスクロージャーは、セキュリティについて本当に気にかける人の役にたつとわれわれは考えるわけです。
われわれのセキュリティ監査チームは、だいたい 6人から12 人程度のメンバーで構成されて、たえず新しいセキュリティホールを見つけてはふさいでいます。われわれは 1996 年夏以来、この監査を続けてきました。セキュリティを高めるためにわれわれがしたがうプロセスは、単純に重要なソフトウェアコンポーネントについてすべて、ファイルを一つずつ総合的に分析していくことです。われわれが探しているのは、セキュリティホールというよりはむしろ、基本的なソフトのバグです。そしてもし何年もたってからだれかが、この問題はセキュリティ上の問題でもあったなぁ、と発見することがあったとしても、われわれがそれをただのバグだと思ってなおしていたのなら、それはそれで結構なことでしょう。システムのほとんどあらゆる部分に欠陥が見つかっています。この監査の過程で、新しいレベルのセキュリティ問題群が見つかったこともあるし、昔監査を行ったソースコードであっても、新発見の欠陥を念頭に、監査しなおさなくてはならないことも多いのです。コードは何度も監査され、監査する人も複数で、監査技能もちがっています。
セキュリティ監査チームのメンバーの中には、Secure Networks 社で働いていた者もいます。この会社は、業界の先駆的なネットワークセキュリティスキャン用ソフトパッケージ Ballista をつくったところです。(Secure Networks 社はその後 Network Associates 社に買収されて、Ballista は Cybercop Scanner と改名されて、まあうんぬんかんぬん...)Secure Networks 社はセキュリティ関連の研究をいろいろやっていたので、 OpenBSD のスタンスともぴったりあったわけです。OpenBSD は Ballista のテストをしょっぱなから楽々突破したものでした。
われわれのセキュリティ監査プロセスの別の面は、その積極性です。多くの場合、あるセキュリティホールが悪用可能かどうかを判断する必要はない、ということにわれわれは気がつきました。監査プロセスを続ける中で、われわれはいろんなバグを見つけます。そして、それを悪用できることが証明されていなくても、それをなおそうとします。バグをなおして、ほかになおすバグをさがしにいくわけです。簡単ですぐにわかるような、そそっかしいプログラミング上のエラーをコードの中にたくさん見つけますが、数ヶ月して、その問題が実は悪用可能だったということが発見されるわけです。(あるいはもっとよくあるパターンは、BUGTRAQ
のだれかが、ほかのオペレーティングシステムが「新発見の問題」による危険にさらされている、という報告をして、でも OpenBSD ではそれが前のリリースで修正ずみだったというのがわかる、というものです)。ほかの場合だと、中間段階のどれかをなおしてあったがために、複雑な多段階攻撃で完全な攻撃にさらされずにすんだ、ということもあります。われわれがこういう成功をおさめた一例としては、Secure Networks が出した、lpd についての問題があります。
この積極的な監査プロセスは、十分にその報いがあるものでした。BUGTRAQのようなセキュリティ関連フォーラムでは「この問題は OpenBSD では半年前に解決済みです」というような発言は日常茶飯になっています。
セキュリティ監査がいちばん重点的に行われたのは、 OpenBSD 2.0 リリース直前と、2.0->2.1 への移行期でした。これは1996 年最後の四ヶ月ほどと、1997 年前半です。何千もの(はい、何千、です)セキュリティ問題が、この一年ほどの期間にわたり急速に修正されました。ふつうのバッファオーバーフローなどのバグ、プロトコル実装の弱点、情報収集、ファイルシステム競争などです。したがって出くわしたセキュリティ上の問題は、ほとんどが 2.1 リリース以前に修正され、それ以降、 2.2 リリースでなおす必要のある問題はぐっと減りました。もう昔ほど問題はたくさん見つかりません。よくある収益逓減の見本です。最近では、われわれが見つけてなおすセキュリティ上の問題は、以前よりものすごくマイナーでややこしいものになっています。それでも、われわれは監査にこだわり続けます。理由はいくつかあります:
監査プロセスはまだ終わっていません。ごらんのとおり、われわれは新しいセキュリティ上の欠陥を見つけてはなおし続けていきます。
OpenBSD の初心者ユーザが、一夜にしてセキュリティ専門家にならないですむように(ほかのベンダーはこれを期待しているようですが)、われわれはオペレーティングシステムを出荷するとき、デフォルトで高セキュリティモードにしておきます。あらゆる本質的でないサービスは停止させてあります。利用者・管理者がシステムに習熟してくれば、システムのデーモンやその他の部分を有効にしなくてはならないことがわかるでしょう。新しいサービスを有効にする方法を学ぶプロセスで、初心者も、セキュリティ上の問題点を学ぶ見込みが高いのです。
これは、ますます多くのシステムがNFSや mountd web サーバなど各種のサービスをデフォルトで有効にしてあるのとは、まったく対照的です。こうしたシステムは、ユーザが初めてインストールして数分のうちに、すぐさまセキュリティ上の問題をつくりだしてしまうのです。
そしてもちろん、OpenBSD プロジェクトはカナダベースですから、暗号をシステムに統合することができます。詳しくは、われわれが暗号で何をしたかを説明したページを見てください。
OpenBSD 2.7 セキュリティ警告
以下は OpenBSD 2.7 用の警告です――これらの問題はすべて、カレント版のOpenBSDでは解決済みです。当然ながら、OpenBSD 2.6 以下の警告はすべて、 OpenBSD 2.7では修正済みです。
- Aug 16, 2000: A format string vulnerability (localhost root) exists in xlock(1). (patch included)
- July 14, 2000: Various bugs found in X11 libraries have various side effects, almost completely denial of service in OpenBSD. (patch included)
- July 5, 2000: Just like pretty much all the other unix ftp daemons on the planet, ftpd had a remote root hole in it. Luckily, ftpd was not enabled by default. The problem exists if anonymous ftp is enabled. (patch included)
- July 5, 2000: Mopd, very rarely used, contained some buffer overflows. (patch included)
- June 28, 2000: libedit would check for a .editrc file in the current directory. Not known to be a real security issue, but a patch is available anyways. (patch included)
- June 24, 2000: A serious bug in dhclient(8) could allow strings from a malicious dhcp server to be executed in the shell as root. (patch included)
- June 9, 2000: A serious bug in isakmpd(8) policy handling wherein policy verification could be completely bypassed in isakmpd. (patch included)
- June 6, 2000: The non-default flag UseLogin in /etc/sshd_config is broken, should not be used, and results in security problems on other operating systems.
- May 26, 2000: The bridge(4) learning flag may be bypassed. (patch included)
- May 25, 2000: Improper use of ipf keep-state rules can result in firewall rules being bypassed. (patch included)
OpenBSD 2.6 セキュリティ警告
以下は OpenBSD 2.6 用の警告です――これらの問題はすべて、カレント版のOpenBSDでは解決済みです。当然ながら、OpenBSD 2.5 以下の警告はすべて、 OpenBSD 2.6では修正済みです。
- May 26, 2000: SYSV semaphore support contained an undocumented system call which could wedge semaphore-using processes from exiting. (patch included)
- May 25, 2000: Improper use of ipf keep-state rules can result in firewall rules being bypassed. (patch included)
- May 25, 2000: xlockmore has a bug which a localhost attacker can use to gain access to the encrypted root password hash (which is normally encoded using blowfish (see crypt(3)) (patch included).
- Jan 20, 2000: Systems running with procfs enabled and mounted are vulnerable to a very tricky exploit. procfs is not mounted by default. (patch included).
- Nov 9, 1999: Any user could change interface media configurations, resulting in a localhost denial of service attack. (patch included).
- Dec 2, 1999: A buffer overflow in the RSAREF code included in the USA version of libssl, is possibly exploitable in httpd, ssh, or isakmpd, if SSL/RSA features are enabled. (patch included).
Update: Turns out that this was not exploitable in any of the software included in OpenBSD 2.6.- Dec 4, 1999: Sendmail permitted any user to cause a aliases file wrap, thus exposing the system to a race where the aliases file did not exist. (patch included).
OpenBSD 2.5 セキュリティ警告
以下は OpenBSD 2.5 用の警告です――これらの問題はすべて、カレント版のOpenBSDでは解決済みです。当然ながら、OpenBSD 2.4 以下の警告はすべて、 OpenBSD 2.5では修正済みです。
- Aug 30, 1999: In cron(8), make sure argv[] is NULL terminated in the fake popen() and run sendmail as the user, not as root. (patch included).
- Aug 12, 1999: The procfs and fdescfs filesystems had an overrun in their handling of uio_offset in their readdir() routines. (These filesystems are not enabled by default). (patch included).
- Aug 9, 1999: Stop profiling (see profil(2)) when we execve() a new process. (patch included).
- Aug 6, 1999: Packets that should have been handled by IPsec may be transmitted as cleartext. PF_KEY SA expirations may leak kernel resources. (patch included).
- Aug 5, 1999: In /etc/rc, use mktemp(1) for motd re-writing and change the find(1) to use -execdir (patch included).
- Jul 30, 1999: Do not permit regular users to chflags(2) or fchflags(2) on character or block devices which they may currently be the owner of (patch included).
- Jul 27, 1999: Cause groff(1) to be invoked with the -S flag, when called by nroff(1) (patch included).
OpenBSD 2.4 セキュリティ警告
以下は OpenBSD 2.4 用の警告です――これらの問題はすべて、カレント版のOpenBSDでは解決済みです。当然ながら、OpenBSD 2.3 以下の警告はすべて、 OpenBSD 2.4では修正済みです。
- Mar 22, 1999: The nfds argument for poll(2) needs to be constrained, to avoid kvm starvation (patch included).
- Mar 21, 1999: A change in TSS handling stops another kernel crash case caused by the crashme program (patch included).
- Feb 25, 1999: An unbounded increment on the nlink value in FFS and EXT2FS filesystems can cause a system crash. (patch included).
- Feb 23, 1999: Yet another buffer overflow existed in ping(8). (patch included).
- Feb 19, 1999: ipintr() had a race in use of the ipq, which could permit an attacker to cause a crash. (patch included).
- Feb 17, 1999: A race condition in the kernel between accept(2) and select(2) could permit an attacker to hang sockets from remote. (patch included).
- Feb 17, 1999: IP fragment assembly can bog the machine excessively and cause problems. (patch included).
- Feb 12, 1999: i386 T_TRCTRAP handling and DDB interacted to possibly cause a crash. (patch included).
- Feb 11, 1999: TCP/IP RST handling was sloppy. (patch included).
- Nov 27, 1998: There is a remotely exploitable problem in bootpd(8). (patch included).
- Nov 19, 1998: There is a possibly locally exploitable problem relating to environment variables in termcap and curses. (patch included).
- Nov 13, 1998: There is a remote machine lockup bug in the TCP decoding kernel. (patch included).
OpenBSD 2.3 セキュリティ警告
以下は OpenBSD 2.3 用の警告です――これらの問題はすべて、カレント版のOpenBSDでは解決済みです。当然ながら、OpenBSD 2.2 以下の警告はすべて、 OpenBSD 2.3では修正済みです。
- Nov 27, 1998: There is a remotely exploitable problem in bootpd(8). (patch included).
- Nov 13, 1998: There is a remote machine lockup bug in the TCP decoding kernel. (patch included).
- Jul 2, 1998: setuid and setgid processes should not be executed with fd slots 0, 1, or 2 free. (patch included).
- August 31, 1998: A benign looking resolver buffer overflow bug was re-introduced accidentally (patches included).
- June 6, 1998: Further problems with the X libraries (patches included).
- June 4, 1998: on non-Intel i386 machines, any user can use pctr(4) to crash the machine.
- May 17, 1998: kill(2) of setuid/setgid target processes too permissive (4th revision patch included).
- May 11, 1998: mmap() permits partial bypassing of immutable and append-only file flags. (patch included).
- May 1, 1998: Buffer overflow in xterm and Xaw (CERT advisory VB-98.04) (patch included).
- May 5, 1998: Incorrect handling of IPSEC packets if IPSEC is enabled (patch included).
OpenBSD 2.2 セキュリティ警告
以下は OpenBSD 2.2 用の警告です。これらの問題はすべて、OpenBSD 2.3では解決済みです。一部の問題は、他のオペレーティングシステムにはまだ残っています (ここに挙げたパッチは OpenBSD 2.2 用のものです。OpenBSD 2.1では使えない場合があります)
- May 5, 1998: Incorrect handling of IPSEC packets if IPSEC is enabled (patch included).
- May 1, 1998: Buffer overflow in xterm and Xaw (CERT advisory VB-98.04) (patch included).
- Apr 22, 1998: Buffer overflow in uucpd (patch included).
- Apr 22, 1998: Buffer mismanagement in lprm (patch included).
- Mar 31, 1998: Overflow in ping -R (patch included).
- Mar 30, 1998: Overflow in named fake-iquery (patch included).
- Mar 2, 1998: Accidental NFS filesystem export (patch included).
- Feb 26, 1998: Read-write mmap() flaw. Revision 3 of the patch is available here
- Feb 19, 1998: Sourcerouted Packet Acceptance. A patch is available here.
- Feb 13, 1998: Setuid coredump & Ruserok() flaw (patch included).
- Feb 9, 1998: MIPS ld.so flaw (patch included).
- Dec 10, 1997: Intel P5 f00f lockup (patch included).
OpenBSD 2.1 セキュリティ警告
以下は OpenBSD 2.1 用の警告です。これらの問題はすべて、OpenBSD 2.2では解決済みです。一部の問題は、他のオペレーティングシステムにはまだ残っています (OpenBSD 2.1 を使っている人は、最新リリースにアップグレードするよう強く推奨します。ここに挙げたものは、いちばん重大なセキュリティ問題をなおすものだけだからです。特に OpenBSD 2.2 は、多数の localhost セキュリティ問題をなおしています。その多くは、パッチの提供が困難なやりかたで修正されています)
- Sep 15, 1997: Deviant Signals (patch included)
- Aug 2, 1997: Rfork() system call flaw (patch included)
- Jun 24, 1997: Procfs flaws (patch included)
OpenBSD 2.0セキュリティ警告
以下は OpenBSD 2.0 用の警告です。これらの問題はすべて、OpenBSD 2.1では解決済みです。一部の問題は、他のオペレーティングシステムにはまだ残っています (まだ OpenBSD 2.0 をお使いの方、ずいぶん昔からのご愛顧に感謝感激! でも新しいバージョンをインストールしないと、ずいぶんいろいろ見逃していることになりますよ!)
- April 22, 1997: Predictable IDs in the resolver (patch included)
- その他多数... だれか見つけられたら、教えてくださいな。ここに挙げます。
われわれはセキュリティについて積極的な立場をとりますから、たえず新しいセキュリティ上の問題を見つけては直しています。そういう問題がすべて広く報告されるわけではありません。前にも述べたように、その多くは悪用可能かどうかわからないからです。多くの単純なバグは、実は予想しなかったセキュリティ上の問題になっていたりします。そういう変更を、上のような形式で公開するだけの時間的な余裕がないのです。
したがって、最新のメジャーなOpenBSD リリース以降、カレントのソースコードにはマイナーなセキュリティ上のフィックスが含まれています。そういう問題は、影響が小さく、悪用できることも示されていないという保証を限定つきで行います。もしまちがいなくセキュリティ上の問題となる問題を見つけたら、パッチはきわめてすばやくここに登場します。
本当にセキュリティについて関心のある人は、いくつか打つ手があるでしょう:
新しいセキュリティ上の問題を見つけたら、以下にメールしてください:
deraadt@openbsd.org.
PGP でエンコードしたい場合には(でもこれは、プライバシーがすごく重要な場合だけにしてくださいね、めんどうですから)、このpgp キーを使ってください。
OpenBSD チームメンバーは、OpenBSD のセキュリティ関連の変更について、いろいろ論文を書いています。これら文書の postscript 版が以下で手に入ります。
www@openbsd.org 翻訳上の問題はhiyori13@alum.mit.edu
$OpenBSD: security.html,v 1.143 2000/08/24 21:25:16 provos Exp $