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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
pizzacat83
December 05, 2024
Technology
2.2k
0
Share
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
「
第1回 セキュリティ若手の会
」(2024/12/08) での登壇資料です。
pizzacat83
December 05, 2024
More Decks by pizzacat83
See All by pizzacat83
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
640
Language Server と喋ろう – TSKaigi 2025
pizzacat83
4
3.2k
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
1.1k
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
2.1k
Other Decks in Technology
See All in Technology
GitHub Copilot のこれまでとこれから: From Copilot to Collaborative Agents
yuriemori
1
190
Oracle Cloud Infrastructure:2026年5月度サービス・アップデート
oracle4engineer
PRO
1
110
Node.js+TypeScriptにおけるCJS/ESM相互運用の最新ポイント
grainrigi
2
120
コーディングエージェントはTypeScriptの 型エラーをどう自己修正しているのか
melonps
4
490
TypeScript で Platform SDK を作る技術
toiroakr
1
310
eBPF Can Do It! A 5-Minute Tour of 5 Real-World PHP Issues Solved with eBPF
egmc
0
250
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
400
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
2
320
インフラが苦手でも大丈夫! 紙芝居 Kubernetes -WWGT 10周年編-
aoi1
1
150
その英語学習、AWSで代替できませんか?
suzutatsu
1
260
ビジュアルプログラミングIoTLT vol.23
1ftseabass
PRO
0
130
TypeScript の型で副作用の実行順序を制御する
yanaemon
2
210
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
430
RailsConf 2023
tenderlove
30
1.4k
Discover your Explorer Soul
emna__ayadi
2
1.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
The Cost Of JavaScript in 2023
addyosmani
55
9.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
580
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Embracing the Ebb and Flow
colly
88
5k
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卒も若手中途もセキュリティエンジニア積極採用中!