Geeklogがなぜセキュアなのか
-
Upload
tetsuko-komma -
Category
Technology
-
view
13.334 -
download
0
description
Transcript of Geeklogがなぜセキュアなのか
大量データも軽快に処理。セキュア CMS 。
オープンソース CMS GeeklogGeeklog がなぜセキュアなのか
Geeklog Japan 今駒 哲子
geeklog.jp
各種セキュリティチェック機関との連携
1• High-Tech Bridge Security Research
Lab などから Geeklog 本家、アドオン開発元へ連絡
2• 開発元で対応して対策版を公開
3• セキュリティー機関で脆弱性を公開
エクスプロイト (exploit)
エクスプロイト (exploit) とは、コンピュータ関連のソフトウェアやハードウェアの脆弱性を利用した悪意ある行為のために書かれた、スクリプトまたはプログラム
Wikipedia より
XSS 対策
クロスサイト攻撃 : クロスサイトスクリプティング (XSS) 2013/02/21
High-Tech Bridge Security Research Lab が クロスサイトスクリプティング(XSS) がカレンダープラグインの calendar_type parameter に存在することを報告しました ( 訳註 これに伴い、日本語版ではカレンダー jp プラグインも同様に対策しました。 )(HTB23143) 。
Trustwave Spiderlabs は、インストールプログラム、コンフィギュレーション、アンケートプラグインの管理画面、話題の管理画面に XSS が存在することを報告しました。 (TWSL2013-001).
日本人開発プラグインは、日本人開発者がすぐに対応。
CSRF 対策クロスサイト攻撃 : クロスサイトリクエストフォージェリ (CSRF)
お問い合わせフォームに、無意味な書き込みや宣伝の書き込みが時折
発生する。
日本語サイトでは、入力制限に、全角などを追加することで海外から
の CSRF 攻撃を受けることはまずありませんでしたが、英語サイトで
活用する際には無防備でした。
そのため、お問い合わせフォームには CAPTCHA プラグインを活用し
て認証画像により機械による自動投稿を除外するしくみで対策してい
ましたが認証画像入力が面倒なため、日本語サイトでは入力文字に全
角指定を行い対策していましたが、十分ではありませんでした。
CMS運営上やっかい
CSRF 対策のための開発と公開セキュリティートークン ゲストユーザー対応
Geeklog 2.1 よりゲストユーザーも正常にセキュリティートークンが別個に用意されるようになりました。(よりセキュアに!)
お問い合わせフォームはセキュリティートークン ( アノニマスユーザー用のトークンも発行 ) を活用したCSRF対策により当該サイト以外のフォームから実行されると警告されてそのまま投稿できないように脆弱性を対策( formmail 2.1.8 2014/02/9 )
CSRF 対策として新 CAPTCHA プラグイン
旧 CAPTCHA プラグイン(画像認証)が破られ、新 CAPTCHA プラグインおよび reCAPTCHA プラグイン ( 新画像認証 ) 開発。
スワイプでカンタンセキュア!
新規登録に対する基本の SPAM 対策
新規ユーザー登録を停止するモード 登録ユーザーの制限処理
サイト運営者にとっては思ったより深刻な被害。無い Gmail アドレスで登録されるとそのアドレスに新規登録メールが送信。エラーメールを Google に多数送信することにつながり、サイトのメールアドレスが SPAM 判定される被害へ。
登録メールアドレスの制限
意外にやっかい
おもなセキュリティー対応Feb 19, 2013 (2.0.0rc2) High-Tech Bridge Security Research Lab が XSS がカレンダープラグインの
calendar_type パラメーターに存在する Trustwave Spiderlabs は、インストールプログラム、コンフィギュレーション、アン
ケートプラグインの管理画面、話題の管理画面に XSS が存在Feb 19, 2013 (1.8.2sr1) High-Tech Bridge Security Research Lab が XSS がカレンダープラグイン Trustwave Spiderlabs は、インストールプログラム、コンフィギュレーション、アン
ケートプラグインの管理画面、話題の管理画面に XSS
Jan 2, 2011 (1.7.1sr1) YGN Ethical Hacker Group の Aung Khant 氏が管理者のコンフィギュレーションパネ
ルに XSS および 自動ログインに辞書攻撃に対して脆弱性 YGN Ethical Hacker Group の Aung Khant 氏が管理者のコンフィギュレーションパネ
ルに XSS
Nov 1, 2009 (1.6.1b1) FCKeditor
あまりにも危険! TimThumb (2011/12/31)
PHP スクリプト TimThumb には、脆弱性があります。結果として、遠隔の第三者が任意の PHP コードをサイトにアップロードする可能性があります。
対象となるバージョンは以下の通りです。( jQuery プラグイン等に含まれています。)
- TimThumb 2.0 より前のバージョン
public_html/images/cache/ に PHP コードがアップロードされていないか確認し、見つけ次第これらをすぐに削除してください。
WordPress は多数攻
撃。
放置サイトが狙わ
れる!
“クリックジャッキング”を防止する モード
フレーム内表示を許可しない。これがデフォルト!
フレームで表示されないなと思った
らこの設定を疑え!
他の CMS では制限をかけていな
い場合が多い。Geeklog ならで
はのセキュリティー
Geeklog のセキュアな開発体制http://wiki.geeklog.net/index.php/Programmers/Developers_Documentation
Coding Guidelines
例) Control Structures
<?phpif ((condition1) || (condition2)) { action1;} elseif ((condition3) && (condition4)) { action2;} else { defaultaction;}?>
プラグイン API が充実 function plugin_getmenuitems_ プラグイン名 ()
function plugin_displaycomment_ プラグイン名 ()
function plugin_savecomment_ プラグイン名 ()
function plugin_deletecomment_ プラグイン名 ()
function plugin_showstats_ プラグイン名 ()
function plugin_statssummary_ プラグイン名 ()
function plugin_searchtypes_ プラグイン名 ()
function plugin_dopluginsearch_ プラグイン名 ()
function plugin_cclabel_ プラグイン名 ()
function plugin_getadminoption_ プラグイン名 ()
function plugin_centerblock_ プラグイン名 ()
function plugin_autotags_ プラグイン名 ()…………………………
ライブラリーの名前空間 COM_ 関数 : lib-common.php で定義 CUSTOM_ 関数 : lib-custom.php で定義 DB_ 関数 : lib-database.php で定義 MBYTE_ 関数 : lib-mbyte.php で定義 PLG_ 関数 : lib-plugin.php で定義 SEC_ 関数 : lib-security.php で定義 SESS_ 関数 : lib-sessions.php で定義 ADMIN_ 関数 : lib-admin.php で定義 CMT_ 関数 : lib-comment.php で定義 PNB_ 関数 : lib-pingback.php で定義 STORY_ 関数 : lib-story.php で定義 SYND_ 関数 : lib-syndication.php で定義 TRB_ 関数 : lib-trackback.php で定義 USER_ 関数 : lib-user.php で定義………………………… .
<?php if (COM_isAnonUser()){ echo CUSTOM_getStaticpage('_login' ); } else { echo CUSTOM_getStaticpage('_logout' ); }?>
本体ハック不要: CUSTOM 関数
lib-custom.php内でカスタム関数を定義。
404.php
<?phprequire_once 'lib-common.php';COM_handle404();?>
lib-common.php
<?phprequire_once( $_CONF['path_system'] . 'lib-****.php' );require_once( $_CONF['path_system'] . 'lib-custom.php' );
function COM_handle404($alternate_url = ''){ global $_CONF, $_USER, $LANG_404;
if (function_exists('CUSTOM_handle404')) { CUSTOM_handle404($alternate_url); exit; } ……..
本体ハック不要: CUSTOM 関数
lib-custom.php内でカスタム関数を定義。
404.php
<?phprequire_once 'lib-common.php';COM_handle404();?>
lib-common.php
<?phprequire_once( $_CONF['path_system'] . 'lib-****.php' );require_once( $_CONF['path_system'] . 'lib-custom.php' );
function COM_handle404($alternate_url = ''){ global $_CONF, $_USER, $LANG_404;
if (function_exists('CUSTOM_handle404')) { CUSTOM_handle404($alternate_url); exit; } ……..
lib-custom.php
<?php
if (strpos(strtolower($_SERVER['PHP_SELF']), 'custom_handle404.php') !== false) { die('This file can not be used on its own!');}
function CUSTOM_handle404($alternate_url = ''){ global $_CONF, $_USER, $LANG_404; ……..
本体パッケージ
Geeklog 本体
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
lib-custom.php
カスタム関数のサンプル
本体パッケージ 日本語版
Geeklog 本体
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
CORE
plugin
lib-custom.phpよくつかわれる
カスタム関数
カスタム関数のサンプル日本語化 plugi
n
日本語化 plugi
n
日本語化 plugi
n
Geeklog のわかりやすい coding
<?php
require_once( '../lib-common.php' );
$display = COM_siteHeader();
$display .= "Hello World";
$display .= COM_siteFooter();
COM_output($display);
?>
ページの出力の場合:
古いサイト、サーバーは乗り換えて
新バージョンで!
整理された関数体系がセキュアな環境を生む。
わかりやすいCMSでは、無駄な
コーディングが発生しないので、
セキュアの上、高速・軽快!大容量カスタムフィールド
データも安心!
Geeklog でセキュアなサイトを!
Geeklog
Geeklog Japanhttp://www.geeklog.jpDEMOhttp://demo.geeklog.jpFacebook Grouphttps://www.facebook.com/groups/geeklogjp/
Geeklog https://www.geeklog.netリポジトリ Bug trackerhttp://project.geeklog.net/
株式会社アイビー・ウィーhttp://www.ivywe.co.jp
geeklog.jp
Thanks!