カジュアルにセキュリティテストはじめよう #qpstudy
TRANSCRIPT
![Page 1: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/1.jpg)
カジュアルにセキュリティテスト
はじめよう2016-07-16
Aki@nekoruriXtone ピザ会
qpstudy 2016.07
![Page 2: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/2.jpg)
とは言ったけど
• まあ人として普通 SQL インジェクション対策とかはしてるよね。• 「ふつー Prepared Statement だし」• 「ふつー ORM だし」• 「ふつー NoSQL だし」?
![Page 3: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/3.jpg)
動的クエリからは逃げられない
• テーブル名• 時系列データ
• カラム名• 検索条件• ソート条件
• IN 句• 数が変わる
• 複雑な複合クエリの高速化
![Page 4: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/4.jpg)
人はミスをする
• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数
![Page 5: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/5.jpg)
人はミスをする
• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数
• MyBatis3 の場合• #{absolutelySafeValue} ──── パラメータ化• ${absolutelySafeValue} ──── 直接展開
![Page 6: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/6.jpg)
人はミスをする
• どの ORM/DB ライブラリでも両方を用意している• パラメータ化される変数• パラメータ化されず展開される変数
• MyBatis3 の場合• #{absolutelySafeValue} ──── パラメータ化• ${absolutelySafeValue} ──── 直接展開• どっちがどっちかわかるかぼけー! ( ノ `Д´) ノ彡┻━┻
![Page 7: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/7.jpg)
![Page 8: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/8.jpg)
![Page 9: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/9.jpg)
それテストできるよ
• まあ人として普通テスト書いてるよね。• 自動テストしよう• 自動 CI しよう
![Page 10: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/10.jpg)
「うっかり」から人類を守る 4 文字
• 以下の 4 文字をテストデータの末尾に入れるだけ!かんたん!
'"\;Special thanks to securitytesting slack #sqli members.
![Page 11: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/11.jpg)
テストデータにこの 4 文字を入れる事で
• 基本的に例外でこけます。• 例外に落ちなくても結果が変わってテストがこけます。• 手間はほとんど掛かりません。
どうせテストデータなんてコピペでしょ?• 考えることが減りストレスも減って健康になります。
![Page 12: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/12.jpg)
テストデータにこの 4 文字を入れる事で
• 基本的に例外でこけます。• 例外に落ちなくても結果が変わってテストがこけます。• 手間はほとんど掛かりません。 ← 重要
どうせテストデータなんてコピペでしょ?• 考えることが減りストレスも減って健康になります。
![Page 13: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/13.jpg)
世の中 SQL インジェクションだけじゃない
• はい
![Page 14: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/14.jpg)
セキュリティテスト CI• サービスの力を借りる• VAddy
http://vaddy.net/ja/• Walti
https://walti.io/• 自前できちんとセキュリティテスト• Selenium 等のエンドツーエンドテスト書いていれば、
OWASP ZAP 等の Proxy を挟んで脆弱性診断• Selenium と OWASP ZAP を使った自動脆弱性検査への道
http://www.pupha.net/archives/2467/※ 今自分のところでできているとは言っていない
![Page 15: カジュアルにセキュリティテストはじめよう #qpstudy](https://reader035.vdocuments.site/reader035/viewer/2022081505/58ee1cc51a28ab42108b46db/html5/thumbnails/15.jpg)
まとめ
• テストデータの末尾に以下の 4 文字を入れよう
• カジュアルに外部サービスや診断ツールも使おう
'"\;