June 2014

man pages 3.69 がリリースされたようです。
毎回関係者に連絡くれるMichaelえらいなー

今回のハイライトは execveのEAGAINエラーについての追記。

http://man7.org/linux/man-pages/man2/execve.2.html

で、EAGAINで検索するといいと思う。これは何をいっているかというと、典型的には以下のセキュリティーホールに
対処するための修正が kernel 3.1 で入ったということ。

・Linuxにおいてユーザーごとのプロセス数制限はRLIMIT_NPROCで表現される
・UIDはsetuidと(SUIDされた実行ファイルへの)execveによって変更されうる
・権限分離のため 1)SUIIDされた実行ファイルをexec、 2)特権を必要とする処理が終わったらすぐさまsetuidにて権限放棄 というプログラムが広く使われている
・3.0以前はexecveはRLIMIT_NPROC未チェック、setuidではチェックしてた
・ところが、世の中にはsetuidの返り値をチェックしてないあほなプログラムがたくさんある。そういうプログラムがRLIMIT_NPROC踏むように誘導すると、権限放棄が失敗したまま移行のすべての処理がrootで走り続けてしまうので、攻撃の起点につかうことが出来た
・たとえば sendmail は以前はsetuidのチェックがなくてセキュリティーホールを出している
https://sites.google.com/site/fullycapable/Home/thesendmailcapabilitiesissue (ただしこれはRLIMIT_NPROCではなく、capabilityの考慮不足)
・そもそも論に戻ると、権限が上がる方向のexecveが未チェックで、権限を捨てる方向のsetuidがチェックあり(失敗しうる)というの論理的におかしい。(Unix的にはrootはすべてOKなのは正しいが、ここでいってるのはセキュリティ的な筋論)
・なので、setuidでのチェックを削除して、execveでのチェックを追加する変更を3.1で加えた

そのとき、そのパッチ作成にかかわったKOSAKIという人が man も変えろとBugzilla起票してたのが、最近関係者レビューが終わってやっとこさ反映されたということです。
https://bugzilla.kernel.org/show_bug.cgi?id=42704

ちなみに、この挙動はNetBSDとも一致してるので、世の中のOSSでは問題ないことが確認済みだったりします。

ChangeLogの全文はこちら。
http://man7.org/linux/man-pages/changelog.html#release_3.69


PS さいきんSYSV IPCのデフォルトを無制限に変えたんだけど(従来はリミットが小さすぎて実用になってなかった)、まだmanには反映されてないみたいだ
このエントリーをはてなブックマークに追加

カンファレンス&勉強会 のべ4日
対外発表 2件
インタビュー 1件
初対面の人との会食、飲み会 のべ6件
旧知の友人との会食、飲み会 のべ14件
築地で寿司 2件
ラーメン 1件
うなぎ有名店 1件
健康診断 1件
運転免許更新 1件
墓参り 1件
ガールズ&パンツァー全話視聴 1件
まどマギ映画版視聴 1件
戦国鍋TVライブDVD 1件
Frozen視聴 1件
椿山荘宿泊 1日
姪っ子と初対面 1件
なぜかマクドに篭って仕事1日つぶす 1件
徹夜で資料作り 2日

合計14日


ううむ、意外と色々やってる。カンファレンスやら知らない人とあってる時間が長すぎるので
次回はもっとちゃんと、まったり時間を確保したい。
もう知らないうちに発表することになってたとか絶対繰り返さない。
このエントリーをはてなブックマークに追加

↑このページのトップヘ