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
710
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
「
第1回 セキュリティ若手の会
」(2024/12/08) での登壇資料です。
pizzacat83
December 05, 2024
Tweet
Share
More Decks by pizzacat83
See All by pizzacat83
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
800
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
770
Other Decks in Technology
See All in Technology
When Windows Meets Kubernetes…
pichuang
0
310
KMP with Crashlytics
sansantech
PRO
0
240
新卒1年目、はじめてのアプリケーションサーバー【IBM WebSphere Liberty】
ktgrryt
0
130
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
AWS re:Invent 2024 recap in 20min / JAWSUG 千葉 2025.1.14
shimy
1
100
dbtを中心にして組織のアジリティとガバナンスのトレードオンを考えてみた
gappy50
0
300
30分でわかる「リスクから学ぶKubernetesコンテナセキュリティ」/30min-k8s-container-sec
mochizuki875
3
450
TSのコードをRustで書き直した話
askua
3
260
EMConf JP の楽しみ方 / How to enjoy EMConf JP
pauli
2
150
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
0
350
Visual StudioとかIDE関連小ネタ話
kosmosebi
1
380
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
150
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Navigating Team Friction
lara
183
15k
Making Projects Easy
brettharned
116
6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Rails Girls Zürich Keynote
gr2m
94
13k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
GitHub's CSS Performance
jonrohan
1030
460k
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卒も若手中途もセキュリティエンジニア積極採用中!