Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手...
Search
pizzacat83
December 05, 2024
Technology
0
2k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
「
第1回 セキュリティ若手の会
」(2024/12/08) での登壇資料です。
pizzacat83
December 05, 2024
Tweet
Share
More Decks by pizzacat83
See All by pizzacat83
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
600
Language Server と喋ろう – TSKaigi 2025
pizzacat83
4
2.9k
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
1k
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
2k
Other Decks in Technology
See All in Technology
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
130
NewSQL_ ストレージ分離と分散合意を用いたスケーラブルアーキテクチャ
hacomono
PRO
4
380
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
2
150
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
220
進化するBits AI SREと私と組織
nulabinc
PRO
1
240
Sansanでの認証基盤内製化と移行
sansantech
PRO
0
540
AI時代の「本当の」ハイブリッドクラウド — エージェントが実現した、あの頃の夢
ebibibi
0
140
[JAWSDAYS2026]Who is responsible for IAM
mizukibbb
0
820
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
240
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
脳内メモリ、思ったより揮発性だった
koutorino
0
380
1GB RAMのラズピッピで何ができるのか試してみよう / 20260319-rpijam-1gb-rpi-whats-possible
akkiesoft
0
160
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Practical Orchestrator
shlominoach
191
11k
Paper Plane (Part 1)
katiecoart
PRO
0
5.7k
The Cult of Friendly URLs
andyhume
79
6.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
990
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
770
30 Presentation Tips
portentint
PRO
1
250
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
エンジニアに許された特別な時間の終わり
watany
106
240k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
230
Designing for Timeless Needs
cassininazir
0
170
Transcript
開発者向けツールを魔改造して セキュリティ診断ツールを作っている話 ぴざきゃっと (@pizzacat83)
会社紹介 プロダクト開発組織向けセキュリティサービスを提供 アプリケーションの脆弱性を探し、 リスクを調査する 人による診断サービス・自動診断 SaaS 開発者 セキュリティ リスク 顧客の要望
社会課題 ミッション「エンジニアの背中を預かる」
開発者向けツールを魔改造して セキュリティ診断ツールを作っている話 ?
Flatt Security のセキュリティ診断 診断してください 2🕵️♂ ️ セキュリティ エンジニア アプリ ソースコード
🧑💻 プロダクト開発企業
Flatt Security のセキュリティ診断 " OR 1=1-- 1🕵️♂ ️ セキュリティ エンジニア
アプリ ソースコード 🧑💻 プロダクト開発企業
Flatt Security のセキュリティ診断 B 脆弱性の概1 B 緊急度・具体的なリス9 B 修正方法 診断報告書
Q🕵️♂ ️ セキュリティ エンジニア アプリ ソースコード 🧑💻 プロダクト開発企業
Flatt Security のセキュリティ診断の特長 ソースコードも 読んで診断 共通ロジックを 効率的にチェック モダンな技術に対応 GraphQL gRPC-web
クラウドネイティブ etc. 高い技術力 学びが多い 楽しい
開発者向けツールを魔改造して セキュリティ診断ツールを作っている話
怪しい箇所を見つけたとき 🕵️♂ ️ javascript:alert(1)//https://test XSS?
怪しい箇所の深掘り IsValidURL を呼ぶ API を探す func UpdateUserInfo(req) func IsValidUserInfo(info) func
IsValidURL(url) PUT /users/{id} を応用したツール 出力先 API を探す PUT /users/{id} GET /users GET /users/{id} "url": " " javascript:…… 反映 出力先 API を呼ぶ 画面を探す app.example/users/search?… GET /users を応用したツール
特定 API を呼ぶ画面を探す GET /users GET /users/{id} はどの画面で、どう操作すると呼び出される? W🕵️♂ ️
? app.example/items/1/reviews GET /users/{id} フロントエンド URL API 通信 クリック箇所 ブラウザが全部知ってるはず!
特定 API を呼ぶ画面を探す app.example/items/1/reviews フロントエンド URL API 通信 クリック箇所 操作
GET /users/{id} A C B click「詳細」 click 〇〇 画面遷移図 } 生成 いつも通りブラウザを 操作するとついでに 画面遷移図が完成 「この API はどの画面で、どう操作すると呼び出される?」 が検索できる
ブラウザから情報を抽出するには app.example/items/1/reviews app.example/items/1/reviews フロントエンド URL API 通信 クリック箇所 … location.href
… DevTools ネットワークタブを参考に … addEventListener('click') record(location.href) addEventListener('click', record) 監視用 JS ReactDOM.createRoot(app) .render(<App />); アプリの JS 追加実行
アプリケーションに干渉するツールの懸念 🤔 もしフロントエンドが addEventListener を書き換えていたら…? あるいは Array.prototype とかを書き換えてたら…? どんなアプリケーションに対しても 監視用
JS は正常に動いてほしい app.example/items/1/reviews addEventListener('click', record) 監視用 JS addEventListener = myFunc アプリの JS グローバル変数 prototype 書き換え 🔪
アプリケーションに干渉するツールの懸念 🤔 監視用 JS の処理が、アプリケーション本来の動作を 阻害してしまわないか…? 監視用 JS が アプリケーションを壊さないでほしい
app.example/items/1/reviews addEventListener('click', record) 監視用 JS addEventListener = myFunc アプリの JS グローバル変数 prototype うっかり変更 🔪
アプリケーションに干渉するツールの懸念 監視用 JS が アプリケーションを壊さないでほしい app.example/items/1/reviews addEventListener('click', record) 監視用 JS
addEventListener = myFunc アプリの JS どんなアプリケーションに対しても 監視用 JS は正常に動いてほしい
百戦錬磨の大師匠 DevTools app.example/items/1/reviews addEventListener = myFunc アプリの JS ブラウザ DevTools
壊さない 壊されない 「DevTools で見てたら アプリ壊れた」は稀 「DevTools が動かない アプリ」は稀 DOM 書き換えたり スクリプト実行したりすると 流石に壊れることもあるが… 意図的に DevTools を妨害する ものは稀にあれど…
DevTools’ idea: JS の world を隔離 app.example/items/1/reviews main world グローバル変数
prototype DOM wrapper アプリの JS DevTools’ world グローバル変数 prototype DOM wrapper DevTools の JS 隔 離
world を活用した、壊さない・壊されない干渉 app.example/items/1/reviews main world グローバル変数 prototype DOM wrapper アプリの
JS 監視用 world グローバル変数 prototype DOM wrapper 監視用 JS 隔 離 アプリを壊さず・壊されずに、画面遷移図に必要な情報を抽出!
なぜ診断ツール開発に力を入れるのか
Flatt Security のサービス 🕵️♂ ️ 精鋭エンジニアによる 手動診断サービス 開発組織自身が使える 自動診断 SaaS
「手動診断と自動診断の2本立て」?
Flatt Security のサービス クローラ スキャナ 診断履歴 コード解析 インフラ構成分析 手動・自動診断は独立した2サービスではない 診断を外注するユーザー企業にも、診断を内製化するユーザー企業にも
ソフトウェア群を活用した最高の診断体験を届ける 🧑💻 🕵️♂ ️ 診断を支えるソフトウェア群 Flatt エンジニア 活用 外注 内製診断で 使う 組み込み
人とソフトウェアが共進化する クローラ スキャナ 診断履歴 コード解析 インフラ構成分析 🧑💻 D🕵️♂ ️ 診断を支えるソフトウェア群
労力削減 高度診断の探求 ノウハウのコード化 波及
$ whoami pizzacat83 新卒1年目・勤続4年超 2022– ソフトウェアエンジニア (自動診断の開発) 自動で見つける技術 2020–2022 a🕵️♂
️ セキュリティエンジニア (手動診断) 自分で見つける技術 開発とセキュリティの架け橋へ
おわりに 「色々なアプリケーションを調査するソフトウェア」として 開発者向けツールは百戦錬磨 開発者向けツールの実装を読み解き、 「欲しいツールを実現する技術」を吸収しよう!
We're hiring! ソースコードを読んで診断する 学びの多い仕事 調査を助けるツール開発を 促進する事業構造 ツールを作れる技術力 「よさそ〜」と思った人も 「や、自分の方がもっと賢いツール作れる」と思った人も ぜひ一緒に働きましょう!
カジュアル面談 → https://recruit.flatt.tech 長期インターン 新卒採用 中途採用 26卒も若手中途もセキュリティエンジニア積極採用中!