Open main menu

Security issues with authorization extensions/ja

< Security issues with authorization extensions

MediaWiki は、CMS (コンテンツ管理システム) のため、または機密情報を保護するためには設計されていません。反対に、可能な限りオープンであるように設計されました。ですので、本質的にはフル機能、プライベートな内容の緻密な保護をサポートしていません。しかし、企業イントラネット内でのMediaWikiの利用数の急激な増加と多くのCMSに似た機能の統合によって、より堅牢なセキュリティが求められるようになっています。

セキュリティ拡張機能の作者を手助けするために、拡張機能をテストできるように拡張機能フィールドで見つかるセキュリティフローのこのリストが維持されています。Category:Page specific user rights extensionsにおいていくつかの拡張機能の中にはページへの読み込み/書き込み権限を要求するものがあり、現在これらの多くがリストに示されているフローのいくつかを提示してします。

セキュリティ拡張機能をテストするEdit

読み込みまたは書き込みアクセスを実装しようとする場合、読み込み/書き込み権限のないユーザとしてログインをして下記のテーブルのリストに示されたフローについて拡張機能を確認してください。コードを変更するために管理者として、テストをするためにアクセス権限のないユーザとしてログインとログアウトを繰り返すのはとても面倒なので、FirefoxとInternet Explorerといったそれぞれ独自のクッキーのセットを保存する異なるブラウザー間で実行することは良いアイディアです。Alternatively, you can use a normal browsing window in Firefox or Chrome and then start a new "private window" or "incognito" session to play the role of an anonymous user for testing. 管理者として通常のブラウザーでログインすることと、2番目のブラウザー/ウィンドウで"nobody"として同時にログインできます。

共通のセキュリティ拡張機能制限のテーブルEdit

機能/テスト 確認内容 コメント
インクルージョン/トランスクルージョン
  • {{:restricted article}}経由で制限されたページにアクセスできますか? 複数のレベルを使用する場合はどうなりますか(トランスクルージョンの範囲内でのトランスクルージョン)?
  • Can you access restricted pages via a transclusion to a redirection?
  • 編集プレビューモードでトランスクルージョンを使用してトランスクルージョンの制限を回避できますか?
これはMW 1.10、rev:19934で導入された$wgNonincludableNamespaces設定によってaddressされます。
先読み
  • Can you circumvent the restriction using editintro= or preload= URI parameters in edit mode?
Should be safe with extension using the UserCan hook, at least since 1.12 (maybe also earlier).
XML エクスポート (Special:Export)
  • 制限されたページの内容をエクスポートできるか?
userCanフックを使用する拡張機能のために、これはMW 1.10 rev:19935で修正されました。そのまえに、Special:Exportへのアクセスを無効にしなければなりません。
Atom/RSS フィード
  • 記事が配信されていますか? 差分または全文?
    2つのフィードが存在し、一つは最近の更新のための特別ページ、もう一つはページの履歴です。追加フィードは拡張機能によって提供されます。
userCanフックを使用する拡張機能のために、これはMW 1.10、rev:19944で修正されました。その前にニュースフィードを無効にしなければなりません。Before that, news feeds have to be disabled (see Disable feeds). userCan is not honored in MW 1.14 and definitely earlier (SpecialRecentChanges*.php got moved)! RecentChanges pages lists edit comments.
リスト & 検索
  • 読み込めないページがSpecial:Searchページ上でリスト表示されるか? 引用が表示されるか? (bugzilla:8825もご覧ください)
  • 読み込めないページがSpecial:RecentchangesまたはSpecial:Allpages上にリスト表示されるか?
  • 読み込めないページが孤立したページなどの他の特別ページにリスト表示されるか?
  • if LuceneSearch is used, have you closed the 8123 and 8321 ports from global access?
userCanフックを使用する拡張機能のために、MW 1.10, rev:21821でこれが追加されました: 検索ページは読み込みできないページ(しかしタイトルをリスト表示します)から抜粋をより長く表示できます。This problem can be eliminated by using Extension:RemoveProtectedContent as well. For earlier versions of MediaWiki, searching must not be allowed for users that should not be able to read all pages. LuceneSearch and Extension:MWSearch create a public server that does not need any authentication (but you can easily create a command line interface to replace wgets, though needs patches)
差分 & リビジョンリンク
  • ページの差分への直接のリンクは制限されたページからのテキストを表示するために使用できますか? リビジョンIDを操作することで制限が解除されたリビジョンと制限されたページのリビジョンの差分はどうですか?
  • 読めないページを読むために古いバージョンへのパーマネントリンク(リビジョンリンク)を使用できますか? URLを操作することで、リビジョンIDを持つリンクがタイトルを参照するものとは異なっているものに所属していますか?
userCanフックを使用する拡張機能のために、MediaWikiの最近のバージョンでこれはOKです。
API
  • Can the revids parameter for action=query be used to fetch revisions that should be hidden?
不明
アクションリンク
  • あなたが読めないページを読むためにaction=rawまたはaction=renderオプションを使用できますか?
  • あなたが読めない印刷用バージョン(printable=yes)のページにアクセスできますか?
  • 編集ページへの直接リンクが制限されたページの内容を閲覧するために使用できますか?
userCanフックを使用する拡張機能のために、これはMediaWikiの最近のバージョンではOKです。
関連した権限
  • 読み込み権限がないユーザが新しいページを作成することを拡張機能が防止するか?
  • 読み込み権限はあるが書き込み権限のないページを移動またはリネームできるか?
  • 読み込み権限がないページのノートページを読めますか? 特別に許可されたのでなければ、書き込み権限がないページのノートページに書き込めますか?
If using userCan, this should be OK, but might need to write ArticleInsertComplete hook for creations and TitleMoveComplete hook for moves that call userCan to 'copy' permissions.
作者のバックドア
  • 拡張機能の中にはアクセス制限を無視して常にオリジナルの著者のページにアクセスすることを許可するものがあります。
キャッシング
  • $wgEnableParserCache(デフォルトで有効)はユーザ間の記事をキャッシュします。
  • $wgEnableSidebarCache(デフォルトでは有効ではない)はサイドバーのために同じような機能を実行します。異なるページを異なるユーザに送れる場合、このキャッシングとは互換性がないかもしれません。
匿名ユーザへの記事のキャッシングを制限することで安全性を損なうことなく多くの匿名ユーザを持つサイト(Wikipediaなど)のためにパフォーマンスの恩恵を提供できます。
ファイル & 画像
  • 関連した記事への読み込みアクセス権限にもかかわらずファイルを直接ダウンロードできますか?
  • 関連記事への読み込み権限にかかわらず画像ファイルのサムネイルを直接ダウンロードできますか?
  • 関連記事への書き込み権限にかかわらず画像をアップロードまたは削除できますか?
アップロードされたファイルは通常MediaWikiではなくウェブサーバによって提供されます。拡張機能のためにアクセスを防止することは簡単にできません。画像のためのアクセス制限に関するインストラクションはManual:Image Authorisation/jaをご覧ください(img_auth.php uses userCan since r52751)。
リダイレクト
  • If a user has permission to view a redirect but not the page it points to, are they still redirected?
  • If a user has permission to view a page but not a redirect that points to that page, can they access the page via the redirect?
節の編集
  • Can a user use the 'edit section' feature for a page, even though they can't edit the full page (either through the interface or by changing the URL)?
  • Can a user use the 'edit section' feature for pages they have been granted access to?
If the security relies on tags embedded in the page code then these tags will not necessarily be present in the text you are editing, even if they are present elsewhere on the page.
ページのウォッチ
  • Can a user watch a page he is not allowed to read?
  • Can the user unwatch a page he is not allowed to read?
  • Does the user still get notifications even if she was locked out?
Needs a WatchArticle hook that will call userCan.
他の拡張機能
  • Can a user use other extensions to view part of a page? Think of DynamicPageList or Semantic MediaWiki, which provide ways to query the database for certain pages or properties.
  • Does an extension display confidential page titles, like a recently-edited page gadget?

読み込み保護のシステムにおいておそらくもっと多くの"ホール"があります。ですので、読み込み権限を否定することは秘密の保証よりも"ここには何もありません、立ち去ってください"と見なされます。

English  • 日本語