カジュアルにセキュリティテストはじめよう #qpstudy

Post on 12-Apr-2017

729 views 2 download

transcript

カジュアルにセキュリティテスト

はじめよう2016-07-16

Aki@nekoruriXtone ピザ会

qpstudy 2016.07

とは言ったけど

• まあ人として普通 SQL インジェクション対策とかはしてるよね。• 「ふつー Prepared Statement だし」• 「ふつー ORM だし」• 「ふつー NoSQL だし」?

動的クエリからは逃げられない

• テーブル名• 時系列データ

• カラム名• 検索条件• ソート条件

• IN 句• 数が変わる

• 複雑な複合クエリの高速化

人はミスをする

• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数

人はミスをする

• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数

• MyBatis3 の場合• #{absolutelySafeValue} ────  パラメータ化• ${absolutelySafeValue} ────  直接展開

人はミスをする

• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数

• MyBatis3 の場合• #{absolutelySafeValue} ────  パラメータ化• ${absolutelySafeValue} ────  直接展開• どっちがどっちかわかるかぼけー! ( ノ `Д´) ノ彡┻━┻

それテストできるよ

• まあ人として普通テスト書いてるよね。• 自動テストしよう• 自動 CI しよう

「うっかり」から人類を守る 4 文字

• 以下の 4 文字をテストデータの末尾に入れるだけ!かんたん!

'"\;Special thanks to securitytesting slack #sqli members.

テストデータにこの 4 文字を入れる事で

• 基本的に例外でこけます。• 例外に落ちなくても結果が変わってテストがこけます。• 手間はほとんど掛かりません。

どうせテストデータなんてコピペでしょ?• 考えることが減りストレスも減って健康になります。

テストデータにこの 4 文字を入れる事で

• 基本的に例外でこけます。• 例外に落ちなくても結果が変わってテストがこけます。• 手間はほとんど掛かりません。 ← 重要

どうせテストデータなんてコピペでしょ?• 考えることが減りストレスも減って健康になります。

世の中 SQL インジェクションだけじゃない

• はい

セキュリティテスト CI• サービスの力を借りる• VAddy

http://vaddy.net/ja/• Walti

https://walti.io/• 自前できちんとセキュリティテスト• Selenium 等のエンドツーエンドテスト書いていれば、

OWASP ZAP 等の Proxy を挟んで脆弱性診断• Selenium と OWASP ZAP を使った自動脆弱性検査への道

http://www.pupha.net/archives/2467/※ 今自分のところでできているとは言っていない

まとめ

• テストデータの末尾に以下の 4 文字を入れよう

• カジュアルに外部サービスや診断ツールも使おう

'"\;