
変更履歴
このドキュメントでは最も重要な変更点や目につく変更点を簡潔に説明しています。変更履歴の詳細なリストは、ChangeLogをご覧ください。docs/changed-filesには、前回リリース以来変更されたファイルの一覧があります。
このリリースは管理者のコンフィギュレーションパネルのXSSを修正しています。このXSSの問題はYGN Ethical Hacker GroupのAung Khant氏から報告がありました。
新機能と改善点
- 静的ページのコンテンツを他の静的ページのテンプレートに設定できるようにしました。
- テーマに対して、ブロックの開始と終了で、独自の表示関数を用意しました。
- テンマの変更点も参照してください。
バグフィックス
- Geeklog 1.7.0において、プラグインへのコメント投稿でタイプエラーがありました。
そのため、該当プラグインのコメントとして認識されませんでした。
- サイトのアドバンストエディタのモードを不可にした場合も、ユーザ毎のモードを残しました。
- マイアカウントの"Show & Hide Boxes"を修正しました。
- ブロック内の中括弧がエスケープされてしまってたとえばJavaScript codeが動作しなくなる問題があり、Geeklog 1.7.0での変更を戻しました。
- 1.7.0 で
COM_refresh()
の際にContent-Type headerを送るようにするとコンフリクトする ので元に戻しました。(例 Forum)
新機能と改善点
- Geeklogは、新たに PostgreSQL データベースをサポートします。この機能は Google Summer of Code 2009で、Stan Palatnik により開発されました。
- セキュリティートークン (CSRFプロテクション) が期限切れになったとき、ユーザは再認証できます。
再認証で成功すれば、編集内容を失うことなく操作を継続できます。
- Rootユーザにだけ選択が許可されていたHTML フィルターのスキップは、アクセス権として独立しました。
- デフォルトグループが追加されました。新規ユーザは、デフォルトグループに最初から属します。
- プラグインのコメントが、新着ブロックとユーザのプロファイルに表示できるようになりました。(新しいPlugin API 関数 - プラグインの変更が必要)。
- 認証が必要なページの表示には、ログインフォームが表示されます。
- アドバンストエディタが有効なサイトでは、ユーザがマイアカウントの設定で有効にするか無効にするか選べるようになりました。
- 記事コピーオプションが追加されました。(静的ページプラグインやカレンダープラグインのように)
- 新しく自動タグ
[user:]
が提供されました。ユーザプロファイルへのリンクができます。
その他の変更
- Security: 自動ログイン機能の辞書攻撃による脆弱性を修正しました。
この是弱性は元々、Nine SituationsグループのBookoo氏から報告されたものです。
- GeeklogのPHPとMySQLのシステム条件は、 PHP 4.4.0
と MySQL 4.0.18に引き上げられました。
- FCKeditor 2.6.6 にアップグレードして同梱しました。
- theme changesも参照してください。
このリリースもまたGoogle Summer of Code 2010の学生たちのたくさんのパッチと開発を含んでいます。ありがとうございます!
このリリースは管理者のコンフィギュレーションパネルのXSSを修正しています。このXSSの問題はYGN Ethical Hacker GroupのAung Khant氏から報告がありました。
このリリースは自動ログイン機能の辞書攻撃による脆弱性を修正しています。この是弱性は元々、Nine SituationsグループのBookoo氏から報告がありました。
新機能と改善点
- メインページ、記事、話題、静的ページ、アンケートに<meta name="description">タグと<meta name="keywors">タグを指定できるようになりました。検索エンジンの中には、これらのメタタグを使用しないものもあります。
- (「該当する話題にのみ表示する」が指定された記事に関しては)話題ごとに注目記事を1つずつ指定できるようになりました。
- 記事の中など自動タグが使用できるところならどこにでもアンケートを埋め込めるようになりました。
- インストールスクリプトの移行オプションを既存のデータベースにも適用できるようになりました(つまり、URLやパスを設定し直すためにダンプしたデータベースを読み込む必要はありません。)。
- データベースバックアップの管理者パネルで、データベースを最適化し、テーブルをInnoDBに変換するオプションがサポートされました(MySQLのみ)。
- タイムゾーンのサポートを改善して、ユーザは独自のタイムゾーンを実際に設定できるようになりました。
- 小規模なセキュリティの強化:
- (セッションのクッキーのような)「重要な」クッキーは、今後はHttpOnlyフラグをセットして作成されるようになりました。これにより、このフラグをサポートしたブラウザで、ある種のXSS(クロスサイト・スクリプティング)攻撃の防止できるでしょう。
- テンプレートのエラーは、そのテンプレートのパスを見せてしまう代わりに、標準のエラーハンドラを呼び出すようになりました。
- Spam-Xのいくつかのクラスのファイルで、直接アクセスする(訳注: 実際に動作していなかった)防止の処理を修正しました。
テーマの変更の一覧も併せてご覧下さい。
バグ修正
- 一定の期日が経過した後で、自動的に記事に対するコメントの受付を終了する機能のバグを修正しました。このバグのためにコメントの受付が終了した記事で再びコメントを受け付けるようにするには、次のSQLコマンドを使用します:
UPDATE gl_stories SET commentcode = 0, comment_expire = 0 WHERE commentcode = 1;
- コメントの投稿間隔制限が無視されていました。
- 他のグループに登録できないというグループ・エディタのバグを修正しました。(この問題はGeeklog 1.6.0にだけ存在しました。)
- 検索におけるいくつかの調整とマイナーな修正を行いました。 (PHP 4コンパチビリティなど)
- Geeklog 1.6.0(新規インストールのみ)では、静的ページプラグインの管理者グループが間違った名前になっていました。.
このリリースでは以下のセキュリティ対策を行いました:
- 不法に任意のファイルをFCKeditorを介してアップロード可能でした。
アップロードされるファイルはFCKeditorのフィルターを通過しなければならないため、スクリプトをアップロードすることは不可能でした。(従って、Geeklogのサイトとしての整合性が壊されるといった危険性はありませんでした。)
しかしながら、マルウェアの置き場として使用されていたという報告がありました。
今回のアップデートではFCKeditorを無効としているか、ゲストユーザの場合にはアップロードの機能を使用できないようにしました。
また、アーカイブ形式のファイルのアップロードも許可しません。
さらに、FCKeditorを使ってファイルをアップロードするには、何らかの「編集」の権限が必要です。(これは一時的な対応です。将来のGeeklogのバージョンでは「アップロード」という独立した権限を採用する予定です)。
その他の修正:
- InnoDBテーブルを使用してインストールする時の問題を修正しました。
- 記事のコメントコードのフィールドを自動更新するときの(悪用されることのない)SQLエラーを修正しました。
- リンクプラグイン(links)に含まれる間違った関数名を修正しました。
このリリースでは以下のセキュリティ対策を行いました:
- Gerendi Sandor Attila氏から、メール送信および記事を友人にメールで送るメールフォームにXSSが存在すると報告がありました。
- 記事を知人にメールで送信する機能が記事のパーミッションを無視していました。
このため、閲覧できない記事までメールで送信可能でした。
その他:
- 記事投稿キューがOFFな状態で、記事を投稿するときのSQLエラーを修正しました。
- 存在しない
COM_outputMessageAndAbort
関数を呼び出していた問題を修正しました。
Summer of Codeの成果
このリリースには、Google Summer of Code 2008の間に実装されたコードを取り込んでいます:
- サイト移行のサポートとより簡単なプラグインのインストール (開発者: Matt West氏)
- 検索機能の改善 (開発者: Sami Barakat氏)
- コメントの承認と編集の機能 (開発者: Jared Wenerd氏)
その他の変更
- Geeklogは現在PHP 4.3.0以降をサポートしていますが、PHP開発チームは2008年8月にはPHP 4のサポートを終了しています。PHP 4でGeeklogを活用しているユーザは、できるだけはやくPHP 5へのアップグレードを検討してください。
- FCKeditorを2.6.4.1を同梱しました。
- 新しいプラグイン「XMLSitemap」を同梱しました。このプラグインは、すべての主要な検索エンジンがサポートしているXMLのサイトマップ・ファイルを自動生成します。プラグインはmystral-kk氏※により開発されました。
(※訳者註:Geeklog Japaneseコア開発者です。)
- いくつかの新しいプラグインAPIの機能が追加されて、既存のプラグインAPIも拡張されてました。
- 他の言語に翻訳できるように、含めているドキュメントの場所をdocs/englishに移動しました。Geeklogの中のドキュメントへのリンクは自動的に、そのときに利用している言語に応じたリンクとなります。(適切な翻訳がみつからなければ、英語のドキュメントを表示します。)
- 新しい機能のサポートとレイアウトの不整合を修正するために、様々なテーマの変更を行いました。
今回のリリースには、Google Summer of Code 2009に参加した学生諸氏のパッチや開発が数多く含まれています。ありがとうございます!
このリリースは自動ログイン機能の辞書攻撃による脆弱性を修正しています。この是弱性は元々、Nine SituationsグループのBookoo氏から報告がありました。
このリリースで以下のセキュリティ対策を行いました:
- Gerendi Sandor Attila氏から、メール送信および記事を友人にメールで送るメールフォームにXSSが存在すると報告がありました。
- 記事を知人にメールで送信する機能が記事のパーミッションを無視していました。
このため、閲覧できない記事までメールで送信可能でした。
Nine Situationsグループの Bookoo氏から、usersettings.php の古いバグが対象となる、さらに別のSQLインジェクションの脆弱性の報告がありました。前回の問題と同様に、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Nine Situations グループの Bookoo氏から、また別のSQLインジェクションの脆弱性が webservices API に存在すると報告がありました。前回の問題と同様に、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Nine Situations グループの Bookoo氏から、glFusion に対してSQLインジェクションの脆弱性の報告がありましたが、これに Geeklog も該当していました。この問題によって、攻撃者は任意のアカウントのパスワードのハッシュ値を取得可能でしたが、このリリースで問題を修正しました。
Fernando Munoz氏から、管理者用問い合わせのフォームにXSSの可能性があると報告がありました。このリリースでは、その問題を修正しました。
バグ修正
- IDが重複した記事のプレビューを行うと、記事内容が失われるバグを修正しました。
- 記事のプレビュー時にタイトルに余分なバックスラッシュ(日本語版では\)が表示されるバグを修正しました。
- トラックバックエディタのテンプレートにセキュリティトークンがないため、きちんと動作していなかったバグを修正しました。
- プレーンテキストで投稿する際に、URLがリンクに変換されない場合がありましたが、このバグを修正しました。
- 話題のパーミッションの変更など、フィードを更新する際に生じる様々な問題に対処しました。
同梱しているプラグインのバグ修正
- カレンダ(Calendar): 個人カレンダに新規イベントを追加できなかったバグを修正しました。
- リンク(Links): リンクIDを既存のものに変えると、元から存在していたリンクを上書きしてしまうバグを修正しました。
- アンケート(Polls): アンケートIDを変えると、新しいアンケートが作成されるバグを修正しました。また、アンケートの質問にシングルクォートが含まれているとSQLエラーが発生するバグを修正しました。
- 静的ページ(Static Pages): 静的ページを保存するとオーナーが保存を行った人に変わるバグを修正しました。
他のバグ修正
- アップロードされる画像をgdlibを用いて拡大・縮小を行う際の画質を向上させました。
- テーマの変更点はいつも通り、テーマ作成に記述してあります。Geeklog-1.5シリーズの全テーマに適用すべきバグ修正が4箇所(そのうち1つはPollsプラグイン)あります。
Geeklog 1.5.1の大半はバグ修正リリースであり、Geeklog 1.5.0のユーザにはアップグレードをお勧めします。小さなものですが、いくつか機能追加もあります。
バグ修正
セキュリティ関連
- t0pP8uZzによると、FCKeditor用のアップロードスクリプトを直接呼び出すことで様々なメディアファイル(ただし、実行可能なスクリプトを除く)をアップロードすることが可能になっていました。
- Mark Evansによると、様々なインクルードファイルに施してある直接実行を防止する対策が、Microsoft Windowsなどの大文字・小文字を区別しないファイルシステムでは不十分でした。
- ドラフトフラグをセットしており公開日が未来の記事でも、記事IDを知っていれば、記事を閲覧することが可能になっていました。
- 記事IDを知っていれば、公開されていない記事でもコメントをつけることが可能になっていました。
- データベースのバックアップに失敗したときに、データベースのパスワードがerror.logに記録されないようになりました。
他のバグ修正
- すべての右ブロックが二度レンダリングされていたため、時間のロスになっていただけでなく、ChatterblockやShoutboxなどのアドオンに悪影響を与えていました。
- トラックバックのある記事につけられたコメントを削除できないようにしていた(CSRF対策用)セキュリティトークンの扱いを修正しました。
- ユーザ投稿承認、記事投稿、ドラフト記事リスト、MS SQLサポートに関してバグ修正を行いました。
同梱しているプラグインのバグ修正
- カレンダ: イベント予定のブロックで、当日のイベントの表示を(今度こそ...)修正しました。
- リンク: カテゴリを変更する際に発生するSQLエラーと、IDが重複する場合に新規カテゴリが既存カテゴリを黙って上書きするエラーを修正しました。
- 静的ページ: URLリライトを有効にしている際の印刷用ページを改善しました。
新機能と改善点
- FCKeditor 2.6.3を同梱しました。
- 多言語モードにしている場合に、ブロックも多言語化できるようになりました。
- 記事のカテゴリ用に専用のフィードがある場合、「...を購読する」というオプションを追加しました。
- 記事フィード用に「トップページに表示する記事すべて(All Frontpage Stories)」のオプションを追加しました。「該当する話題にのみ表示」の記事をフィードに含めないようにすることができます。
- コンフィギュレーションにおいて、たとえば誤ってあるオプションを「設定(restore)」した後で、元の状態に戻す(unset)ことができるようになりました。
- コンフィギュレーションで設定した値をsiteconfig.phpで上書きできるようになりました。
$_CONF['rootdebug']
オプションなどを設定するのに役に立つでしょう。
- リモート認証を行うユーザがWebサービスを利用できるようになりました(ユーザ名として、ユーザ名@サービス名 を使用する必要があります)。
注意: OpenIDユーザは認証方法に関する技術上の問題のため、Webサービスを利用できません。
- Webサービス(AtomPub)の互換性を高めました。
テーマの変更
1つだけ必須の変更があります: コンフィギュレーションの各項目用テンプレート(admin/config/config_element.thtml)を更新してください(Professionalテーマからコピーしてください)。今回のリリースで変更された他のファイルはすべてオプションです。詳細は、テーマの変更点をご覧ください。
Google Summer of Codeの成果をフィードバック
今回のリリースには、2007 Google Summer of Codeで実装された次のプロジェクトの成果を取り込んでいます。
- 新たな使いやすいインストールスクリプト(作者:Matt West)
- (config.phpを直接編集した従来の方式に代わる)新たな設定用GUI(作者:Aaron Blankstein)
- Atom Publishing ProtocolをベースとしたWebサービスAPI(作者:Ramnath R. Iyer)
上記以外の新機能や改善
- OpenIDサポート: OpenIDを使用したユーザのログインが可能になりました。Geeklogサイトにアカウントを新規作成しなくても、通常のユーザと同様の恩恵を受けられます。
- LDAPリモート認証モジュールを追加しました。
- リンク(links)プラグインで階層化されたサブカテゴリを持てるようになりました。
- FCKeditorをversion 2.6にアップグレード
- 記事処理用コードの書き直し。とりわけ、記事に含まれる特殊文字やHTMLエンティティの扱いに関する主要な問題が全て解消するはずです。また、(ブロックレベルの)
[code]
に対して、行レベルの[raw]
タグが新たにサポートされるようになりました。このタグを使うと、HTMLなどのコードをそのまま投稿する際、HTMLタグとして解釈されないようになります。
- コメントを閉じることができるようになりました。つまり、既存のコメントは表示されるが、新規コメントを投稿できないようにできます。
- アンケート(polls)プラグインでアンケートごとに複数の質問をできるようになりました。
- 静的ページ(static pages)プラグインでコメントをサポートするようになりました。
- データベースのバックアップ画面で、バックアップしたファイルを削除したり、ダウンロードできるようになりました。
- デフォルトのProfessionalテーマがHTML 4.01 Strict準拠になりました。また、XHTMLもサポートしています(XHTML準拠のテーマが必要です)。
セキュリティ
新機能
- Microsoft SQL Serverをサポート。今回のリリースより、GeeklogをMicrosoft SQL Serverにインストールできるようになりました。MySQLだけではなくなったのです。MS SQLサポートはRandy Kolenkoにより開発されました。Randy、ありがとう!
サードパーティによるプラグインがMicrosoft SQL Serverで動作するには、MS SQLをサポートする必要があります。同梱しているプラグイン(カレンダ、リンク、アンケート、Spam-X、静的ページ)は既にMS SQLをサポートするようアップグレード済みです。
- カレンダプラグイン: 以前は本体に組み込まれていたカレンダとイベント機能は今回からプラグインとして分離されました。Geeklog 1.4.0で実施されたアンケートとリンク機能に始まるプラグイン化の流れはこれで終了し、Geeklogのモジュール化が進みました。サイトに不要な機能を無効にしたり差し替えることが容易になっています。
- 多言語サポート(Multi-language support): Geeklogを用いて真の多言語サイトの構築が可能になりました。ナビゲーションだけでなくサイトのコンテンツもまた、言語を切り替えれば追随します。
- FCKeditor 2.3.1を同梱しました。画像をアップロードするファイルマネージャを再び同梱するようにしました。
- 古いないし活動していないユーザを一括削除する機能を追加。一度もログインしていないユーザやサイトを短期間しか使用していないユーザ、長期間ログインしていないユーザが自動的に検索され、一覧表示されます。期間の長さは変えることができ、検索されたユーザは個別に削除できます。
セキュリティ
Geeklog 1.4.0以前のバージョンで発見されたセキュリティの問題を考慮して、Geeklogのソースコードの見直しを行いました。今回のリリースでは、いくつか些細な問題を発見して対応し、セキュリティを高める対策をいくつか導入しています。嬉しい副作用として、いくつかのバグと不整合が見つかり、今回のリリースでは修正しています。
スパム防御
今回のリリースで、更新されていないMT-Blacklistのサポートを完全に廃止しました。代わりに、Russ Jonesがwww.linksleeve.orgで運営している Spam Link Verification (SLV)という手法を採用しています。SLVとは、いわばコミュニティが運営する、自動的に更新されるブラックリストです。詳細は、Spam-Xプラグインをご覧ください。
MustLiveが「友だちに記事をメールする」のフォームを利用したXSSの可能性を指摘しました。今回のリリースではこの問題に対応しています。
今回のリリースでは、Geeklog 1.4.0sr5で導入されたばかりのコメントのプレビューで生じる問題を修正しています。
JPCERT/CCより、コメントの扱いに関するクロスサイト・スクリプティングの可能性に関して通知がありました。今回のリリースではこの問題に対処しています。
"rgod"により、セキュアではない方法でインストールされたGeeklogとFCKeditorに含まれている"mcpuk"ファイルマネージャのバグが、以前の1.4.0系のリリースすべてに含まれていることが報告されました。
- public_htmlディレクトリの外にあるファイルの一部が直接実行される可能性がありました。これらのファイルがURL経由でアクセス可能なようにGeeklogがインストールされている場合(これは、インストール方法では全然お勧めしていない方法です)、リモートサーバから悪意のあるコードをアップロードして、実行するために利用される可能性がありました。
詳細は、いわゆるGeeklogの脆弱性投稿(So-called Geeklog "exploit" posted)をご覧ください。
今回のリリースでは、public_htmlディレクトリの外にあるファイルが直接実行されるのを防ぐ機能を追加しました。とはいえ、public_htmlディレクトリの外にあるファイルがURL経由でアクセス可能なようにGeeklogをインストールしているなら、修正することをお勧めします(詳細は、FAQをご覧くださいdetails)。
- (Geeklogのconfig.phpでFCKeditorを無効にしていても)、FCKeditorに統合されている"mcpuk"ファイルマネージャを使えば、任意のPHPコードをアップロードすることが可能になっていました。Webサーバの設定しだいでは、アップロードしたコードを実行することも可能でした。
詳細は、FCKeditorのmcpukファイルマネージャの脆弱性(Exploit for FCKeditor's mcpuk file manager)をご覧ください。
今回のリリースでは、該当ファイルマネージャは取り除かれています。したがって、FCKeditor経由で画像などのファイルをアップロードすることはできなくなっています。Geeklogの将来のバージョンでは、更新されたFCKeditorとファイルマネージャを同梱することになるでしょう。
注: 今回のリリースには、トラックバックスパムを防ぐために更新されたlib-trackback.phpも含まれています。
今回のリリースでは、以下のセキュリティ問題に対応しています。
- auth.inc.phpでのSQLインジェクションと認証迂回の可能性(the Security Science Researchers Institute Of Iranの報告による)。
- getimage.phpでのクロスサイト・スクリプティングの可能性(the Security Science Researchers Institute Of Iranの報告による)。
- getimage.phpと、たとえば、Professionalテーマなどのfunctions.phpによるパス漏洩(the Security Science Researchers Institute Of Iranの報告による)。
- 記事投稿の際のSQLインジェクションの可能性。
今回のリリースでは、以下のセキュリティ問題に対応しました。
- 誰でも任意のユーザとしてログインが可能になるセッションハンドリングのバグ(Konstantin Dyakoffの報告による)。
- ユーザプロフィールの場所(Location)フィールドでHTMLタグが除去されていなかった。
今回のリリースでは、以下のセキュリティ問題に対応しました。
- Geeklogのクッキーの扱いに起因するいくつかの問題(GulfTech Security ResearchのJames Bercegayによる報告)。SQLインジェクションや任意ファイルへのアクセス、任意のコードの埋め込み及び実行が可能になる脆弱性でした。
訳注:以下の和訳は、IvySOHOが公開していたGeeklog-1.4.0日本語版に付属するchanges.htmlを修正して使用しています。
(Geeklog 1.4.0 は、元は1.3.12ですので、バージョン1.3.12を参照した場合1.4.0に該当します。)
新機能
- Geeklogは現在公式には
register_globals = off
で動いていますが、まだいくつかのプラグインでは、register_globals = on
にしなくてはいけないことに注意してください。
- トラックバックやピングバックのコメントの送受信向けのサポートが追加されています。それぞれ記事ごとにサポートされていますが、プラグインがこの機能を使えるように新しいプラグインAPIもあります。トラックバックやピングバックはconfig.phpで機能を抑止することが可能です。
- サイトのアップデートを通知するために、ウェブログ・ディレクトリ・サービスblo.gsなど)に更新ピングを送る機能が追加されました。トラックバックやピングバックによって、この機能は記事ごとにサポートされていますが、プラグインもプラグインAIP経由でこの機能を利用することができます。
- Geeklogが読み取りと書き込みができるように、新しいフィード・フレームワークが、RSS1.0だけではなく、複数のフォーマット(現在はRSS、RDF、Atom)でフィードできるようになりました。
- 管理者によるユーザ状態の管理機能追加。アカウントの停止・アクティベーションを含む。
- Blogger.comやLiveJournal.comなどのような別のサービスのアカウントを持っている利用者が、サイトに直接登録しなくても自動的にログインできる新しい遠隔認証システムが追加されました(リモートアカウントは、通常アカウントとして禁止することもできます。)。
- 管理部分が改訂され、より見やすく分類されたリストとなっています。“コマンドとコントロール” (moderation.php) も新たなアイコンででき、管理部分ごとにアイコンがあります。さらに、管理ブロック、コマンド、コントロールはアルファベット順にソートできるようになりました。
- FCKeditor(WYSIWYGエディタ)が付いています。作動させるには、config.phpの
$_CONF['advanced_editor'] = true
に設定してください。
- 検索では、大きなデータベースを検索する際のタイムアウトを防ぐため、ページごとの検索結果を指定した件数だけ表示するようになりました。
注意:「ページ」検索をサポートするには、プラグインをアップデートする必要があります。アップデートをしないと、Geeklogはプラグイン検索ページの結果を正しく表示しません。プラグインがアップデートされていないと、全データベースを検索することになりますが、Geeklogは現在の検索結果のページしか表示しないことになります。
- 「記事一覧」が導入され、過去の記事が年ごと月ごとにソートされ、見やすく表示できるようになりました。
- 新たなオブジェクト(記事、話題、ブロックなど)のデフォルトパーミッションを、config.phpで設定できるようになりました。
互換性
- 変更するには、Geeklog1.4.0で動くようにテーマをアップデートしなくてはいけません。詳細はテーマ変更リストをご参照ください。
- コメント用のプラグインAPIが改変されました。コメントを利用しているプラグインは、Geeklog1.4.0で動くようにアップデートする必要があります。
このリリースは、Geeklog1.3.12用に独自に開発されたセキュリティ強化と、スパム防御を提供しています。また、バグ修正が適切な仕事量で、少数のバグを処理しています。(その他のバグ修正は1.3.12のリリースをお待ちください。)
セキュリティとスパム防御
- ログインの試行には速度制限があり、デフォルトは5分間に3回までの試行です。(config.phpのlogin)で設定可能。
- COM_mailではEメールのTo:、From: Subject:のフィールドに含まれる改行コードを除去します。
- 新しいユーザアカウントが作成され、ユーザによる投稿承認がconfig.phpで許可されると、万一アカウントの作成が途中で失敗した場合には、新しいアカウントが適切に承認待ちになることを保証しています。
- メールがスパムと確認されると、速度制限が生じます。 (例えば、新たに投稿を行う前に、送信者は速度制限が終了となるのを待つ必要があります。)
- スパムメールは、403“禁止” HTTP結果コードを取得します。
- スパムチェックは、コメント、記事、リンク、イベントの投稿や「友だちに記事を送信する」オプションで送信されたメッセージや、ユーザプロフィールのコンテンツに対して行います。
- Spam-Xプラグイン1.0.2が含まれています。
最近、(Spam-Xで使用されている)MT-Blacklistが中止されたことにご注意ください。本リリースに含まれるSpam-Xプラグインは、geeklog.netからブラックリストの最新バージョンを取得するように設定されていますが、アップデートはされません。
バグ修正
- 記事ページを閲覧する場合、PHP5.0.5以降で送られるエラーメッセージを修正します(bug #483)。
- 空白を除き、アルファベットでない文字を含んでいるときは、すぐにEメールアドレスの名前を引き出します(bug #368)。名前に特別な文字があるユーザにEメールをするときに役立ちます。
- 日本語やタイ語でのトラブルを修正するバージョン0.2.2に、ksesクラスを組み込んでアップグレードされています。(bugs #94 and #119)
- [staticpage:] 自動タグを使用する時のSQLエラーが修正されています(bug #373)。
バグ修正の全リストは、Changelogを参照ください。
改良点
- custom_usercheck関数 (顧客登録コード)のサポートが追加されています。詳細はlib-custom.phpをご参照ください。
- index.phpの自動アーカイブオプションの操作が改良され、ページのロード時間が少し改善されました。
- アップデートされた新しい言語ファイルがいくつか含まれています。
- アップデートされたPEARクラスが含まれています。
本リリースは、以下のセキュリティ問題に対応しました。
- Stefan Esser が、ユーザのパスワード・ハッシュのようなユーザデータを、ある状況で取り出すように開発できるSQLインジェクションを発見しました。
Geeklog 1.3.11 は、Geeklog1.3.10を上回るバグ修正とセキュリティリリースであり、1.3.10に替わるものです。1つのバグ修正が1つのデータベースの変更を伴うので、バージョン番号の変更が必要となりました。
セキュリティ問題
- ゲストユーザによる投稿がconfig.phpで無効にされていても、ゲストユーザが記事を投稿することが可能でした。 (Barry Wongの報告)
しかし、config.phpで無効にしていない限り、これらの記事は承認待ちの状態になっていました。
- リンクやイベント投稿のパラメータがフィルタリングされておらず、SQLインジェクションの可能性がありました。
- 関連ブロック用のリンクが、フィルタリングされていない記事テキストから作成され、クロスサイト・スクリプティング攻撃の可能性がありました。(Vincent Furiaの報告)
バグ修正
- gl_commentsテーブルの‘sid’フィールドの長さが修正されました。20字以上の記事IDを使用することで、コメントメールが記事と取り違えられることを防ぎます。
- PHP 4.1.x (アップデートされた PEARパッケージを含む)との互換性を保証します。
- すばやく起動するアーカイブオプションに修正しています(bug #345)。
- 全話題を削除する場合、コメントや記事画像を的確に削除します(bug #339)。
- アンケートを削除する場合、コメントを削除します。
- カレンダ内のいくつかのバグを修正し、サイトカレンダとパーソナルカレンダ両方を総合的に処理するように改良します(bug #268, #336, #338,その他)。
- 記事内での "More by author" と "More from topic"のリンクを修正します。
- その他いろいろな修正があります。詳細はdocs/historyをご参照ください。
Geeklog1.3.10のユーザの方には、1.3.11へできるだけ速やかにアップグレードすることをお勧めします。テーマや言語ファイルあるいは1.3.10以上のconfig.phpでの変更がありませんので、アップグレードは比較的簡単です。
新しいデフォルトテーマ
本リリースには、新しいデフォルトテーマが含まれます。Victor B. Gonzalez ( Aeonservで有名です)によって提供された専門的なテーマを選びました。テーマは少し修正され、現在HTML4.01とCSS準拠となっています。
また、古いテーマ(クラシック、クリーン、デジタル・モノクローム、ゲームサーバ、スムース・ブルー、Xシルバー、ヤフー)の配信を取りやめることに決定しました。それらは別のターボールとして利用できます。
新機能
- Spam-Xプラグインが含まれています。Tom Willetによりスパム検出プラグインが提供され、それはデフォルトでGeeklogの一部としてインストールされます。
プラグインが、データベースにブラックリストを保存するために少し修正されました。プラグインの旧バージョンのユーザの方は、プラグインの管理パネルを通して各ブラックリストをインポートする必要があります。
- 記事アーカイブ機能: 記事を「アーカイブ」話題に移動するか、所定の時間に自動的に削除することが可能です。
- カスタマイズ・メニュー・バー: サイトのメニューバーは、config.phpで設定できます。例えば、どんなエントリがどんな順番で表示されるかを選択できます。また、lib-custom.phpに関数を入れてカスタム項目を追加することもできます。
- テキスト・メールのクリック可能なリンク: HTML ではないメール内のURLはGeeklogにより認識され、クリック可能のリンクとして表示されます。
- 編集可能記事ID: 記事のID (静的ページのIDのような)は変更でき、読み取り可能なURLにできます。(検索エンジンによって、特にURLの書き換えをして利用する場合、検出されるチャンスがずっと増えます。)
- 自動リンクは記事やコメント内で利用できる新しいフォームのリンクです。自動リンクは名前がタグネームになっていて、IDがリンク先のオブジェクトのIDで、リンクテキストがリンクのテキストとして使われている[name:idlink text]フォームを取っています。
例: [story:email-bug About the email bug]は<a href="http://example.com/article.php/email-bug">About the email bug</a>となります。
搭載自動タグに関しては、リンクテキストはオプションで、所定のものがない場合、Geeklogはオブジェクトのタイトル(story, event, static page)を利用します。
記事にリンクする[story:]とイベントにリンクする[event:]が、あらかじめ定義された自動タグです。プラグインは自分自身の自動タグを定義して、自分のコントロール下でオブジェクトにリンクすることができます。静的ページのプラグインは、すでに[staticpage:]という自動タグを提供しています。
- カスタマイズ可能のEメール: あなたのサイトに登録しているユーザに送信されたEメールは、テキストファイル(/path/to/geeklog/data/welcome_email.txt)のテキストを利用することで、完全にカスタマイズできます。
- タイムゾーンハック: 一般的な "タイムゾーンハック" が含まれています。あなたのサーバが別のタイムゾーンにある場合、サイトのタイムゾーンを設定できます。
その他の改良点
- すべての動作を改善するため、さまざまな変更を行いました。
- 新しいインストール用に、あなたのMySQLバージョンがInnoDBのテーブル現在のMySQL4.0または3.x”Max”で作られている)をサポートしていれば、InnoDBテーブル(MyISAMの代わり)を利用できるオプション機能があります。既存のデータベースは、スクリプト admin/install/toinnodb.php.を利用してInnoDBに変換できます。
警告:InnoDB テーブルを使用すると、データベースのバックアップがいくらか複雑になります。小さいサイズや中程度のサイズのサイトは、MyISAMテーブルで十分に作動するので、不安な場合はInnoDBテーブルを使用しないでください。
- カレンダの週は、日曜日か月曜日から始められます。
- 静的ページのプラグインには、静的ページの印刷用ページを表示するためのオプションがあります。
注釈
- コメントコードは大きく変更されて動作が改善され、個々のコメントやページコメントなどにリンクできるような改良が加えられました。
- ユーザは、サイトの管理者に対し悪意のあるコメントを報告することができるようになりました。
- サイトの管理者は、新しいコメントが送信された場合、Eメール通知を受け取ることができます。(新しい記事、リンク、イベント、ユーザに対するEメール通知と同じです。)
- コメント送信者のIPアドレスは記録され、Whoisサービスにリンクして直接見ることができます。(または、Whois機能を備えたTom WilletのNetTools をインストールすることができます。)
セキュリティ関連の修正
注意:以下のバグはすべてGeeklogのパーミッションシステムのトラブルや、「情報漏洩」の類です。たとえば、ある状況下で、サイトのコンテンツが閲覧できなかった人が閲覧できるようになります。これらのバグを使って、特典を得たり、Geeklogやその運営環境にダメージを与えるようには開発されていません。
- 管理者グループは、そのグループのメンバでなくても、すべてのグループのメンバをリストに可能でした。
- 管理者グループは、そのグループのメンバでなくても、システム内のすべてのグループリストがもらえました(bug #280)。
- 記事およびイベント管理者は、アクセスして読み込まなくても、すべての記事やイベントのリストを常にもらえました。(bug #269)
- ユーザがその記事を読む許可を持っていなくても(記事とコメントID両方を知っていれば)、その記事からコメントを要求することが可能でした。
- カレンダの日付と週の画面のイベント許可が適切にチェックされず、イベントが見ることができないはずのユーザにそのイベントが閲覧可能でした。
- サイトカレンダの中で閲覧許可がない場合でも(イベントのIDを知っていれば)、パーソナルカレンダに何らかのイベントを追加することが可能でした。
その他のバグ修正
- 投稿された記事をプレビューしたり保存したりしても、投稿された記事は承認待ちのままでしたが、実際には新しい記事として保存されていました。
- パーソナルカレンダからのイベント削除が、作動しませんでした(bug #199)。
- 古いユーザフォトは、フォトが異なったファイル形式の場合移動されました。たとえば、.gifから.jpg へ変わる場合です(bug #228)。
- 画像の高さは最大値を越えるが、幅は最大値を越えない場合、画像のリサイズは作動しませんでした(bug #242)。
- 画像を再リサイズするためにGDライブラリを使用すると、リサイズしていない画像を保存することはできませんでした(bug #197)。
- GDライブラリを使用すると、 GIF画像はPNGフォーマットに変換されましたが、GeeklogはGIFバージョンを表示しようとしていました。 LZW パテントが終了してから、再びGIF画像を使用することが安全となり、PNG変換はなくなりました。
- ターボールにも、ユーザが抱えているEメールトラブルが報告されている、アップグレードされたPEARパッケージが含まれています(bug #246)。
注意:これらは、Geeklog1.3.9sr2に同梱したのと同じPEARパッケージです。
テーマ変更もあり、その中のいつくかは、新しい機能を動作させるために重要であることにご注意ください。(たとえば、編集可能な記事IDとその記事・アーカイブのオプション)!
本リリースには、Geeklogのコミュニティによって提供された様々な改良点が含まれています。 (確認のためdocsまたはhistoryファイルをご参照ください。)
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザの投稿がconfig.phpで無効にされていても、投稿することが可能でした(Barry Wongの報告)。
config.phpで無効にしない限り、これらの記事はまだ承認待ちの状態になっていました。
- リンクやイベント投稿のパラメータがフィルタリングされておらず、SQLインジェクションの可能性がありました。
本リリースは、以下のセキュリティ問題に対応しました。
- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました(bug #293)。
- 記事やアンケートに関するコメントメールの差し止めで、コメント送信が機能停止になりました。
その他の修正
- PHP5で正確に動作するように、lib-plugins.phpが修正されました。
- 完全なターボールには、報告されたEメールトラブルを修正するアップデートされたPEARパッケージも含まれています。
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザのコメント投稿がconfig.phpで無効になっていても、投稿することができていました。
このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。
- コメント投稿をチェックする速度制限が付加されました。
- どの話題もゲストユーザには見えなかった場合、記事の閲覧許可によっては、サイトのインデックスページがゲストユーザに対して記事を表示していた可能性があります。
- 話題に関するデイリーダイジェスト・Eメールを、ユーザがまだ移動した話題から取得していました(bug #178)。
- ユーザが一定の話題にアクセスしなくても、話題すべてに関するデイリーダイジェストを購読することが可能でした。
- プロフィールを見ているユーザが、コメントの掲載されている記事にアクセスする許可を持っていなくても、記事に対するコメントが、ユーザのプロフィールに掲載されることがありました。
その他の修正
- ユーザが自分のレファレンスから話題を除外した場合のCOM_showTopicsのSQLエラーが修正されました。
- ゲストユーザに対する仮セッションIDを処理することで生じたerror.logの "Duplicate entry '...' for key 1."のメッセージが修正されました。
- デイリーダイジェストの間違った作者名が修正されました(bug #207)。
- plugin_profileblocksedit_plugin-nameプラグインAPI機能が、usersettings.phpのコードの一部を紛失したため作動しませんでした。
COM_extractLinksは、"href" を含まないアンカータグを無視することになります(bug #183)。
新機能
- Geeklogは、すべてのEメールを送信するため、PEAR::Mailを使用しています。それにより、PHPの搭載メール機能(前述)やsendmail、SMTPを介してEメールを送信することができます。
- RSSフィードを作成したり設定したりするContent Syndicationという新しい管理オプションがあります。新たな記事をすべて含んでいる標準フィードに加え、話題ごとや次のイベント用、リンク用のフィードを作成することができます。
この機能は、プラグインがフィードを追加できることで拡張可能です。フィードクラスを追加することで、RSS0.91以外のフォーマットでフィードを提供することも可能です。
- 管理者は、ブロックのリストからブロックの順番を簡単に変更することができます。
- グループにユーザを追加する代わりとなるインターフェースがあります(JavaScriptが必要です)。
- 管理者グループのユーザは、自分自身がメンバになっているグループに他のユーザを割り当てることだけできます。
- 画像のアップロードも、画像をリサイズするためにGDライブラリを使うことができます。
- コメントはテンプレートを使用します。
- ファイルのアップロードを許さない厳しいウェブホストを、標準の画像ディレクトリに適応させるために、新しい設定用変数
$_CONF['path_images']
を設定して、記事画像とユーザプロフィールが保存されるウェブツリー外部のディレクトリに進むことができます。
- Geeklogは、記事のURL用のURLリライトをサポートしています。たとえば、Googleのクローラが訪問しやすい http://www.geeklog.net/article.php/20031229225326631 のようなURLを持つことができます。
- プラグインは、Geeklogの新しいブロックに独自のセクションを追加できます。
- すべてのURLフィールドは、255文字まで保存ができます(テーマのアップデートが必要です)。
テーマ変更の完全なリストは、テーマの説明をご参照ください。
静的ページプラグイン1.4も他の改良点に含まれており、PHPのreturn文を使わずに、静的ページにPHPを組み込む追加のオプション機能があります。
バグ修正
- 検索クエリからの文字は、コメント内でハイライトされています。また、検索クエリが'*' 文字を含む時は、ハイライトすることで問題を修正しました。
- 検索クラスでのさまざまな修正
- 空のユーザ名でユーザが登録できるバグが修正されました。
- ユーザを一括インポートしている時、そのユーザはみな自動的にデイリーダイジェストを購読していました。(代わりに
$_CONF['emailstoriesperdefault']
の設定を使います。)
- Rootグループ(たとえば管理者)のユーザが以前利用できたコメント削除のオプション機能が修正されました。実際の記事に対して記事編集許可を持っているユーザは、コメントを削除できます。
- グループの削除は、 group_assignments テーブルに孤立した項目が残る場合があります(これは現在修正されました)。 1.3.9にアップグレードする場合、インストールのスクリプトは、データベースから孤立した項目を移動することになります。
セキュリティ、特にSQLインジェクションに対するセキュリティを改善するために多くの変更がありました。
本リリースは、以下のセキュリティ問題に対応しました。
- 言語ファイル内の変数$topicを使うことで生じたクロスサイト・スクリプティングの脆弱性が修正されました(bug #293)。
- 記事やアンケートに関するコメントの差し止めで、コメントの送信が機能停止になりました。
本リリースは、以下のセキュリティ問題に対応しました。
- ゲストユーザのコメント投稿がconfig.phpで無効にされていても、コメント投稿が可能でした。
このバグは、明らかに一定のGeeklogのサイトへ数百のスパムメールを送信するために、スパマーによって開発されたものです。
本リリースは、以下のセキュリティ問題に対応しました。
- 管理者グループのユーザやユーザ管理者グループが、Rootグループのメンバになることが可能でした(Samuel M. Stoneの報告、bug #135)。
- あるエリアの管理者になると(記事に関する記事管理者など)、ユーザがそこにアクセスを許可されていなくても、オブジェクトのIDを知っていれば、そのエリア内(記事など)のすべてのオブジェクトを削除することが可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザが実際の記事にアクセスしなくても、記事のコメントを見ることが可能でした(Peter Roozemaalの報告)。
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定(パスワードを含む)を変更することが可能でした。 (Jelmerの報告、Vincent Furiaにより提案された修正)
- SQLのインジェクションの可能性から、コメント表示に障害が起きました(Jelmerの報告)。
- カレンダにJavascriptコードを入れることが可能でした(Jelmerの報告)。
- コメントプレビューのJavascriptコードを実行することが可能でした(Jelmerの報告)。
本リリースは、以下のセキュリティ関連の問題に対応しました。
- 指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent Furiaが、ユーザ向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザに使用することもできることを発見しました。これらの問題の修正に加え、そのフォームには速度制限もあります。(記事投稿の速度制限に対するデフォルト)
- ゲストユーザのコメント送信が停止された場合でも、送信する方法がありました。
- ほかの誰かのユーザ名でコメントを送信することが可能でした。
Jouko Pynnonen が、1.3.8で導入した新たな「パスワード再発行」の機能を使って、攻撃者がアカウントのパスワードを変えてしまう方法を発見しました。このリリースは、この問題に対応しました。その他の変更はありませんでした。
できるだけ早くアップグレードすることをお勧めします。
本リリースの掲載目的は、2003年の9月と10月初旬に報告されたセキュリティ問題に対応することです。本バージョンにアップグレードすることを強くお勧めします。
セキュリティ問題
- Ulf Harnhammar's kses HTMLフィルタを組み込むことにより、このリリースは種々の実行可能なJavascriptインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細は、ブラウザではこれ以上報告されることはありません。(Geeklogの error.logファイルだけで報告されます。) これは、エラーメッセージ(報告されたSQLインジェクション問題でわかったトラブルに限り)の一部として重要な情報が漏洩することを防ぐものです。
現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください。(これが書かれた時点では、アルファリリース段階で実際に稼働しているサイト上では使用されていません。)Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でのトラブルを修正します。
その他の修正
- URLにポート番号(example.com:8080など)が含まれていた場合、変数
$_CONF['cookiedomain']
の値の自動検索が修正されました。これで、一部のユーザが報告していたログインのトラブルが修正されます。
- 1.3.8-1sr1の完全なターボールにも、アップデートされたフランス語(カナダ)やトルコ語のファイルが含まれます。
Geeklog 1.3.8-1は、Geeklog1.3.8に対するバグ修正のリリースです。さまざまな(ほとんどマイナーな)バグ修正が含まれています。それらの問題は、どれもセキュリティに関連していません。
バグ修正
- 以前の1.3.8の動作(検索結果が戻ってこない場合、
$_CONF['searchloginrequired']
を使ってもう一度検索フォームを表示するなど)を復活させる新しい検索機能に修正します。また日付による検索を修正しました。
- MySQLバージョンの確認を試みた場合の、インストールスクリプトの問題は修正されました。インストールスクリプトは、PHP-4.0.4以前のバージョンでは作動しませんでした。
- 画像を含む記事の関連ブロックのトラブルは修正されました。
- デイリーダイジェストを送信するとき、ゲストユーザを対象から外すようにしました。
- 管理者がユーザのEメールアドレスを変更する際、別のユーザがすでに使用しているアドレスと重複しないようにしました。
- 記事を削除するときは、RSSフィードと古い記事ブロックをアップデートするようにしました。
1.3.8-1の完全なターボールにも、新しくアップデートされた言語ファイルが含まれます。(詳細はChangelogをご参照ください。)
新機能
Geeklog 1.3.8には、静的ページ1.1と1.2のプラグインの両方に替わる静的ページ1.3プラグインが含まれています。詳細については静的ページの説明をご覧ください。
- 検索機能が更新されました。ページやすべての言葉、クエリからのどんな言葉も適切に検索できます。検索する言葉は記事の中でハイライトされます。
- 新たなプライバシー・オプション: ユーザは、他のユーザや管理者からのEメールを受け取るかどうか、オンラインブロックに自分の名前を出すかどうかを決めることができます。
- あるグループにいるすべてのユーザのリストを取得することができます(管理者グループのエディタから)。
- リサイズが記事の画像用に設定されている場合、リサイズされていない画像を保管できます(最初にconfig.phpで設定されていなければいけません。)。そのような場合、記事の中のリサイズした画像は小さくなって、オリジナルの画像にリンクされます。
- ある話題をデフォルトの話題にできます。記事の投稿フォームでの話題選択で、その話題がデフォルトになります。しかし、話題 (index.php?topic=Geeklog など)で閲覧する場合、新しい記事の投稿は、現在の話題がデフォルトになります。
- ユーザにユーザ名を変更させたり、アカウントを削除させたりすることができます。両方の機能ともにconfig.phpで有効にする必要があります。
- 拡張プラグインAPI: プラグインは、Geeklogのセンターブロックのコンテンツを表示することができ、ユーザのプロフィールにプラグイン自身の情報を追加でき、またサイトのヘッダ(<head>セクション)に情報を追加することもできます。
- カスタム登録フォーム用に新しいAPIがあります (サンプルコードはlib-custom.phpをご参照ください。)。
- ハードコードされたHTMLの大部分をテンプレートファイルに移動し、テーマデザイナーにレイアウトの管理をさせるために、少しテーマの変更がありました。変更リストはテーマの説明をご覧ください。
バグ修正
- 「パスワード再設定」機能がリライトされました。古いパスワードをリセットして新しいパスワードを送信する代わりに、特定のリンクを含むEメールを受信します。このリンクに従えば、直接新しいパスワードを登録することができます。登録しない場合は、単にそのEメールを無視することができ、古いパスワードが有効のままとなります。
- 話題のアクセスが必ずしも適切にチェックされてはいませんでした。記事の管理者が、1.3.8にアップグレードした後で定義されたメッセージにアクセスしたことを伝えてきたら、あなたの話題パーミッションを注意してチェックしてください。
- アンケートエディタで、回答を1回余計に入力できていました(たとえば、回答の最大回数が10回に設定されている場合、実際には11回入力可能でした。)。アンケートをチェックしてください。アンケート回答の最大回数を超えていたら、最後の回答が無効になっているかもしれません。 (必要に応じて、
$_CONF['maxanswers']
としてください。)
- Geeklogは、MySQLの古いバージョン(特に3.22.xx)でインストールして再び動作するようになりました。これらの古いバージョンは、MySQL ABでサポートできないものもあり、3.23.54より古いものをインストールしているMySQLには、セキュリティ問題があることにご注意ください。
本リリースは、以下のセキュリティ問題に対応しました。
- 管理者グループのユーザとユーザ管理グループが、Rootグループのメンバになることが可能でした。 (Samuel M. Stoneの報告 bug #135)
- ユーザが記事にアクセスすることが許されていなくても、オブジェクトのIDを知っていれば、あるエリア(たとえば、記事の記事管理者)の管理者になることで、そのエリアのすべてのオブジェクト(たとえば、記事)を削除可能でした。
- イベントIDを知っていれば、他の人のパーソナルイベントを削除することが可能でした。
- ユーザが実際の記事にアクセスしなくても、記事のコメントを閲覧することが可能でした。(Peter Roozemaalの報告)
- クロスサイト・スクリプティング問題のために、誰かのアカウント設定を取得して、特に巧妙に作られたリンクをクリックした場合、その設定(パスワードを含む)を変更することが可能でした。 (Jelmerの報告、Vincent Furiaにより提案された修正)
- SQLインジェクションの可能性から、コメント表示に障害が起きました。 (Jelmerの報告)
- カレンダにJavascriptコードを不正に挿入することが可能でした (Jelmerの報告)。
- コメントプレビューのJavascriptコードを実行可能でした。(保存はできない。)(Jelmerの報告)
本リリースは、以下のセキュリティ関連の問題に対応しました。
- 指摘されている"dr.wh0"のように、リンク投稿用のカテゴリ・フィールドは、まったくフィルタリングされていませんでした。32文字で多くの障害を生じさせることはおそらくできませんが、現在これは修正されました。
- Vincent Furia が、ユーザ向けのEメールのフォームに対する制約を回避することができ、その制約をスパムユーザに使用することもできることを発見しました。
- ゲストユーザのコメント送信が停止された場合でも、送信できる方法がありました。
- ほかの誰かのユーザ名でコメントを送ることが可能でした。
本リリースの目的は、2003年の9月と10月初旬に報告されたセキュリティ問題を対応することです。Geeklogの最新バージョン(これが書かれている時点で、1.3.8-1sr1)にアップグレードする予定がない方には、代わりに少なくとも1.3.7sr3にアップグレードすることをお勧めします。
セキュリティ問題
- Ulf Harnhammar's kses HTMLフィルタを組み込むことにより、このリリースは種々の実行可能なJavascriptのインジェクションとCSSの改変問題に対応しています。
- SQLエラーの詳細はブラウザではこれ以上報告されることはありません(Geeklogの error.log ファイルだけで報告されます。)。これは、エラーメッセージ(報告されたSQLインジェクション問題でわかったトラブルに限り)の一部として重要な情報の漏洩を防ぐものです。
現在はMySQL4.1でGeeklogを使用することを推奨していないことにご注意ください(これが書かれた時点では、アルファリリース段階で実際に運用されているサイト上では使用されていません。)。Geeklogの次のリリースには、SQLインジェクションをより完全にフィルタリングする機能がつき、MySQL4.1でトラブルを修正します。
セキュリティ問題
本リリースの目的は、以下のセキュリティ問題を修正することです。すべてのユーザには、本バージョンにできるだけ速やかにアップグレードすることを強くお勧めします。
- 管理者アカウントを含め、Geeklogサイトのアカウントごとに有効なセッションIDを取得することが可能でした。 (SCANアソシエイツの報告)
- Internet Explorerを使うと、埋め込まれたPHPコードで画像をアップロードでき、実行することが可能でした。 (SCAN アソシエイツの報告)
- 記事のパーミッションが話題のパーミッションを無効にしてしまい、アクセスできなかったユーザに記事を表示する結果となりました(Andrew Lawlorの報告)。これは2003年5月15日にリリースされた新しいindex.phpで既に修正されました。
- 以下のタグのいずれかを許可されたHTMLのリストに追加すると、サイトがスクリプトの攻撃を受けやすくなってしまうという警告がconfig.phpに追加されました。
<img> <span> <marquee> <script> <embed> <object> <iframe>
(Joat Dedeの指摘)
このアップデートには、ユーザが管理エリアで見る「アクセスが拒否されました」というよく見られるエラーメッセージに対する修正が含まれています。(たとえば、記事を保存しようとしたり、記事管理者許可のあるユーザ「のみ」とする場合)
1.3.7sr2の完全なターボールにも、アップデートされた種々の新しい言語ファイルが含まれています(詳細はChangelogをご参照ください。)。
セキュリティ問題
本リリースの主な目的は、以下のセキュリティ問題を修正することです。ユーザの方には、本バージョンにアップグレードすることを強く推奨いたします。
- Javascriptコードをユーザのプロフィールのホームページ面に埋め込むことが可能でした。 (Jin Yean Tanの報告)
- Javascriptコードを、クロスサイト・スクリプティング攻撃で使用するために、一定のURLに埋め込むことが可能でした。(Jin Yean Tanの報告)
- コメントID(通常は見えません)を知っていれば、コメントを誰かが削除することが可能でした。
- 記事にアクセスしなくても(たとえば、あるグループのメンバでない場合)、記事管理者が記事を操作可能でした。イベント、リンク、アンケート、話題、ブロックの管理者にも同じことが可能でした(Kobazの報告)。
その他のバグ修正
- index.phpで、リダイレクトが無限ループになる可能性を修正しました。
$HTTP_SERVER_VARS['HTTP_HOST']
が設定されていなければ、リダイレクトを起こしません。また、設定と実際のサーバネームを比較すれば、もう不安定な状態にはなりません。
- ImageMagickを使用する時に、リサイズする画像を修正しました。
- 「ユーザ」が、
$_CONF['notification']
に登録されていなくても、新しいユーザ通知Eメール(Geeklog1.3.7で導入されている)が常に送信されました。
- 管理メニューは、管理機能のコアの一部ではなくプラグインのみに対して管理者アクセスしているユーザに表示されています。
- デイリーダイジェスト用のデフォルトは、
off
に戻ります。たとえば、新しいユーザは自動的にダイジェストを受け取りません。新しいユーザ向けのデイリーダイジェストを再び可能にするには、config.phpに $_CONF['emailstoriesperdefault'] = 1
を設定してください。
ドキュメント及びハードコードされたリンク(バージョンチェック、サイトのフッタのGeeklogへのリンク)は、http://www.geeklog.net/ へ行くようにアップデートされました。
新機能
- 通知Eメールは、新しい記事、リンク、あるいはイベントが掲載されたか、新しいユーザがそのサイトに登録したときに送信されます(詳細は投稿の設定をご参照ください。)。
この機能がGeeklogのセキュリティ機能と一緒にはなっていないことにご注意ください。多くの方からこの機能性が望まれたので、本当にハック以上のものでした。
- 新着ブロックの「過去24時間の記事」をクリックすると、新しい記事が表示されます。
- ユーザの写真は、記事の画像と同じくリサイズされています(画像ライブラリの使用が設定されている場合)。ユーザの写真の最大サイズは、config.phpの別々の設定変数で設定できます。
- プラグインメニューは、ファイルシステムに存在するがまだインストールしていないプラグインすべてを表示しています。また、容易にインストールできるように、それらのプラグインのインストールスクリプトへのリンクも提供しています。
- いくつかの新しい設定変数が、config.phpに追加されました。(
notification, showfirstasfeatured, dateonly, timeonly, skip_preview, upcomingeventsrange, emailstoryloginrequired, hideemailicon, hideprintericon, hidenewstories, hidenewcomments, hidenewlinks, max_photo_width, max_photo_height, max_photo_size
). 詳細はconfigの説明をご参照ください。
- テーマ変更: 変更リストはテーマの説明をご参照ください。
バグ修正
- 不完全な言語ファイルを使った場合(あるいはURLを利用した場合)に、すべての記事を消去させないように、管理者記事エディタにしっかりしたチェックを加えました。
- UserAdminパーミッションを持つユーザに、Rootユーザのパスワードを変更させ、実際にRootになるlib-security.phpの危険なバグを修正しました。
- "homeonly"と設定されるとブロックが消えるトラブルを修正しました。
- 記事とコメントの複数の [code] ... [/code]部分のトラブルを修正しました。
- [code]部分とPHP4.2.0以上のHTMLフォーマットのコメントでの2行スペーシングを修正しました。
- Geeklogで送信されたEメールのスラッシュ'/'とHTMLエンティティのトラブルを修正しました。
- プラグインAPIへの修正と改良を行いました。
寄稿者: Blaine Lang, Vincent Furia, 及びKenn Osborneが本リリースに寄稿いたしました。
Geeklogのスピードアップ (少しだけ)
1.3.6以前の古いバージョンからアップグレードする場合、installディレクトリにあるaddindex.phpと呼ばれるスクリプトを実行する必要が出てくるかもしれません。このスクリプトは、Geeklogのデータベーステーブルのいくつかにインデックスフィールドを付加し、アクセス時間全体を少し改善します。
データベースにどれくらいのユーザや記事などがあるかによって、実行時間がかかるかもしれないので、これは別々のスクリプト(インストールスクリプトのアップグレード処理の一部ではなく)として実行されました。たとえば、ホスティングサービスがPHPスクリプトの実行時間に制限を与えている場合、タイムアウトになる人がいるかもしれません。そういうことになっても、慌てないでください。どのテーブルにもフィールドが追加されませんでしたと通知されるまで、何度もそのスクリプトを実行してください。 (何度も何度も ...)
Geeklog1.3.7を新しくインストールすれば、このスクリプトを実行する必要がないことにご注意ください。新たにインストールしている間に生成されたデータベースには、すでに新しいインデックスフィールドがあります。
新機能
- 記事の画像は、アップロード中に自動的にリサイズできます(ImageMagickかnetpbmのどちらかがインストールされている場合)。詳細については、コンフィギュレーションの説明をご参照ください。
- "Frontpage" というタイトルの静的ページのコンテンツは、Geeklogサイトでフロントページ上の最初の記事の前に表示されます。静的ページがさらに”nonews”ラベルをつけている場合は、完全にフロントページのニュースを入れ替えることになります。
- ユーザによる投稿を承認する: 有効な場合(config.phpで)、新しいユーザは自分のパスワードを受け取る前に、管理者によって承認される必要があります。
- 投稿承認は別々に、完全に(config.phpで)かまたは一定のユーザグループのみで取り消すことができます(新しい機能 story.submit、links.submit、 event.submitを使って)。
- ソースコード(PHP、HTMLなど)を送信すると、[code] ... [/code]という擬似タグを使って、一字一句変えずに再生された送信文を封入できます。
- リンクセクションでは、分類、ページ分けされたディスプレイ(別々にオフできて、以前の1.3.6スタイルのリスティングにも戻れます。)が使われています。
- 必要ならば、ゲストユーザをサイトのほとんどすべての部分(たとえば、リンクセクション、サイト統計)から締め出すことができます。
- Geeklogサイトは、config.phpにフラグを設定して簡単に機能停止することができます。(たとえばメンテナンスの場合など)
- テーマ変更: 変更リストはテーマの説明をご参照ください。
バグ修正
- いくつかの修正で、アカウントに対するパーミッションが適切に設定されることが保証されました(たとえば、ユーザがアクセス権を持たない記事のタイトルを表示しない。)。
- Geeklogを適切にローカライズできるように、いくつか修正を行いました。(最新の言語ファイルを持っていて、国と言語に適したローカル設定を選択した場合。)
- 変数
$_CONF['site_admin_url']
を、Geeklogの管理ディレクトリをリネームすることができるように、適切に使用しています。
- 新しい RDFパーサは、(全部ではないにせよ)ほとんどのRDFニュースフィードを適切にインポートします。
注意
- config.phpには新しい変数がたくさんあるので、前回のインストールから古いconfig.phpをコピーする代わりに、そのファイルを新たにコピーすることをお勧めします。
- 英語、ドイツ語、イタリア語、ポーランド語、日本語のファイルが、最近アップデートされたことにご注意ください。その他の言語ファイルを使用すると、あなたのGeeklogサイトがきちんと動かない場合があります。
寄稿者: Gene Wood、 Blaine Lang、 Tom Willet、及び Roger Websterが本リリースに寄稿いたしました。