OpenBSDのセキュリティのページの拙訳です。
※私家訳から抜き出してきたため、一部リンクが機能していないことがあります。
以下、試訳本文:
OpenBSD セキュリティ
個々のリリースについてのセキュリティ勧告については、以下をクリック:
[訳註:省略]
目標
OpenBSDは強力なセキュリティを信奉しています。
私達の希求は、セキュリティにかけて、(まだそこにいなければ)業界の首位に立つことです。
私達のオープンソフトウェア開発モデルにより、セキュリティ強化に向けた、ほとんどの供給元ができるよりも妥協のない視野を持つことが許されます。
供給元がしないであろう変更を下せます。
また、OpenBSDは暗号つきで輸出されているため、セキュリティの問題を直すことに対し、暗号学的な手法を取れるのです。
完全な開示
BUGTRAQメーリングリストの多くの読者と同様、私達はセキュリティの問題の完全な開示を信奉しています。
オペレーティングシステムの分野では、私達はおそらくその概念を取り込んだ嚆矢でしょう。
多くの供給元は、自由ソフトウェアであれ、いまだに問題を利用者から隠そうとしています。
セキュリティの情報はクラッカー界ではとても速く広まります。
他方で、私達の経験からすると、適切なセキュリティの修正をコード化しリリースするには約1時間の作業を要します――とても速い修正の往復時間が可能なのです。
したがって、完全な開示はセキュリティについて本当に気にかけている人々の役に立つと考えます。
監査の過程
私達のセキュリティ監査チームには概して6人から12人の間の成員がおり、新しいセキュリティホールを探して直し続けています。
1996年の夏から監査してきました。
セキュリティを高めるべく従っている過程は、すべての致命的なソフトウェア構成要素の、逐一のファイルの単純に網羅的な分析です。
セキュリティホールを探しているというよりむしろ、基礎的なソフトウェアの不具合を探しているのですが、もし何年も後に誰かが、かつてセキュリティであった問題を発見し、それが単なる不具合であったために私達が修正していたのなら、それは、その方がずっとよいでしょう。
欠陥はシステムのほぼすべての領域に見つかってきました。
まったくもって新しい等級のセキュリティの問題が監査中に見つかってきましたし、しばしば、早期に監査済みのソースコードを、これらの新しい欠陥を念頭に再監査する必要があります。
コードはよく複数回にわたり、また複数人によって監査され、それぞれに様々な監査の技能があります。
セキュリティ監査チームの成員にはSecure
Networksに勤める者もありましたが、その企業は業界筆頭のネットワークスキャンのソフトウェアパッケージであるBallistaを作ったところです(Secure
NetworksはNetwork Associatesに買収され、BallistaはCybercop
Scannerへ改名され、云々)。
その企業は多くのセキュリティの研究をしましたし、したがってOpenBSDの姿勢とよく合っていました。
OpenBSDはBallistaの検査を、旌旗堂々、初日から通りました。
私達のセキュリティ監査の過程の別の面は、その先制性です。
ほとんどの場合で、悪用可能性の判断は問題ではないということに気付きました。
進行中の監査の過程のさなかに、多くの不具合を見つけ、その悪用可能性が証明されていないにしても、修正に邁進するのです。
不具合を修正し、そして修正すべき他の不具合を見つけにいきます。
コード中の多くの単純で明らかな不注意によるプログラミングの誤りを修正してきましたが、ほんの数箇月後にその問題が実は悪用可能であったと発見されるのです(あるいは、もっとよくあることとして、BUGTRAQの誰かが、他のオペレーティングシステムが“新しく発見された問題”に脆弱であったと報告し、そしてそれから、OpenBSDが以前のリリースで修正済みであったことを発見するものです)。
その他の場合、複雑な段階的な攻撃の完全な悪用可能性から守ってきましたが、これは中間の工程のうちいずれかを修正してあったからです。
そうした成功を収めた一例はSecure Networksが出したlpdの勧告です。
新技術
ソースコードの監査をするうちに、私達はよく、問題を解く新しいやり方を発明します。
時々こうした発想は、どこかしらで書かれるそのへんのアプリケーションで、以前に使われてきたものもあるでしょうが、ひょっとすると私達がしているような程度ほどではないかもしれません。
- strlcpy()とstrlcat()
- 記憶領域の保護の純化
- W^X
- .rodata切片
- 防護ページ
- 乱択化されたmalloc()
- 乱択化されたmmap()
- atexit()とstdioの保護
- 権限の分離
- 権限の撤回
- Chrootジェイル
- 新しいuid
- ProPolice
- ……およびその他のもの
報酬
私達の先制的な監査の過程は実際に報われてきました。
“この問題はOpenBSDで約6箇月前に修正されていました”のような発言は、BUGTRAQのようなセキュリティフォーラムでは茶飯事になっています。
私達のセキュリティ監査が熾烈を極めたのは、OpenBSD
2.0のリリースの直前と2.0→2.1への移行で起こり、1996年の最後の3分の1の部分と1997年の前半にわたりました。
数千もの(ええ、数千です)セキュリティの問題が、この1年ほどにわたる期間で、急速に直されました。
不具合は、標準的なバッファの溢れ、プロトコル実装の弱点、情報収集、そしてファイルシステムの競合といったものです。
ゆえに、遭遇したほとんどのセキュリティの問題は2.1リリースの前に直され、それから2.2リリースで直すのに必要な数はずっと少ないものでした。
もはやさほど多くの問題は見当たりませんが、それは単純に収穫逓減の一例です。
最近、私達が見つけて直すセキュリティの問題は、著しくより不明確かより込み入ったものとなりがちです。
それでもこだわり続けることには、数々の理由があります。
- 時折、以前見落とした単純な問題を見つけるため、あーもー!
- セキュリティは軍拡競争のようなものであるため、つまり最高の攻撃者達はより込み入った悪用を探索し続けているため、私達もそうするのです。
- 込み入ったソフトウェアの微細な欠陥を見つけて直すことはとても楽しいため。
監査の過程はまだ終わっておらず、見ての通り新しいセキュリティの欠陥を見つけては直し続けています。
“既定で安全”
OpenBSDの新米の利用者が、一夜にしてセキュリティの専門家になる(他の供給元が持っていると思われる意見ではそのようです)、という必要はないということを確証するため、オペレーティングシステムを「既定で安全」なモードで出荷しています。
すべての必須でないサービスは無効化されています。
利用者/管理者がよりシステムに馴染みを深めるにつれ、デーモンや他のシステムの部分を有効にしなければならないと発見するでしょう。
新しいサービスをどう有効にするかを学ぶ過程においてこそ、新米はきっとセキュリティの考慮事項を学ぶことでしょう。
これがくっきりと対照をなすのは、ますます多くのシステムが、NFS、mountd、ウェブサーバ、そして様々な他のサービスを、既定で有効にしていることで、ために、初回のインストール後の数分のうちに、利用者に対して即座のセキュリティの問題を生み出してしまっています。
暗号
そしてもちろん、OpenBSDプロジェクトはカナダに拠点を置いているため、暗号を統合することが可能となっています。
より詳しい情報については、暗号に関して何をしてきたかを概説するページをお読みください。
勧告
本ページの最上部のリンクをご参照ください。
私達のする変更を見る
私達はセキュリティに先制的な姿勢を取っているため、継続的に新しいセキュリティの問題を見つけては直しているところです。
こうした問題のすべてが広く報告されるとは限らないのは、(前に述べたように)その多くが悪用できるものと確定していないからです。
私達が直す多くの単純な不具合は、私達が予測だにできなかったセキュリティの帰結をはらむものと判明するのです。
こうした変更を上述の形式で利用できるものにする時間の余裕はありません。
したがって通常、直前の大規模なOpenBSDのリリースの以後に、現在のソースコードにおける小規模なセキュリティの修正があります。
私達は、こうした問題に最小限の影響と証明されていない悪用可能性があるという限られた保証をします。
その問題が決定的にセキュリティ上重大であることを発見すれば、パッチはこちらにきわめて速やかに現れます。
セキュリティへ本当に関心のある人ができることは数多あります。
-
セキュリティの問題を理解できるなら、source-changesのメーリングリストを注視し、セキュリティに関連すると見られる事柄に目を光らせておいてください。
悪用可能性は私達のする修正の多くで証明されていないため、関係のあるコミット伝文で“セキュリティ修正!”と書かれていると期待しないでください。
問題が証明され深刻であれば、パッチはそのほんのすぐ後にこちらで利用できるようになります。 -
現在のソースコード木を追随し、ときたま完全なシステムの構築をする仕方を独習してください(/usr/src/Makefileを熟読してください)。
利用者は、現在のソース木には常にその前のリリースより強力なセキュリティがあると推定して構いません。
しかしながら、ソースコードから自前のシステムを構築することは、並大抵のことではありません。
850MB越えのソースコードであり、主要なリリース間を移行する中で問題は起こるものです。 -
手元のアーキテクチャ向けのバイナリスナップショットをインストールしてください。
これは結構頻繁に利用できるようになっています。
例えばamd64のスナップショットは、通例では日次で利用できるようになっています。
問題の報告
新しいセキュリティの問題を見つけたら、security@openbsd.orgにメールして構いません。
PGP暗号化をご希望であれば(ただし、機密性が非常に差し迫っているときだけにするようお願いします、不便ですから)、こちらのpgpキーを使ってください。
さらに読んで知るには
数多くの論文がOpenBSDチームの成員により書かれ、多くがセキュリティに絞ったものです。