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
1.2k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
「
第1回 セキュリティ若手の会
」(2024/12/08) での登壇資料です。
pizzacat83
December 05, 2024
Tweet
Share
More Decks by pizzacat83
See All by pizzacat83
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
290
Language Server と喋ろう – TSKaigi 2025
pizzacat83
3
1.3k
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
890
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
1.2k
Other Decks in Technology
See All in Technology
Javalinの紹介
notoh
0
100
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
320
評価の納得感を2段階高める「構造化フィードバック」
aloerina
1
160
Amplifyとゼロからはじめた AIコーディング 成果と展望
mkdev10
1
210
TerraformをSaaSで使うとAzureの運用がこんなに楽ちん!HCP Terraformって何?
mnakabayashi
0
120
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
150
In Praise of "Normal" Engineers (LDX3)
charity
2
850
比起獨自升級 我更喜歡 DevOps 文化 <3
line_developers_tw
PRO
0
150
Securing your Lambda 101
chillzprezi
0
260
2025/6/21 日本学術会議公開シンポジウム発表資料
keisuke198619
1
230
“プロダクトを好きになれるか“も QAエンジニア転職の大事な判断基準だと思ったの
tomodakengo
0
130
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
550
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Designing for humans not robots
tammielis
253
25k
We Have a Design System, Now What?
morganepeng
52
7.6k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Visualization
eitanlees
146
16k
Scaling GitHub
holman
459
140k
Statistics for Hackers
jakevdp
799
220k
Rails Girls Zürich Keynote
gr2m
94
14k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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卒も若手中途もセキュリティエンジニア積極採用中!