Jump to content

2021-12 セキュリティについて/FAQ

From mediawiki.org
This page is a translated version of the page 2021-12 security release/FAQ and the translation is 81% complete.

MediaWikiにいくつか脆弱性が見つかりました。攻撃者がプライベートウィキの内容を盗み取り、編集権限を回避する可能性があります。 The main vector for this wiki-leak is using vulnerable actions on pages that are listed in $wgWhitelistRead and therefore publicly accessible. MediaWiki では、既定で $wgWhitelistRead のページで、「閲覧」操作のみが一般公開されるようになっています。 これらの問題は 1.35.5、1.36.3、及び1.37.1 で修正されています。tarball とパッチへのリンクについては、のお知らせ を参照してください。

問題は何ですか?

  • CVE-2021-44858:「元に戻す」機能 (action=edit&undo=##&undoafter=###) により、攻撃者は許可されていないにも関わらず、任意の版の内容を閲覧できました。これは「mcrundo」と「mcrrestore」の操作 (action=mcrundoaction=mcrrestore) でも見つかりました。
  • CVE-2021-45038:「巻き戻し」機能 (action=rollback) に特別に細工されたパラメータが渡される可能性があり、攻撃者がアクセス許可を持っているかどうかに関係なく、任意のページのコンテンツを表示できるようになりました。
  • CVE-2021-44857: "mcrundo"と"mcrrestore"のアクション (action=mcrundoaction=mcrrestore) にて、編集許可が正しくチェックされず、攻撃者が選択した任意のページの任意の版の内容を取得・保存できてしまいます。これは公開ウィキとプライベートウィキの両方のページに影響します。

パッチを適用する時間がありません。これを無効にするにはどうすれば?

LocalSettings.phpに以下を追加します。

$wgActions['mcrundo'] = false;
$wgActions['mcrrestore'] = false;

wikiがプライベート(ページ閲覧にログインが必要)なら、次も設定が必要です:

$wgWhitelistRead = [];
$wgWhitelistReadRegexp = [];

脆弱性のあるコードは完全に無効化されるでしょう。これらの変更は、パッチが利用できない、サポートが終了した MediaWiki バージョンの脆弱性にも有効です。

$wgWhitelistRead 使用後にログアウトしたユーザがヘルプテキストを含むメインページが閲覧できるようにするには、代わりにヘルプテキストを "ログイン必要" エラーで表示される、MediaWiki:Loginreqpagetext メッセージに移動してください。

自分にも影響あるの?

Lockdown Whitelist Pages のようなエクステンションを使用し、一部のページを一部ユーザーが閲覧できないようにしている場合も、同様に影響を受けるでしょう。

脆弱なバージョンとは?

MediaWiki の修正前のバージョン 1.23.0 以降 1.34.x までと、1.35.x、1.36.x、1.37.x (リンクの最初の見出しをご参照)は、私的ウィキの読み込み許可バイパスに関して脆弱です。(CVE-2021-44858、CVE-2021-45038、=private wiki read permissions bypasses)。

All MediaWiki versions since 1.32.0 until 1.34.x, and 1.35.x, 1.36.x, 1.37.x before the fixes (see the top section), are vulnerable to the editing permissions bypass (CVE-2021-44857).

長期的な解決策とは?

All actions except "view" now require an explicit "read" user right. This is similar to permission checks used in the Action and REST APIs. If further vulnerabilities are found in actions, they will at least not be exploitable by logged-out users on private wikis.

$wgWhitelistRead ページで実行可能であるべき操作は、新規の Action::needsReadRight() 関数を上書きできるはずです。

うちのウィキで誰かにそれを使われたかどうか判別するには?

Look for action=mcrundo or action=mcrrestore in your access logs. Unless you specifically enabled an extension that uses multi-content revisions, there is no legitimate use for these actions.

In addition, look for action=edit&undo=###&undoafter=### requests and check whether the revision IDs belong to a different title than the page being edited.

ロルバックのバグの場合は、"from" パラメータをテンプレートの参照読み込みに置き換えた action=rollback&from=... を探します(例:from={{:private page}})。

このバグに伴うデータ喪失は認識されておらず、攻撃者が書き込みアクションを実行していたとしても、通常の編集と同様、ページの履歴に記録されたはずです。

クレジット

この問題の発見者Dylsssさんには、特定して報告されたご苦労に大いに感謝申し上げます。 MediaWiki でバグを発見された場合の手順は、セキュリティバグの報告の方法に目を通してください。