Upload
yoshinori-matsumoto
View
9.434
Download
0
Embed Size (px)
DESCRIPTION
まにゼミ 知りませんでは通らない! 「制作者なら知っておきたいWebセキュリティの考え方」 2013/01/28 http://m2.cap-ut.co.jp/event/semi08.html
Citation preview
すぐできるWeb制作時のセキュリティTipsYoshinori Matsumoto
2013/01/28加筆修正 2013/01/31
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
目次
•自己紹介•Webセキュリティの現状•よくあるセキュリティ事例と対策•古いソフトウェアでの注意点•見逃しがちな設定
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
自己紹介•名前:松本 悦宜(よしのり)• Twitter : @ym405nm•会社:神戸デジタル・ラボ•業務:Webプログラマー、セキュリティエンジニア、セキュリティコンサルタント
セキュリティ JavaScript HTML5 Android Web 神戸ITフェスティバル 讃岐うどん 小ネタ
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
自己紹介
•セキュリティ診断事例 : ECサイト管理者アカウントがのっとられないか商品在庫・値段が改ざんされないか顧客情報が漏洩しないか攻撃の踏み台にされないか
擬似的に攻撃して検証
Webセキュリティの現状
Webアプリをつくりはじめるにあたってのセキュリティの現状
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
これから書き始める人の悩み
•そうだ、Webアプリをつくろう!•サーバサイド•DOMツリー•JavaScript•Ajax•新要素•ブラウザ依存•スマホ対応 など
理解することがいっぱいある
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
これから書き始める人の悩み
•そうだ、Webアプリをつくろう!•セキュリティ??クロスサイトスクリプティング、SQLインジェクション、クロスサイトリクエストフォージェリ、バッファ・オーバーフロー、OSコマンドインジェクション、クロスサイトトレーシング、ブルートフォースアタック
セキュリティなんてやってられへん!!
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
これから書き始める人の悩み
•重要なサイトならともかくすべてのセキュリティチェックを行うのは大変!
•かといって全く対策しないのも・・・•セキュリティにも優先順位があるはず
重要なセキュリティ問題と
Webアプリまわりの注意点をご紹介
よくあるセキュリティ事例と対策
よく話題にあがるセキュリティホールついつい対策が漏れてしまうことにより、
大きな被害を与えるものを紹介
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
XSS
• XSS (Cross Site Scripting)•勝手に攻撃者がJavaScriptを実行してしまう手法
•攻撃者が作ったコードが他の人のブラウザでも実行される
•サイト改ざん、他サイトへの誘導
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
XSS•すごい簡単なサンプル簡易おみくじ
テキストボックスに名前を入れて、送信ボタンを押すと、
フォームの下に名前とおみくじ結果が出力される
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
XSS•よくある設定漏れ簡易おみくじ2
テキストボックスに名前を入れて、送信ボタンを押すと、
次の画面のテキストボックス内の初期値に名前が入っている。
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
XSS
•出力される値がタグを作らないように、HTMLの特殊文字をエスケープする
•エスケープする関数を使用する•自動エスケープされるフレームワークの機能を使用する
対策
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクション
•攻撃者がSQL文を改ざんして、勝手に好きなSQL文を追加する
•顧客情報やコンテツ情報がSQLに入っていると大きな被害になる
•情報漏えい、サイト改ざん
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクションログインフォーム
SELECT * FROM USERSWHERE ID=”___” and PASS = “___”
SQL文
結果server DB
ID, PASS
ログイン可否
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクションログインフォーム
SELECT * FROM USERSWHERE ID=”___” and PASS = “___”
ログインできるSQL文
結果server DB
攻撃コード
ログインOK
改ざん
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクション•よくある事例
$query = "SELECT * FROM usr WHERE uid = '$uid' AND pass = '$passh';$result = pg_query($conn, $query);
実装例
SQLSELECT * FROM usr WHERE uid = 'taro'--' AND pass ='eefd5bc2...'
攻撃例 ID : taro'--
コメントアウトとして扱われる
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクション
• SQLとして扱われる記号をエスケープする•文字列連結でSQLを使用しない•プレースホルダーを利用して対策する
対策
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
SQLインジェクション対策
$stmt = $db->prepare('SELECT * FROM atable WHERE name=? and num=?', array('text', 'integer'), array('text', 'text', 'integer'));$rs = $stmt->execute(array($name, $num)); // 文字列型と整数型の変数
• PHPとMDB2を使った実装方法
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
CSRF
•クロスサイトリクエストフォージェリー Cross Site Request Forgeries
•サイトにログインしたユーザが、悪意のある外部サイトにより、ユーザが予期しない処理を実行させられてしまう問題
•「遠隔操作ウィルス」で話題に
書き込みの流れと手口
犯行声明メールや事件の経緯から見る流れは、以下のように想像できる。
1:真犯人がCSRF脆弱性のあるサイトを探す
CSRF脆弱性によって、外部から書き込みできる掲示板・SNSなどを探す。問題となった横浜市の掲示板はCSRF脆弱性を持っていた(現在は対策済み)。
2:CSRF脆弱性を攻撃するページを作成
真犯人が攻撃用のページを、独自サイトなどに作成。このページを開くと、自動的に対象の掲示板・SNSなどに決められたメッセージ(今回の場合は殺人予告)を書き込む。
3:攻撃用ページへのリンクを2ちゃんねるなどに書き込む
真犯人が攻撃用ページへのリンクを、2ちゃんねるなどの掲示板に書きこむ。今回の事件では、ソフトウエアのダウンロードリンクとして書き込まれたようだ。
4:被害者がリンクをクリックしてしまう
被害者がリンクをクリックし、攻撃用ページを開いてしまう。
5:対象の掲示板・SNSに勝手にメッセージが書き込まれる(2012年10月26日 読売新聞)
対策とデモは次のセッションで時間があれば
古いソフトウェアでの注意点
Webアプリはいろいろなソフトウェア、ライブラリから構成されています。実装はしっかりしているつもりでも
これらのソフトウェアやライブラリが原因でセキュリティホールが作られる可能性もあります
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
JAVA
• Java7に任意のコードが実行される可能性が見つかった(2013年1月)
•ウェブを閲覧するだけで任意のコードが実行し、閲覧者の端末が乗っ取られる可能性
•大きく報道され、ブラウザでJavaを切ったり、アンインストールするユーザが増えた
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
Ruby
• Ruby on railsに深刻な脆弱性(2013年1月)•認証システムの迂回、任意のSQL挿入、任意のコード挿入と実行、Railsアプリケーションに対するサービス妨害(DoS)攻撃などに利用される可能性。
• Redmineにも影響があり、業務システムにも影響。
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
ソフトウェアの脆弱性
•原則的に次回バージョンアップで対策•発見されたもののなかには、攻撃コードが公開され、セキュリティツールにより自動化できる可能性がある
•対策をするためには、利用者がパッチをあてるかバージョンアップをしないといけない
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
PHP
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
jQuery
•多くのサイトでjQueryが使用されている• jQuery, bootstrap...•ちょっと脆弱性が見つかると大変
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
対策
•脆弱性情報を確認する•更新情報に隠れている場合もあり•無理のない範囲で、素早く対応できるようにする
見逃しがちな設定
実装だけでなく、サーバの設定の注意も必要
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報
server
ログイン&パスワード
ログイン結果
パスワード認証
•各サイトVPSの初期設定にするとパスワード認証になる
•パスワードの扱い方、辞書攻撃に注意が必要
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報危険なパスワード例
俺調べ
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報
server
鍵生成、公開鍵登録
ログイン結果
対策
•公開鍵を登録して鍵認証を行う
鍵認証
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報サーバ情報の隠蔽
•エラーページやHTTPヘッダーに使用しているソフトウェアの名前とバージョン情報が表示される
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報サーバ情報の隠蔽
•意外とphpinfo.php が残ってるサイトも。。。
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
サーバのログイン情報対策
•サーバの情報は出来る限り隠蔽する。特にエラーページとHTTPヘッダは注意
•推測されやすいサイトにも注意する(test.php, phpinfo.php, /admin, /wp-admin など)
まとめ
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
まとめ
•Webセキュリティは難しいが、設定1つで修正できるものもある。
•多くの攻撃は、簡単な実装ミス・設定ミスから来ているものもおおい
すぐできるWeb制作時のセキュリティTips 2013/01/28 @ym405nm http://ym405nm.info
参考文献
安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/websecurity.html