ploneのセキュリティについての概観

| 0件のコメント

早いもので Plone Advent Calendar 19日目でございます。

前回はPython, Zope, Ploneの脆弱性報告の数が少ないという話題を取り上げました。今日はその投稿で紹介した plone.org の Security overview of Plone の記事の前半部分を紹介します。

ここでは The Open Web Application Security Project (OWASP) の取り上げるセキュリティリスク上位10件のそれぞれについて、Ploneがどう対処しているかが書かれています。

※上のリンク先は最新の2010年のトップ10ですが、plone.orgの記事は2007年のサマリーを元に書かれているようです。(なんか微妙にずれてるんだけどね。ま、いいか)

すべて紹介するにはちょっと時間がたりないので、ここでは2010年のトップ10に対応するところを3つだけ選んで翻訳して紹介します。特にそんなつもりはなかったのですが書いているうちに翻訳がおもいっきり話し言葉になってしまいました。引用表記になっているのが翻訳部分です。

OWASP Top 10 for 2010 A1 – Injection : plone.org記事 A6:Injection Flaws

インジェクション(直訳すると注入、注射ですが)はウェブ経由で勝手な命令を実行させるようなことを指します。(ま、だいたいそんなところかと)
代表的なのがSQLインジェクション。SQL文の書き方に問題があると、アタッカーがwebアプリに無茶な要求を出せるようになり、これが脆弱性につながります。
Ploneがどう対処しているかというと、

PloneはデフォルトではSQLデータベースを使わないし、使う場合でも常に標準的なSQLコネクターを介してやり取りをするからインジェクションをしようとしても自動的に無効化されるよ。

ということです。

OWASP Top 10 for 2010 A2 – Cross-Site Scripting (XSS) : plone.org記事 A4:Cross Site Scripting

たとえば掲示板サイトは入力フォームに入れた書き込みをそのままページに表示しますが、このフォームにJavaScriptなどを書き込んで、それがそのまま表示ページで実行されちゃったら、アタッカーは好き勝手に悪さをするコードを仕込めちゃいます。これがクロスサイトスクリプティング(XSS)。
Ploneではこんな対処をしています。

Ploneには悪意のあるコードを入力させないための強力なフィルタ機能があるんだよね。<script> <embed> <object>といった危険なタグは取り除かれる切り取っちゃうし <form>関連タグは全部取り除いちゃうから HTTP POST リクエストの偽装もできないね。

コンテンツの削除みたいな「壊し系」の操作と、ロールやパーミッションといったアクセス権限の昇格処理については、適切な HTTP POST リクエストかどうかチェックしてる。通常のセキュリティチェックに加えてね。

ちょっとインフラ(訳注:ハードウェアではなくミドルウェアであるZopeのことと思われます)寄りの話をすると、Ploneのページ生成に使われるテンプレート言語のTALはデフォルトで全てのHTMLをクオート処理(訳注:ダブルクォーテーションで囲んでるってことだとおもわれます)してるけど、これもXSSを防ぐには有効なんだ。

OWASP Top 10 for 2010 A3 – Broken Authentication and Session Management : plone.org記事 A3: Broken Authentication and Session Management

認証とセッション管理ぶちこわし。いや、不適切な認証とセッション管理、ですね。

Ploneが認証に利用するパスワードはデータベース内ではSHA-1ハッシュアルゴリズムで保護されている。

Ploneの認証システムはモジュール化されているので、一般的なLDAPやSQLデータベースだけでなくGmailやOpenIDなどプラグインが提供されている認証システムならなんでも、そこに登録されたユーザーを認証することができる。

認証のあとは サーバー側に保管された秘密鍵とユーザーIDのSHA-1ハッシュ(HMAC-SHA-1)を使用してセッションを生成する。さらにセキュリティを強化したい場合は定期的に秘密鍵を更新することもできる。

注:Plone3以前ではセッションcookieにログイン名とパスワードを持たせるという安全度が低い方法が取られているので、 HTTPS で暗号化することを強く薦めたい。

ということでした。Ploneはセキュリティに大変気を配って設計されているということがわかる文章です。興味のある方はぜひ原文にもあたってください。

ところで、前回触れたCVE については、IPAのサイトに詳しく解説がありました。

「共通脆弱性識別子CVE概説」

ご参考まで。

さて、今年の Plone4 Advent Calendar 私のパートはこれでおしまい。いやいや時間がすぎるのは早いものです。明日は4日目に続いて矢崎さん(@yazaki_junichi)の登場です。

コメントを残す