tracker、bugtrackプラグインで編集認証を無視してページを作成できる†
- 元タイトル: tracker、bugtrackプラグインが編集認証に対応していない
- 元タイトル: PukiWiki(1.4.7)に編集制限をかけた任意のページにページを挿入できる脆弱性
- ページ: BugTrack
- 投稿者: 名無しさん
- 優先順位: 緊急
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-08-01 (水) 10:12:15
- バージョン: 1.47
- リリース予定バージョン: 1.5.2
メッセージ†
編集制限をしていない場合は、任意のページをいつでも作ることができるので
ここでは、特に脆弱性とはいわない。
【影響を受けるページ】†
PKWK_READONLY が0
かつ
付属のbugtrack.inc.php , tracker.inc.phpを残している
【除外】†
PKWK_READONLY が1のサイトは影響は受けない。
【問題のフォーム】†
フィード名 | フィールド値 |
mode | submit |
plugin | bugtrack |
base | 空欄以外の任意の文字 pagenameが存在しない場合base/番号になる |
pagename | 任意のページ名 |
以下は任意項目である
フィード名 | フィールド値 |
summary | |
priority | |
state | |
version | |
category | |
body | |
【再現方法】†
pukiwiki.ini.php を編集し、認証を加える
$edit_auth = 1;
$edit_auth_pages["/.*/"] = '';
次にアクセスして、編集認証がかかっていることを確認する。
<form method="POST" action="ここにURL">
<input type="submit" value="送信" ><br>
<input type="text" name="mode" size="20" value="submit"><br>
<input type="text" name="plugin" size="20" value="bugtrack"><br>
<input type="text" name="base" size="20" value="base"><br>
<input type="text" name="pagename" size="20" value="pagename"><br>
<input type="text" name="フィード名" size="20" value="フィールド値"><br>
</form>
修正されていない場合は、
フォーム送信するとページができ編集制限が機能していないことがわかるだろう。
・そのほか、Edit入力フォームのページ<プラグイン(#commentや#article,#insert)>
は、同様に、凍結されていても、Wikiコンテンツを書き込める脆弱性があるので注意されたい。
・また数MBの巨大フィールドを受け入れる、脆弱性も存在する
Dos攻撃の対象とならないよう注意されたい。
【原因】†
- 該当関数の_action関数で
check_editable関数を呼び出していないため。
- postサイズや中身を確認していないため
【対策】†
この問題についての、修正は2007.7 時点では出されていない。
PKWK_READONLYを
define('PKWK_READONLY', 1);
とすることで回避することをお勧めする。
phpの初級程度の知識があれば、該当プラグイン群を
1、2行の修正コードを挿入して、回避することも可能である。
コメント†
- 認証関係の話、何度もでてきますねぇ。BugTrack2/197に追加でよかった気も...。 -- ぃぉぃぉ
- lib/file.phpのpage_writeでチェックしてしまえばほとんどOKですね。PKWK_READONLYのチェックしているところでやっちゃえば。 -- ぃぉぃぉ
- commentとかも使えなくなるので、自分は「認証必要ページでも書き込みを許可するフラグ」を作って、使うプラグイン(comment等)でそのフラグを立てるようにして対応するかな。 -- ぃぉぃぉ
- 「凍結されていても、Wikiコンテンツを書き込める脆弱性」と書いてあるけど、書き込める「仕様」だったと思うんですが・・・ --
- お疲れ様です。本件をpostされた方はどうやら(1)「質問箱で」表にできない話題をどこですべきか尋ね (2) officialにページを2つ作成してそこに非常に茶化した文面を載せ (3) ここに荒っぽく煽りの効いた仰々しい文面を公開された ようですね。貴方が結果的に作られた状況は「脆弱性と自称する案件を、ある人が適切な段取りを踏まずに公開した(不適切なハンドリングを行った)結果、相当数の人が相当の期間混乱した」というもので、褒められた行動ではありません。どこで同じ事をやっても、乱暴者と呼ばれるでしょう。仮にも脆弱性と自称されるのであれば、やりとりの初動は(例えば)メールで行って下さい(どこで話をすべきか質問する必要なんてありません)。そして一段落するまで、慎重に行動する事を継続して下さい。 -- henoheno
- 脆弱性の疑いがあるかどうかについて: 状況として、本件は既に in the wild になっている(公開されており、確かに問題がある部分が含まれているなら、それは即座に悪用可能であるだろう)とみなさざるを得ません。また、本件は雑多な複数の情報から構築されているため、どうすべきか考えるよりも前に、不確かな情報を取り除いたり、分別する必要があります。 -- henoheno
- それで、この方がここで指摘されているポイントは「アカウントが無いとページが作れないように編集認証を設定したつもりでも、その領域にページを作成できる」という一点だけで合っていますでしょうか。 -- henoheno
- そうなのであれば、影響範囲は「編集認証用のアカウントが無ければ、特定の正規表現に合致するページが作成できない」という状況を編集認証によって表現しているPukiWikiです。 -- henoheno
- 内容は、編集認証によってページを作成させないことを期待しているページ名の領域(正規表現のパターン)に対して、bugtrackやtrackerの通常の機能を利用して、新規にページが作成できる、というものです。「挿入」という表現が使われていますが、既存のコンテンツに直接の影響を与えるというものではないでしょう。recent, rss などには ページ名が露出するでしょう。また場合によっては、#ls2 など、階層を意識したプラグインなどに間接的に影響を与える事ができるでしょう。 -- henoheno
- BugTrack2/75 脆弱性の取り扱いに関するまとめ --
- 本件の対策として、official:FrontPageに、すぐに公表すべきでないと考えられる欠陥に関する連絡先を明記しました。-- henoheno
- 対応しました commit:20becf2679 -- umorigu