SlideShare une entreprise Scribd logo
1  sur  50
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNA Technology Conference 2017
DeNAでのチート診断・脆弱性診断の取り組み
株式会社ディー・エヌ・エー
システム本部セキュリティ部
セキュリティ技術グループ
杉山 俊春
1
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 所属:株式会社ディー・エヌ・エー
• セキュリティ部 セキュリティ技術グループ
 名前:杉山 俊春
 前職:セキュリティ関連の会社
⁃ 脆弱性診断(Web、スマートフォンアプリ)
⁃ Web脆弱性診断ツール(VEX)開発・販売
⁃ SaaS型Web診断サービス開発
⁃ 技術記事執筆 など
 入社:2012年1月
 現在の業務:
⁃ 脆弱性診断、社内システムセキュリティ、
セキュリティログ管理、セキュリティ設計 など
 好きなもの:猫、デザイン・イラスト系のもの
2
星野君のWebアプリ
ほのぼの改造計画 (@IT)
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNA セキュリティ部(技術グループ)と私
3
2012
2013
2015
2013/4
セキュリティ
グループ発足
2014/4
セキュリティ部発足
・セキュリティ技術グループ←こっち
・セキュリティ推進グループ
Join!
セキュリティ部の位置づけ 技術グループの成り立ち
2017/2
現在9名
セキュリティ会社出身:2名
社内教育でメンバー育成
2014
2016
2017
:異動
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
DeNA セキュリティ部(技術グループ)のお仕事
 リリースするアプリ・サービスのチート・脆弱性診断全般
 本番ネットワークのセキュリティ(踏み台サーバ)
 社内ネットワークのセキュリティ
 セキュリティ相談・設計
 脆弱性情報調査・社内共有
 各種セキュリティの仕組み、ツールの作成
など色々
4
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティって?
5
皆さん セキュリティってどうしてますか?
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティって?
「セキュリティ」と言っても幅広いので、例えば、
 スマートフォンアプリのセキュリティ
 ゲームアプリのセキュリティ
といわれて、何をしなきゃいけないかがイメージでき
ますか?
6
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティって?
とあるゲームで
「まだリリースしていないアイテムを所持している
ユーザがいました」
この時、考えられる原因と対策は?
7
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
セキュリティって?
8
セキュリティって難しい?
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
9
出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について
http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
10
現在
情報セキュリティ人材 28.1万人
+13.2万人不足
すごく足りていない!?
出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について
http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
11
でも、ちょっと待って!
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
12
現在
情報セキュリティ人材 28.1万人
IT人材 91.9万人
現時点でIT人材の約3割が
情報セキュリティ人材(というデータでの話)
出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について
http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
13
いい人材が見つかるまで待つ
セキュリティ人材を育てる
実はセキュリティ人材はたくさんいる
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足
14
セキュリティって難しい?
↓
範囲を明確にして、ひとつずつちゃんと
見ていけばそんなにややこしい話ではない!
はず…
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足 – 人材育成への取り組み
 実際のゲームのセキュリティに近い形のサンプル
アプリ
• Cocos-2dx (C++)で作成
• (ソースコードのデコンパイルは困難)
• Android OS上で動作
• サーバへの通信は暗号化(?)されている
このアプリを利用して、セキュリティ・キャンプ等
のイベントでハンズオンの講義なども実施
http://dena.com/jp/csr/blog/cat277/2016/09/02/003185© DeNA
 チート勉強用サンプルアプリ1
15
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
情報セキュリティ人材の不足 – 人材育成への取り組み
 チート勉強用サンプルアプリ2
 チートをしないと絶対にクリアできないゲーム
• HTML + JavaScript
⁃ ソースコードの閲覧、改変は簡単
• ブラウザ上で動作
→ CTF形式の 高校生向け セキュリティイベント用に作成
16
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
簡単なゲームでの具体的なチート例
17
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
簡単なゲームでの具体的なチート例
 具体的な例を見てみましょう!(※勉強用のサンプルアプリです)
18
戦う相手を選んで
コマンド選択して倒す!
スタミナ回復アイテムもある
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
簡単なゲームでの具体的なチート例
19
 大まかなシステムの図
プレイデータ
の保存
バトルの実行
処理
データ要求、結果保存
データの応答
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
簡単なゲームでの具体的なチート例
 できてしまったら困りそうなことを適当に列挙してみる
⁃ 敵のHPを1にする
⁃ 敵の攻撃力、防御力を-99999999にする
⁃ ユーザのHPを99999999にする
⁃ ユーザの攻撃力、防御力を99999999にする
⁃ 戦闘後にもらえる経験値を99999999にする
⁃ ユーザのレベルを99にする
⁃ 使えないコマンドを使う
⁃ ひたすら連続攻撃をする
⁃ 選択できない敵と戦う
⁃ 回復アイテムを無限に使う
⁃ スタミナを消費しないで戦闘を行う
20
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
簡単なゲームでの具体的なチート例
21
実際にどうなるかを見てみましょう!
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
提供するサービス、アプリ、ゲームでのセキュリティ
 できてしまったら困りそうなこと
⁃ 敵のHPを1にする
⁃ 敵の攻撃力、防御力を-99999999にする
⁃ ユーザのHPを99999999にする
⁃ ユーザの攻撃力、防御力を99999999にする
⁃ 戦闘後にもらえる経験値を99999999にする
⁃ ユーザのレベルを99にする
⁃ 使えないコマンドを使う
⁃ ひたすら連続攻撃をする
⁃ 選択できない敵と戦う
⁃ 回復アイテムを無限に使う
⁃ スタミナを消費しないで戦闘を行う
22
できる
できるがいまいち
※0.000001とかが正解できる
できる
できる?
できる
できる
できる
できるが無効? ※expを変えるべき
できない
できない
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
提供するサービス、アプリ、ゲームでのセキュリティ
 攻撃シナリオを雑に割り当ててみる
⁃ 敵のHPを1にする
• ソースコードの変更、利用中の値の直接変更
⁃ 敵の攻撃力、防御力を-99999999にする
• ソースコードの変更、利用中の値の直接変更
⁃ ユーザのHPを99999999にする
• ソースコードの変更、利用中の値の直接変更
⁃ ユーザの攻撃力、防御力を99999999にする
• ソースコードの変更、利用中の値の直接変更
⁃ 戦闘後にもらえる経験値を99999999にする
• サーバに送る値の変更
⁃ ユーザのレベルを99にする
• ソースコードの変更、利用中の値の直接変更、サーバに送る値の変更
⁃ 使えないコマンドを使う
• ソースコードの変更、特定命令の強制実行
⁃ ひたすら連続攻撃をする
• ソースコードの変更、特定命令の強制実行
⁃ 選択できない敵と戦う
• ソースコードの変更、特定命令の強制実行、サーバに送る値の変更、サーバから受け取る値の変更
⁃ 回復アイテムを無限に使う
• ソースコードの変更、サーバに送る値の変更、サーバから受け取る値の変更
⁃ スタミナを消費しないで戦闘を行う
• ソースコードの変更、サーバに送る値の変更、サーバから受け取る値の変更
23
以下の4つくらいのパターンで分類
・ソースコード、レスポンスの変更
・利用中の値の直接変更
・特定命令の強制実行
・サーバに送る値の変更
※厳密にはここに書いてある組み合わせ
でもできると思います
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
提供するサービス、アプリ、ゲームでのセキュリティ
24
悪い人が最終的に不正として実現したいことは……
↓
サーバ上のデータを不正なものにしたい
プレイデータの保存時
に不正なデータになっ
ていることが重要
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
提供するサービス、アプリ、ゲームでのセキュリティ
25
ブラウザアプリ(JavaScript)だとチート簡単?
↓
スマホアプリも原理的には似たようなもの!
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲームのシステム構成の色々
26
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ゲームのシステム構成の色々
 ローカルのみ
27
アプリダウンロード
課金処理
IAP、IAB
※IAP, IAB:In App Purchase (App Store) , In App Billing (Google Play)
App Store
Google Play
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ゲームのシステム構成の色々
 クライアントアプリ+サーバ(単純なデータの保存のみ)
28
アプリダウンロード
課金処理 App Store
Google Play
データ読み込み
データ保存
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ゲームのシステム構成の色々
 クライアントアプリ+サーバ側ロジック
29
アプリダウンロード
課金処理 App Store
Google Play
ゲームサーバ
データ読み込み、処理結果
処理実行
課金検証
各種検証、処理実行
検証結果
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ゲームのシステム構成の色々
 クライアントアプリ+サーバ側ロジック+SNS or プラットフォーム連
携
30
アプリダウンロード
課金処理 App Store
Google Play
ゲームサーバ
データ読み込み
処理結果
処理実行
課金検証
各種検証、
処理実行
検証結果
データ読み込み
処理結果
処理実行
ゲームプラットフォーム
データ読み込み
処理結果
処理実行
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲームアプリに対する攻撃
31
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
攻撃されうるポイント
32
アプリダウンロード
課金処理 App Store
Google Play
ゲームサーバ
データ読み込み、処理結果
処理実行
課金検証
検証結果
メモリ改ざん
不正な通信
(リクエスト)
データ
ファイル改ざん
アプリ改ざん
不正な通信
(レスポンス)
大半の最終的な
ターゲットはここ!
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲームにおけるチート、不正行為
33
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - デモ画面
レスポンス改ざんで
使えるようにできる
34
© DeNA© DeNA
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - 通信の改ざん
リクエスト
レスポンス
普通の通信
Proxyツールを利用した改ざん
リクエスト
悪い事をする人の環境
改ざん
改ざんされた
レスポンス
改ざんされた
リクエスト
Proxy
ツール
35
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - デモ画面
 送られてるリクエストの例
POST /sfx/get_user_info.php HTTP/1.1
Accept-Encoding: identity
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.2; sdk Build/MASTER)
Host: appdemo.example.com
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 80
WgMBAQ1RU1FLX1BHRwpEUlJIGwY2Gg1RQk0RDlIaERIRFEMKXUpcQB1aRFsHTxkUGB
NFUV5EXUtJDFAW
Base64っぽいけどデコードしても謎文字列
36
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - 通信の改ざん
Proxyツールを利用した再送
リクエスト
Proxy
ツール
悪い事をする人の環境
37
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - デモ画面
 バイナリ解析の様子(リクエスト暗号化?の鍵を探す)
対策をしていないと、
簡単・一般的なロジックの場合、
一瞬で復号するプログラムを
作成されてしまう場合がある
1. 「Base64」で検索
2.ロジックをちょっと追って
鍵っぽい文字列を探す
38
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - 通信の自動改ざん
リクエストを加工する例
③平文を
手動で改ざん
⑤改ざんされた
暗号文
Proxyツール
復号・再暗号化
モジュール
Intercept
①
②復号
④
悪い事をする人の環境
39
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - デモ画面
40
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - メモリ改ざん
 端末上のメモリを改ざんする例
1. アプリを止める
2. 特定の値を持つアドレスをメモリ内で検索
3. アプリを再開し、目的の値をアプリ上で変更
4. アプリを止める
5. 手順2で見つかったアドレスのうち変更後の値になったアドレスを
検索
6. 見つかったアドレス全てを目的の値に置換
7. アプリを再開
41
A68332F3 002b 0000 0050 f91f a600 0000
000a 0000
A6833303 0000 0000 0000 3039 0000 0000
0000 0000
A6833313 0000 0000 0073 0065 0000 0000
0000 0000
A6833323 0000 0000 0000 0000 0000 0000
0000 0000
:
A68332F3 002b 0000 0050 f91f a600 0000
000a 0000
A6833303 0000 0000 0000 3011 0000 0000
0000 0000
A6833313 0000 0000 0073 0065 0000 0000
0000 0000
A6833323 0000 0000 0000 0000 0000 0000
0000 0000
:
範囲指定、変化量などで
特定する方法もあり
変化を観測可能
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
チート勉強用サンプルアプリ - 診断に使っているツール
 Proxyツール
⁃ PacketProxy (自社ツール)
• OWASP ZAP や BurpSuite といったツールもよく利用される
 バイナリ解析ツール
⁃ IDA Pro
 メモリ改ざんツール
⁃ MemoryPatching (自社ツール)
• (一般的にGameGuardianなどの実際のチートに利用されるツールなども
利用されることがある)
 上記のような専用のツールが必要となるが、使い方を習得すれば
一定程度のチート診断が可能
42
例えば、「最低限カジュアルなチートは防ぐ」などの
どのレベルのチートを想定するかなどを決めておくことが重要
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ゲームにおけるチート、不正行為 - チートは何が困るのか? -
 チートをされてしまうと起こること
⁃ ゲームバランスが崩壊 → ゲームの寿命を著しく縮める
⁃ ユーザの不公平感を生む
⁃ 非チートユーザへの直接的被害
• PvP、GvGなどのプレイヤー間での戦闘など
⁃ 課金による発生するはずの利益の損失
→特にオンラインゲームだと影響範囲や非チートユーザの関わり方が
複雑になるため致命的になりやすい
43
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
44
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
45
アプリダウンロード
課金処理 App Store
Google Play
ゲームサーバ
データ読み込み、処理結果
処理実行
課金検証
検証結果
メモリ改ざん
不正な通信
(リクエスト)
データ
ファイル改ざん
アプリ改ざん
不正な通信
(レスポンス)
 基本的には攻撃されうるポイントを対策していけばよい
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
 チート対策の難しい部分
⁃ 特にクライアント上の対策については、仕組み上どう頑張っても完
璧な対策が無理な場合がある。いたちごっこ状態。
• 一定は運用でカバーする、という選択肢もある
⁃ 巧妙なチートユーザは発見が難しい
• チートなのか、単純に運がいい・上手いプレイなのかの区別がつかない
• 複製アイテムの所有者が善意の第三者の場合がある など
46
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
 攻撃されうるポイントへの対策
⁃ 不正な通信(リクエスト・レスポンス)
• サーバサイドでの値チェック
⁃ 取りうる値の範囲、条件
⁃ パラメータの形式チェック など
• 通信の保護
⁃ 証明書Pinning
• 単純な通信のhttps化などだけではチート対策にはならない
⁃ 通信データの独自暗号化
⁃ 送受信データの改ざん検知 など
→仮に突破されても不正の兆候を捕らえられるようにしておくと
Good
47
Proxy
ツール
Pinning
値チェック
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
 攻撃されうるポイントへの対策
⁃ メモリ改ざん、データ改ざん
• 暗号化して保存する!
⁃ 暗号ロジック、鍵がすぐに取り出せるとほとんど意味がないので、
「解析・デコンパイル対策」も頑張る
48
A68332F3 002b 0000 0050 f91f a600 0000
000a 0000
A6833303 1c80 d55b 1e6c 3658 0000 0000
0000 0000
A6833313 0000 0000 0073 0065 0000 0000
0000 0000
A6833323 0000 0000 0000 0000 0000 0000
0000 0000
:
A68332F3 002b 0000 0050 f91f a600 0000
000a 0000
A6833303 af40 0ff5 67ff a4c7 0000 0000
0000 0000
A6833313 0000 0000 0073 0065 0000 0000
0000 0000
A6833323 0000 0000 0000 0000 0000 0000
0000 0000
:
メモリ
見た目の変化とメモリ上の変化が異なる
見た目上の変化:12345 -> 12032
メモリ上の変化:1e6c 3658 -> 67ff a4c7
暗号化されて読めないデータ
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
スマホ向けゲーム開発におけるチート対策例
 攻撃されうるポイントへの対策
⁃ 解析・デコンパイル対策
• デコンパイルが難しい言語を使う
⁃ 例えば、Androidの場合、重要な処理はJavaで書かず、JNI等を使っ
て別の言語で記述した処理を呼び出す など。
⁃ できない場合は難読化を頑張る
• 暗号化などは一般的なものをそのまま使わない
⁃ 例えば、「AESだ!」とわかったら、ロジックを解析する必要はな
く、鍵だけ探せば復号できてしまう
• Packerのような解析対策の仕組みを導入する
• バイナリ内のシンボル情報を削除する
などの対策をいれる
49
※基本的にどのくらい解析が難しくなるか、という問題
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
まとめ
 チート対策をするには、まず、『何ができるの
か』を知る事が重要
⁃ 簡単なサンプルから始めて原理を理解できると
よい
 チートの難易度と対策・運用のコストを考えなが
らバランスよく運営をしていく必要がある
50

Contenu connexe

Tendances

ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)Hiroshi Tokumaru
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎ken_kitahara
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話ichirin2501
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメAkira Hirasawa
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経Yosuke HASEGAWA
 

Tendances (20)

ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経
 

Similaire à DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み

STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来Yoshihito Kuranuki
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来Yoshihito Kuranuki
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Yoshihito Kuranuki
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ CYBIRD Co.,Ltd.
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QJasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QYoshihito Kuranuki
 
ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合Kaoru NAKAMURA
 
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102AdStir
 
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102Katsuaki Sato
 
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜Koichiro Sumi
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
はじめてのKinect for windows v2
はじめてのKinect for windows v2はじめてのKinect for windows v2
はじめてのKinect for windows v2Kaoru NAKAMURA
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
New Integration "X" 新インテグレーションソリューション
New Integration "X" 新インテグレーションソリューションNew Integration "X" 新インテグレーションソリューション
New Integration "X" 新インテグレーションソリューションmotani_kamakura
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Shinya Nakajima
 
「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門Hideto Masuoka
 
CIが分からない PE(SETエンジニア)1年生が VRT(ビジュアルリグレッションテスト)をハードル低くCIを運用した
CIが分からないPE(SETエンジニア)1年生がVRT(ビジュアルリグレッションテスト)をハードル低くCIを運用したCIが分からないPE(SETエンジニア)1年生がVRT(ビジュアルリグレッションテスト)をハードル低くCIを運用した
CIが分からない PE(SETエンジニア)1年生が VRT(ビジュアルリグレッションテスト)をハードル低くCIを運用したssuser0be501
 

Similaire à DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み (20)

STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QJasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
 
ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合
 
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【AdStir】グローバル×スマホゲームの勝ち方!セミナー資料1102
 
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102
【Ad stir】グローバル×スマホゲームの勝ち方!セミナー資料1102
 
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
はじめてのKinect for windows v2
はじめてのKinect for windows v2はじめてのKinect for windows v2
はじめてのKinect for windows v2
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
New Integration "X" 新インテグレーションソリューション
New Integration "X" 新インテグレーションソリューションNew Integration "X" 新インテグレーションソリューション
New Integration "X" 新インテグレーションソリューション
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
 
「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門
 
CIが分からない PE(SETエンジニア)1年生が VRT(ビジュアルリグレッションテスト)をハードル低くCIを運用した
CIが分からないPE(SETエンジニア)1年生がVRT(ビジュアルリグレッションテスト)をハードル低くCIを運用したCIが分からないPE(SETエンジニア)1年生がVRT(ビジュアルリグレッションテスト)をハードル低くCIを運用した
CIが分からない PE(SETエンジニア)1年生が VRT(ビジュアルリグレッションテスト)をハードル低くCIを運用した
 

Dernier

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Dernier (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNA Technology Conference 2017 DeNAでのチート診断・脆弱性診断の取り組み 株式会社ディー・エヌ・エー システム本部セキュリティ部 セキュリティ技術グループ 杉山 俊春 1
  • 2. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 自己紹介  所属:株式会社ディー・エヌ・エー • セキュリティ部 セキュリティ技術グループ  名前:杉山 俊春  前職:セキュリティ関連の会社 ⁃ 脆弱性診断(Web、スマートフォンアプリ) ⁃ Web脆弱性診断ツール(VEX)開発・販売 ⁃ SaaS型Web診断サービス開発 ⁃ 技術記事執筆 など  入社:2012年1月  現在の業務: ⁃ 脆弱性診断、社内システムセキュリティ、 セキュリティログ管理、セキュリティ設計 など  好きなもの:猫、デザイン・イラスト系のもの 2 星野君のWebアプリ ほのぼの改造計画 (@IT)
  • 3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNA セキュリティ部(技術グループ)と私 3 2012 2013 2015 2013/4 セキュリティ グループ発足 2014/4 セキュリティ部発足 ・セキュリティ技術グループ←こっち ・セキュリティ推進グループ Join! セキュリティ部の位置づけ 技術グループの成り立ち 2017/2 現在9名 セキュリティ会社出身:2名 社内教育でメンバー育成 2014 2016 2017 :異動
  • 4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. DeNA セキュリティ部(技術グループ)のお仕事  リリースするアプリ・サービスのチート・脆弱性診断全般  本番ネットワークのセキュリティ(踏み台サーバ)  社内ネットワークのセキュリティ  セキュリティ相談・設計  脆弱性情報調査・社内共有  各種セキュリティの仕組み、ツールの作成 など色々 4
  • 5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティって? 5 皆さん セキュリティってどうしてますか?
  • 6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティって? 「セキュリティ」と言っても幅広いので、例えば、  スマートフォンアプリのセキュリティ  ゲームアプリのセキュリティ といわれて、何をしなきゃいけないかがイメージでき ますか? 6
  • 7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティって? とあるゲームで 「まだリリースしていないアイテムを所持している ユーザがいました」 この時、考えられる原因と対策は? 7
  • 8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. セキュリティって? 8 セキュリティって難しい?
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 9 出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 10 現在 情報セキュリティ人材 28.1万人 +13.2万人不足 すごく足りていない!? 出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 11 でも、ちょっと待って!
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 12 現在 情報セキュリティ人材 28.1万人 IT人材 91.9万人 現時点でIT人材の約3割が 情報セキュリティ人材(というデータでの話) 出典:経済産業省 IT人材の最新動向と将来推計に関する調査結果について http://www.meti.go.jp/policy/it_policy/jinzai/27FY_report.html
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 13 いい人材が見つかるまで待つ セキュリティ人材を育てる 実はセキュリティ人材はたくさんいる
  • 14. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 14 セキュリティって難しい? ↓ 範囲を明確にして、ひとつずつちゃんと 見ていけばそんなにややこしい話ではない! はず…
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 – 人材育成への取り組み  実際のゲームのセキュリティに近い形のサンプル アプリ • Cocos-2dx (C++)で作成 • (ソースコードのデコンパイルは困難) • Android OS上で動作 • サーバへの通信は暗号化(?)されている このアプリを利用して、セキュリティ・キャンプ等 のイベントでハンズオンの講義なども実施 http://dena.com/jp/csr/blog/cat277/2016/09/02/003185© DeNA  チート勉強用サンプルアプリ1 15
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 情報セキュリティ人材の不足 – 人材育成への取り組み  チート勉強用サンプルアプリ2  チートをしないと絶対にクリアできないゲーム • HTML + JavaScript ⁃ ソースコードの閲覧、改変は簡単 • ブラウザ上で動作 → CTF形式の 高校生向け セキュリティイベント用に作成 16
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 簡単なゲームでの具体的なチート例 17
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 簡単なゲームでの具体的なチート例  具体的な例を見てみましょう!(※勉強用のサンプルアプリです) 18 戦う相手を選んで コマンド選択して倒す! スタミナ回復アイテムもある
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 簡単なゲームでの具体的なチート例 19  大まかなシステムの図 プレイデータ の保存 バトルの実行 処理 データ要求、結果保存 データの応答
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 簡単なゲームでの具体的なチート例  できてしまったら困りそうなことを適当に列挙してみる ⁃ 敵のHPを1にする ⁃ 敵の攻撃力、防御力を-99999999にする ⁃ ユーザのHPを99999999にする ⁃ ユーザの攻撃力、防御力を99999999にする ⁃ 戦闘後にもらえる経験値を99999999にする ⁃ ユーザのレベルを99にする ⁃ 使えないコマンドを使う ⁃ ひたすら連続攻撃をする ⁃ 選択できない敵と戦う ⁃ 回復アイテムを無限に使う ⁃ スタミナを消費しないで戦闘を行う 20
  • 21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 簡単なゲームでの具体的なチート例 21 実際にどうなるかを見てみましょう!
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 提供するサービス、アプリ、ゲームでのセキュリティ  できてしまったら困りそうなこと ⁃ 敵のHPを1にする ⁃ 敵の攻撃力、防御力を-99999999にする ⁃ ユーザのHPを99999999にする ⁃ ユーザの攻撃力、防御力を99999999にする ⁃ 戦闘後にもらえる経験値を99999999にする ⁃ ユーザのレベルを99にする ⁃ 使えないコマンドを使う ⁃ ひたすら連続攻撃をする ⁃ 選択できない敵と戦う ⁃ 回復アイテムを無限に使う ⁃ スタミナを消費しないで戦闘を行う 22 できる できるがいまいち ※0.000001とかが正解できる できる できる? できる できる できる できるが無効? ※expを変えるべき できない できない
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 提供するサービス、アプリ、ゲームでのセキュリティ  攻撃シナリオを雑に割り当ててみる ⁃ 敵のHPを1にする • ソースコードの変更、利用中の値の直接変更 ⁃ 敵の攻撃力、防御力を-99999999にする • ソースコードの変更、利用中の値の直接変更 ⁃ ユーザのHPを99999999にする • ソースコードの変更、利用中の値の直接変更 ⁃ ユーザの攻撃力、防御力を99999999にする • ソースコードの変更、利用中の値の直接変更 ⁃ 戦闘後にもらえる経験値を99999999にする • サーバに送る値の変更 ⁃ ユーザのレベルを99にする • ソースコードの変更、利用中の値の直接変更、サーバに送る値の変更 ⁃ 使えないコマンドを使う • ソースコードの変更、特定命令の強制実行 ⁃ ひたすら連続攻撃をする • ソースコードの変更、特定命令の強制実行 ⁃ 選択できない敵と戦う • ソースコードの変更、特定命令の強制実行、サーバに送る値の変更、サーバから受け取る値の変更 ⁃ 回復アイテムを無限に使う • ソースコードの変更、サーバに送る値の変更、サーバから受け取る値の変更 ⁃ スタミナを消費しないで戦闘を行う • ソースコードの変更、サーバに送る値の変更、サーバから受け取る値の変更 23 以下の4つくらいのパターンで分類 ・ソースコード、レスポンスの変更 ・利用中の値の直接変更 ・特定命令の強制実行 ・サーバに送る値の変更 ※厳密にはここに書いてある組み合わせ でもできると思います
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 提供するサービス、アプリ、ゲームでのセキュリティ 24 悪い人が最終的に不正として実現したいことは…… ↓ サーバ上のデータを不正なものにしたい プレイデータの保存時 に不正なデータになっ ていることが重要
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 提供するサービス、アプリ、ゲームでのセキュリティ 25 ブラウザアプリ(JavaScript)だとチート簡単? ↓ スマホアプリも原理的には似たようなもの!
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲームのシステム構成の色々 26
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ゲームのシステム構成の色々  ローカルのみ 27 アプリダウンロード 課金処理 IAP、IAB ※IAP, IAB:In App Purchase (App Store) , In App Billing (Google Play) App Store Google Play
  • 28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ゲームのシステム構成の色々  クライアントアプリ+サーバ(単純なデータの保存のみ) 28 アプリダウンロード 課金処理 App Store Google Play データ読み込み データ保存
  • 29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ゲームのシステム構成の色々  クライアントアプリ+サーバ側ロジック 29 アプリダウンロード 課金処理 App Store Google Play ゲームサーバ データ読み込み、処理結果 処理実行 課金検証 各種検証、処理実行 検証結果
  • 30. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ゲームのシステム構成の色々  クライアントアプリ+サーバ側ロジック+SNS or プラットフォーム連 携 30 アプリダウンロード 課金処理 App Store Google Play ゲームサーバ データ読み込み 処理結果 処理実行 課金検証 各種検証、 処理実行 検証結果 データ読み込み 処理結果 処理実行 ゲームプラットフォーム データ読み込み 処理結果 処理実行
  • 31. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲームアプリに対する攻撃 31
  • 32. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 攻撃されうるポイント 32 アプリダウンロード 課金処理 App Store Google Play ゲームサーバ データ読み込み、処理結果 処理実行 課金検証 検証結果 メモリ改ざん 不正な通信 (リクエスト) データ ファイル改ざん アプリ改ざん 不正な通信 (レスポンス) 大半の最終的な ターゲットはここ!
  • 33. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲームにおけるチート、不正行為 33
  • 34. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - デモ画面 レスポンス改ざんで 使えるようにできる 34 © DeNA© DeNA
  • 35. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - 通信の改ざん リクエスト レスポンス 普通の通信 Proxyツールを利用した改ざん リクエスト 悪い事をする人の環境 改ざん 改ざんされた レスポンス 改ざんされた リクエスト Proxy ツール 35
  • 36. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - デモ画面  送られてるリクエストの例 POST /sfx/get_user_info.php HTTP/1.1 Accept-Encoding: identity User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.2; sdk Build/MASTER) Host: appdemo.example.com Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 80 WgMBAQ1RU1FLX1BHRwpEUlJIGwY2Gg1RQk0RDlIaERIRFEMKXUpcQB1aRFsHTxkUGB NFUV5EXUtJDFAW Base64っぽいけどデコードしても謎文字列 36
  • 37. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - 通信の改ざん Proxyツールを利用した再送 リクエスト Proxy ツール 悪い事をする人の環境 37
  • 38. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - デモ画面  バイナリ解析の様子(リクエスト暗号化?の鍵を探す) 対策をしていないと、 簡単・一般的なロジックの場合、 一瞬で復号するプログラムを 作成されてしまう場合がある 1. 「Base64」で検索 2.ロジックをちょっと追って 鍵っぽい文字列を探す 38
  • 39. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - 通信の自動改ざん リクエストを加工する例 ③平文を 手動で改ざん ⑤改ざんされた 暗号文 Proxyツール 復号・再暗号化 モジュール Intercept ① ②復号 ④ 悪い事をする人の環境 39
  • 40. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - デモ画面 40
  • 41. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - メモリ改ざん  端末上のメモリを改ざんする例 1. アプリを止める 2. 特定の値を持つアドレスをメモリ内で検索 3. アプリを再開し、目的の値をアプリ上で変更 4. アプリを止める 5. 手順2で見つかったアドレスのうち変更後の値になったアドレスを 検索 6. 見つかったアドレス全てを目的の値に置換 7. アプリを再開 41 A68332F3 002b 0000 0050 f91f a600 0000 000a 0000 A6833303 0000 0000 0000 3039 0000 0000 0000 0000 A6833313 0000 0000 0073 0065 0000 0000 0000 0000 A6833323 0000 0000 0000 0000 0000 0000 0000 0000 : A68332F3 002b 0000 0050 f91f a600 0000 000a 0000 A6833303 0000 0000 0000 3011 0000 0000 0000 0000 A6833313 0000 0000 0073 0065 0000 0000 0000 0000 A6833323 0000 0000 0000 0000 0000 0000 0000 0000 : 範囲指定、変化量などで 特定する方法もあり 変化を観測可能
  • 42. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. チート勉強用サンプルアプリ - 診断に使っているツール  Proxyツール ⁃ PacketProxy (自社ツール) • OWASP ZAP や BurpSuite といったツールもよく利用される  バイナリ解析ツール ⁃ IDA Pro  メモリ改ざんツール ⁃ MemoryPatching (自社ツール) • (一般的にGameGuardianなどの実際のチートに利用されるツールなども 利用されることがある)  上記のような専用のツールが必要となるが、使い方を習得すれば 一定程度のチート診断が可能 42 例えば、「最低限カジュアルなチートは防ぐ」などの どのレベルのチートを想定するかなどを決めておくことが重要
  • 43. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ゲームにおけるチート、不正行為 - チートは何が困るのか? -  チートをされてしまうと起こること ⁃ ゲームバランスが崩壊 → ゲームの寿命を著しく縮める ⁃ ユーザの不公平感を生む ⁃ 非チートユーザへの直接的被害 • PvP、GvGなどのプレイヤー間での戦闘など ⁃ 課金による発生するはずの利益の損失 →特にオンラインゲームだと影響範囲や非チートユーザの関わり方が 複雑になるため致命的になりやすい 43
  • 44. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例 44
  • 45. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例 45 アプリダウンロード 課金処理 App Store Google Play ゲームサーバ データ読み込み、処理結果 処理実行 課金検証 検証結果 メモリ改ざん 不正な通信 (リクエスト) データ ファイル改ざん アプリ改ざん 不正な通信 (レスポンス)  基本的には攻撃されうるポイントを対策していけばよい
  • 46. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例  チート対策の難しい部分 ⁃ 特にクライアント上の対策については、仕組み上どう頑張っても完 璧な対策が無理な場合がある。いたちごっこ状態。 • 一定は運用でカバーする、という選択肢もある ⁃ 巧妙なチートユーザは発見が難しい • チートなのか、単純に運がいい・上手いプレイなのかの区別がつかない • 複製アイテムの所有者が善意の第三者の場合がある など 46
  • 47. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例  攻撃されうるポイントへの対策 ⁃ 不正な通信(リクエスト・レスポンス) • サーバサイドでの値チェック ⁃ 取りうる値の範囲、条件 ⁃ パラメータの形式チェック など • 通信の保護 ⁃ 証明書Pinning • 単純な通信のhttps化などだけではチート対策にはならない ⁃ 通信データの独自暗号化 ⁃ 送受信データの改ざん検知 など →仮に突破されても不正の兆候を捕らえられるようにしておくと Good 47 Proxy ツール Pinning 値チェック
  • 48. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例  攻撃されうるポイントへの対策 ⁃ メモリ改ざん、データ改ざん • 暗号化して保存する! ⁃ 暗号ロジック、鍵がすぐに取り出せるとほとんど意味がないので、 「解析・デコンパイル対策」も頑張る 48 A68332F3 002b 0000 0050 f91f a600 0000 000a 0000 A6833303 1c80 d55b 1e6c 3658 0000 0000 0000 0000 A6833313 0000 0000 0073 0065 0000 0000 0000 0000 A6833323 0000 0000 0000 0000 0000 0000 0000 0000 : A68332F3 002b 0000 0050 f91f a600 0000 000a 0000 A6833303 af40 0ff5 67ff a4c7 0000 0000 0000 0000 A6833313 0000 0000 0073 0065 0000 0000 0000 0000 A6833323 0000 0000 0000 0000 0000 0000 0000 0000 : メモリ 見た目の変化とメモリ上の変化が異なる 見た目上の変化:12345 -> 12032 メモリ上の変化:1e6c 3658 -> 67ff a4c7 暗号化されて読めないデータ
  • 49. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. スマホ向けゲーム開発におけるチート対策例  攻撃されうるポイントへの対策 ⁃ 解析・デコンパイル対策 • デコンパイルが難しい言語を使う ⁃ 例えば、Androidの場合、重要な処理はJavaで書かず、JNI等を使っ て別の言語で記述した処理を呼び出す など。 ⁃ できない場合は難読化を頑張る • 暗号化などは一般的なものをそのまま使わない ⁃ 例えば、「AESだ!」とわかったら、ロジックを解析する必要はな く、鍵だけ探せば復号できてしまう • Packerのような解析対策の仕組みを導入する • バイナリ内のシンボル情報を削除する などの対策をいれる 49 ※基本的にどのくらい解析が難しくなるか、という問題
  • 50. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. まとめ  チート対策をするには、まず、『何ができるの か』を知る事が重要 ⁃ 簡単なサンプルから始めて原理を理解できると よい  チートの難易度と対策・運用のコストを考えなが らバランスよく運営をしていく必要がある 50