xhnewbbのモデレータ権限についてのバグを取ろうとソースを追っていたら、newbb由来の大きなバグが次々と見つかりました。
- あるモデレータが、全フォーラムを編集できてしまう
- ロックトピックでも自由に投稿できてしまう
- プライベートフォーラムの中身をメンバー以外が自由に閲覧できてしまう
これは、いわゆる「脆弱性」とは違うのですが、*newbb*のアクセスコントロール機能に依存しているサイトでは問題となり得るでしょう。
他にも数多くのバグがみつかったのですが、一応、xhnewbbでは頑張って一通り修正しました。
http://www.peak.ne.jp/xoops/md/mydownloads/singlefile.php?lid=68
ただ、要修正箇所があまりにも広範囲であったため、エンバグしている可能性もあります。一応このサイトも1.17に上げて、しばらく運用してみます。
今回私が見つけた一連の不具合は、*newbb*のアクセスコントロール機能を使っていなければ問題ありませんので、あわててバージョンアップなどを行う必要はないかもしれません。
なお、newbb をベースとした各種モジュールがこれらの不具合に気づいている可能性は低く、いわゆるnewbb系のモジュールの作者は、一応チェックしておいた方が良いでしょう。
あなたがプログラマーなら、このバグの原因にはビックリさせられるでしょう。
newbbの構造は、
forum - topic_id - post_id
となっていて、投稿などの権限チェックは、forum単位で行われます。
ところが、newbbでは、そのforumを、リクエスト変数から取得しているのです。だから、権限で守られているpost_idやtopic_idについても、守られていないforumをリクエストすれば、守られていないforumと同じ権限が得られるわけです。
topic_idやpost_idが指定されている以上、forum番号は冗長情報であることは明らかで、それを無視するというのは、プログラミングの初歩の初歩だと思うのですが…
こんな初歩的なミスが誰からの指摘も受けずに放置され、多数のサイトで運用されてきた「標準モジュール」。
「目玉の数」がいかにあてにならないかの証明でもあるでしょう