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
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法 / Automa...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Komei Nomura
June 14, 2019
Research
2
1.1k
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法 / Automatic whitelist generation for SQL queries using web application tests
IOT46 第46回インターネットと運用技術研究会
Komei Nomura
June 14, 2019
Tweet
Share
More Decks by Komei Nomura
See All by Komei Nomura
さくらのクラウドでのcloud-initの実装と利用例の紹介 / Implementation of cloud-init in SAKURA Cloud and introduction of usage examples
komei22
3
1.2k
Kerasによるモデル構築 / Model-building-with-Keras
komei22
0
7k
ハンドメイド作品を対象としたECサイトにおける単語の出現頻度を用いた稀覯品の検出 / Detection of Rare Works Using Term Frequency on Electronic Commerce Site for Trading Handmade Works
komei22
1
960
Automatic Whitelist Generation for SQL Queries Using Web Application Tests
komei22
3
1.5k
ペパコンナイト:セキュリティWG成果報告 / pepacon night: security working group report
komei22
2
1.8k
不正クエリを検知するsqdを作った
komei22
1
860
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
6k
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
1.6k
新卒研究員の研究開発 〜セキュアなWebサービスを目指して〜
komei22
0
1.9k
Other Decks in Research
See All in Research
説明可能な機械学習と数理最適化
kelicht
2
900
スキマバイトサービスにおける現場起点でのデザインアプローチ
yoshioshingyouji
0
280
POI: Proof of Identity
katsyoshi
0
130
データサイエンティストをめぐる環境の違い2025年版〈一般ビジネスパーソン調査の国際比較〉
datascientistsociety
PRO
0
640
ペットのかわいい瞬間を撮影する オートシャッターAIアプリへの スマートラベリングの適用
mssmkmr
0
200
湯村研究室の紹介2025 / yumulab2025
yumulab
0
290
AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性 / AI Supercomputer LLM Benchmarking and Observability
yuukit
1
600
AIスパコン「さくらONE」の オブザーバビリティ / Observability for AI Supercomputer SAKURAONE
yuukit
2
1.1k
それ、チームの改善になってますか?ー「チームとは?」から始めた組織の実験ー
hirakawa51
0
560
存立危機事態の再検討
jimboken
0
230
令和最新技術で伝統掲示板を再構築: HonoX で作る型安全なスレッドフロート型掲示板 / かろっく@calloc134 - Hono Conference 2025
calloc134
0
540
ウェブ・ソーシャルメディア論文読み会 第36回: The Stepwise Deception: Simulating the Evolution from True News to Fake News with LLM Agents (EMNLP, 2025)
hkefka385
0
140
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
Are puppies a ranking factor?
jonoalderson
1
2.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Balancing Empowerment & Direction
lara
5
860
Accessibility Awareness
sabderemane
0
45
Designing for Performance
lara
610
70k
Faster Mobile Websites
deanohume
310
31k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
740
How Software Deployment tools have changed in the past 20 years
geshan
0
31k
Raft: Consensus for Rubyists
vanstee
141
7.3k
RailsConf 2023
tenderlove
30
1.3k
Transcript
ଜ໋(ϖύϘݚڀॴ), ྗ݈࣍(ྗ݈ٕ࣍ज़࢜ࣄॴ, ϖύϘݚڀॴ), দຊ྄հ(͘͞ΒΠϯλʔωοτגࣜձࣾ) 2019.06.14 IOT46 ୈ46ճΠϯλʔωοτͱӡ༻ٕज़ݚڀձ WebΞϓϦέʔγϣϯςετΛ༻͍ͨ SQLΫΤϦͷϗϫΠτϦετࣗಈ࡞ख๏
1. ݚڀͷഎܠͱత 2. ैདྷͷϗϫΠτϦετࣗಈ࡞ख๏ 3. ఏҊख๏ 4. ࣮ڥͰͷ࣮ݧ 5. ·ͱΊͱࠓޙͷ՝
2 ࣍
1. ݚڀͷഎܠͱత
• WebαʔϏεʹ͓͍ͯσʔλϕʔε্ͷػີใͷอޢॏཁ • ߈ܸऀWebΞϓϦέʔγϣϯͷ੬ऑੑΛ͡Ίͱ༷ͯ͠ʑͳखஈͰػີ ใΛऔ • ߈ܸͷྫɿSQLΠϯδΣΫγϣϯɼOSίϚϯυΠϯδΣΫγϣϯͳͲ • σʔλϕʔεͷ߈ܸ։ൃऀͷఆ֎ͷΫΤϦʢෆਖ਼ΫΤϦʣΛσʔλϕʔ εʹൃߦ͢Δ͜ͱͰ࣮ࢪ
• σʔλϕʔεʹൃߦ͞ΕΔΫΤϦΛࢹ͠ෆਖ਼ΫΤϦΛݕ͢ΔΈ͕ඞཁ 4 ݚڀͷഎܠ
• ϒϥοΫϦετํࣜ • ෆਖ਼ͳΫΤϦύλʔϯΛϦετʹఆٛ͠ɼύλʔϯͱ߹க͢ΔͷΛݕ͢Δ • ϗϫΠτϦετํࣜ • ਖ਼ৗͳΫΤϦύλʔϯΛϦετʹఆٛ͠ɼύλʔϯͱ߹க͠ͳ͍ͷΛݕ͢Δ ϒϥοΫϦετͷΈར༻Ͱطͷύλʔϯ͔͠ݕͰ͖ͳ͍͕ɼෆਖ਼ΫΤϦʹະ ͷύλʔϯ͋ΓಘΔ
ະͷύλʔϯͷݕʹϗϫΠτϦετ͕ඞཁͱͳΔ 5 ෆਖ਼ΫΤϦͷݕํ๏
• WebΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦΛखಈͰϗϫΠτϦετʹొ • େنͳWebΞϓϦέʔγϣϯͰൃߦΫΤϦ͕େ → શͯͷΫΤϦΛϗϫΠτϦετʹొ͢Δ͜ͱ͕ࠔ • WebΞϓϦέʔγϣϯͷվमʹΑͬͯൃߦΫΤϦมԽ → ϗϫΠτϦετͷߋ৽͕ඞཁ
6 ϗϫΠτϦετ࡞ͱͦͷ՝ ӡ༻ऀͷෛՙ͕ߴ͍
• ։ൃӡ༻ऀ͕ϗϫΠτϦετͷ࡞Λҙࣝ͢Δ͜ͱͳ࣮͘ߦͰ͖ɼϗϫΠτϦ ετΛ༻͍ͯෆਖ਼ΫΤϦΛݕ͢ΔΈͷ࣮ݱ • ϗϫΠτϦετWebΞϓϦέʔγϣϯͷൃߦΫΤϦͷมߋʹै͠ͳ͕ ΒࣗಈͰ࡞͢Δඞཁ͕͋Δ 7 ݚڀͷత
2. ैདྷͷϗϫΠτϦετࣗಈ࡞ख๏
• WebΞϓϦέʔγϣϯՔಈதʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετΛ࡞ • ൃߦ͞ΕͨΫΤϦΛར༻͢ΔͷͰɼWebΞϓϦέʔγϣϯͷ࣮ʹґଘ͠ͳ͍ • ࣮ݴޠɼϑϨʔϜϫʔΫͳͲ 9 WebΞϓϦέʔγϣϯՔಈதͷΫΤϦΛ༻͍ͨख๏ σʔλϕʔε 8FCΞϓϦέʔγϣϯ
ΫΤϦ ϗϫΠτϦετ 8FCΞϓϦέʔγϣϯՔಇத )551ϦΫΤετ
• WebΞϓϦέʔγϣϯՔಇޙɼଈ࠲ʹෆਖ਼ΫΤϦΛݕͰ͖ͳ͍ • ϗϫΠτϦετΛ࡞͢ΔͨΊʹɼՔಇதʹΫΤϦΛऩू͢Δظ͕ؒඞཁ • ΫΤϦͷऩूظؒதෆਖ਼ΫΤϦͷݕΛߦ͑ͳ͍ • ෆਖ਼ΫΤϦΛݕͰ͖ͳ͍ظ͕ؒଟൃ͢Δ • WebαʔϏεͷվमසߴ͍ͨΊɼൃߦΫΤϦසൟʹมԽ͢Δ
10 WebΞϓϦέʔγϣϯՔಈதͷΫΤϦΛ༻͍ͨख๏ ϗϫΠτϦετͷ࡞8FCΞϓϦέʔγϣϯՔಈલʹߦ͏ඞཁ͕͋Δ
• WebΞϓϦέʔγϣϯͷSQLจΛΈཱͯΔॲཧΛղੳ͠ɼൃߦ͞ΕΔΫΤ ϦͷύλʔϯΛྻڍ͢Δ • ιʔείʔυΛೖྗͱ͢Δ͜ͱͰɼWebΞϓϦέʔγϣϯՔಈલͷϗϫΠτ Ϧετ࡞ΛՄೳʹ͢Δ 11 ιʔείʔυղੳΛ༻͍ͨख๏ ղੳث ιʔείʔυ
ϗϫΠτϦετ 8FCΞϓϦέʔγϣϯՔಈલ
• ෳͷ࣮͕ҟͳΔWebΞϓϦέʔγϣϯͰ൚༻తʹར༻Ͱ͖ͳ͍ • ιʔείʔυͷղੳ͕WebΞϓϦέʔγϣϯͷ࣮ݴޠϑϨʔϜϫʔΫʹ ґଘ͢Δ • WebαʔϏε͕༷ʑͳݴޠϑϨʔϜϫʔΫͰߏ͞Ε͍ͯΔ߹ɼͦΕͧΕ ʹରͯ͠ղੳثΛ࣮͢Δ͜ͱɼ࣮ͷ͕ଟ͍ 12 ιʔείʔυղੳΛ༻͍ͨख๏
8FCΞϓϦέʔγϣϯͷ࣮ʹґଘͤͣɼ౷Ұతʹ࣮ࢪͰ͖Δํ๏͕ඞཁ
3. ఏҊख๏
1. ϗϫΠτϦετͷ࡞ΛWebΞϓϦέʔγϣϯՔಈલʹߦ͏ • Քಈޙʹଈ࣌ʹݕΛߦ͏ͨΊ 2. WebΞϓϦέʔγϣϯͷ࣮ʹґଘͤͣ౷Ұతʹ࣮ࢪͰ͖Δ • ద༻͢ΔWebΞϓϦέʔγϣϯ͝ͱͷ࣮ͷΛݮ͢ΔͨΊ 14 ఏҊख๏ͷཁ݅
• WebΞϓϦέʔγϣϯͷςετ࣌ʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετΛ ࡞͢Δ • ࣗಈςετΛ༻͍ͨ։ൃϓϩηεʹϗϫΠτϦετ࡞ΛΈࠐΉ • ΫΤϦͷऩूσʔλϕʔεϓϩΩγͰߦ͏ 15 ఏҊख๏ͷ֓ཁ
16 ࣗಈςετΛ༻͍ͨ։ൃϓϩηε w ৽ػೳͷՃ w طଘػೳͷमਖ਼ w 8FCΞϓϦέʔγϣϯͷಈ࡞खॱͱಈ࡞ͷ݁ՌΛهड़ w ςετίʔυΛݩʹࣗಈͰςετΛ࣮ߦ
w 8FCΞϓϦέʔγϣϯͷಈ࡞͕༷௨Γ͔Λ֬ೝ w ςετࣦഊɿ8FCΞϓϦέʔγϣϯͷιʔείʔυ ͘͠ςετίʔυʹ͋Γ w ςετޭɿ8FCΞϓϦέʔγϣϯ͕༷௨Γʹಈ࡞ w 8FCΞϓϦέʔγϣϯͷιʔείʔυΛαʔόʹஔ w 8FCΞϓϦέʔγϣϯΛՔಇ ։ൃ ςετίʔυͷهड़ αʔόʔʹஔ ࣗಈςετ࣮ߦ /P :FT ΞϓϦέʔγϣϯՔಇ ςετޭʁ
17 w ςετ࣌ʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετΛ ࡞ w ҎԼΛͦΕͧΕαʔόʹஔ w 8FCΞϓϦέʔγϣϯͷιʔείʔυ w ϗϫΠτϦετ
։ൃϓϩηεʹ͓͚ΔఏҊख๏ͷҐஔ͚ w 8FCΞϓϦέʔγϣϯͷมߋʹैͯ͠ςετίʔυ มߋ ˠൃߦΫΤϦͷมԽʹैͯ͠ϗϫΠτϦετΛߋ৽ w 8FCΞϓϦέʔγϣϯՔಈલʹϗϫΠτϦετ࡞ ˠՔಈޙɼଈ࠲ʹෆਖ਼ΫΤϦΛݕՄೳ ։ൃ ςετίʔυͷهड़ αʔόʔʹஔ /P :FT ΞϓϦέʔγϣϯՔಇ ςετޭʁ ΫΤϦͷऩू `ࣗಈςετ࣮ߦ ϗϫΠτϦετ࡞
18 ఏҊख๏ͷઃܭɿϗϫΠτϦετ࡞ • σʔλϕʔεϓϩΩγΛஔ͠ɼςετ࣮ߦதʹൃߦ͞ΕͨΫΤϦΛऩू • ऩूͨ͠ΫΤϦͷϦςϥϧΛϓϨʔεϗϧμʔʹஔ͖͑ͨΫΤϦߏʹม͠ɼϗ ϫΠτϦετʹొ • ΫΤϦ͔ΒϗϫΠτϦετΛ࡞Δ͜ͱͰɼWebΞϓϦέʔγϣϯͷ࣮ʹґଘͤͣɼϗ ϫΠτϦετΛ࡞Մೳ
σʔλϕʔε 8FCΞϓϦέʔγϣϯ σʔλϕʔεϓϩΩγ ϗϫΠτϦετ ΫΤϦͷऩूͱ ΫΤϦߏͷม ΫΤϦ ΫΤϦ 4&-&$5 '30.VTFST8)&3&JE 4&-&$5 '30.VTFST8)&3&JE ΫΤϦߏͷมͷྫ
19 ఏҊख๏ͷઃܭɿՔಇ࣌ͷݕ • ൃߦΫΤϦΛΫΤϦߏʹม͠ϗϫΠτϦετͱর߹͢Δ͜ͱͰɼෆਖ਼ΫΤϦ Λݕ σʔλϕʔε 8FCΞϓϦέʔγϣϯ σʔλϕʔεϓϩΩγ 8FCΞϓϦέʔγϣϯՔಇத ΫΤϦ
ΫΤϦ ൃߦΫΤϦΛΫΤϦߏʹม͠ ϗϫΠτϦετͱর߹ ෆਖ਼ΫΤϦ ग़ྗ ϗϫΠτϦετ
4. ࣮ڥͰͷ࣮ݧ
• ఏҊख๏ͷݕਫ਼ΛධՁ͢ΔͨΊʹɼҎԼͷ2ͭͷධՁࢦඪΛఆٛ͢Δ • False positive: ਖ਼ৗͳΫΤϦΛޡͬͯෆਖ਼ͱஅ͢Δ͜ͱ • ਖ਼ৗͳΫΤϦͱɼ։ൃऀ͕ఆ͢ΔೖྗʹΑͬͯWebΞϓϦέʔγϣ ϯ͕ൃߦ͢ΔΫΤϦ •
False negative: ෆਖ਼ΫΤϦΛޡͬͯਖ਼ৗͱஅ͢Δ͜ͱ • ෆਖ਼ΫΤϦͱɼ߈ܸʹΑͬͯൃߦ͞ΕΔ։ൃऀͷఆ֎ͷΫΤϦ 21 ධՁࢦඪ
• ఏҊख๏ςετ࣌ͷΫΤϦ͔ΒϗϫΠτϦετΛ࡞͢ΔͷͰɼςετ࣌ͱՔಇ࣌ͷΫΤϦ ͷ͕ؔݕਫ਼ʹӨڹΛ༩͑Δ 22 False positive / negativeͷཁҼͱͳΔΫΤϦ Քಇ࣌ʹൃߦ͞ΕΔΫΤϦ ςετ࣌ʹൃߦ͞ΕΔΫΤϦ
• ςετ࣌ʹ͔͠ൃߦ͞Εͳ͍ཧ༝ • ςετσʔλͷొɼҰׅআ ͳͲͷૢ࡞Λߦ͏ΫΤϦ͕͋Δ • Քಇ࣌ʹ͔͠ൃߦ͞Εͳ͍ཧ༝ • ςετέʔεՔಇ࣌ͷ࣮ߦύ λʔϯͷҰ෦ͳͷͰɼՔಇ࣌ͷ ΫΤϦΛཏͰ͖ͳ͍ 'BMTFOFHBUJWFͷཁҼ 'BMTFQPTJUJWFͷཁҼ
• False positive / negativeͷཁҼͱͳΔΫΤϦ͕࣮ڥʹ͓͍ͯͲͷఔؚ· ΕΔ͔Λ֬ೝ͢Δ࣮ݧΛߦͬͨ • ࣮ڥͷΫΤϦϩάٳͷ3Λऔಘͨ͠ • ٳͷΫΤϦϩάΛऔಘͨ͠ͷɼWebΞϓϦέʔγϣϯͷߋ৽ʹΑΔ
ൃߦΫΤϦͷมԽΛഉআ͢ΔͨΊ • ςετ࣌ͷΫΤϦΫΤϦϩάͷظؒʹՔಇ͍ͯͨ͠WebΞϓϦέʔγϣ ϯΛར༻ͯ͠औಘͨ͠ 23 ࣮ڥͰͷ࣮ݧ
• ΫΤϦΛΫΤϦߏʹมͯ͠ूܭ 24 ࣮ڥͰͷ࣮ݧ݁Ռ ࣮ڥͰൃߦ͞ΕͨΫΤϦߏʢΫΤϦϩάʣ ςετ࣌ʹൃߦ͞ΕͨΫΤϦߏ ςετ࣌ͱ࣮ڥͰൃߦ͞ΕͨΫΤϦߏͷ૯ɿ
'BMTFQPTJUJWFͷཁҼͱͳΔ ΫΤϦ 'BMTFOFHBUJWFͷཁҼͱ ͳΔΫΤϦ
• શͯਖ਼ৗͳॲཧʹΑͬͯൃߦ͞Εͨͷ • ςετ࣌ʹൃߦ͞Εͳ͔ͬͨཧ༝ɿ ɹ ςετέʔεͷܽɼDBͷΞΫηεলུ • ࠜຊతʹରॲ͢ΔͨΊʹɼ͜ΕΒͷΫΤϦΛϗϫΠτϦετ ʹิ͏ํ๏͕ඞཁ •
ఏҊख๏Λద༻͢ΔςʔϒϧΛݶఆͯ͠ݕରͷΫΤϦΛ ݮΒ͢ • ػີใ͕อ͞Εͨςʔϒϧͷૢ࡞Λߦ͏ΫΤϦΛݕ ରͱ͢Δ 25 False positiveͷཁҼͱͳΔΫΤϦͷߟ ࣮ڥͰൃߦ͞ΕͨΫΤϦߏʢΫΤϦϩάʣ ςετ࣌ʹൃߦ͞ΕͨΫΤϦߏ
• ͜ͷྖҬʹ2छྨͷΫΤϦؚ͕·Ε͍ͯͨ 1. ࣮ڥͰൃߦ͞ΕΔ͕ΫΤϦϩάͷظؒͰൃߦ͞Εͳ ͔ͬͨΫΤϦ 2. ςετͰͷΈൃߦ͞ΕΔΫΤϦ • 2.ͷΫΤϦʹɼػີใ͕อ͞ΕͨςʔϒϧͷશআͳͲͷ ૢ࡞Λߦ͏ͷ͕͋ͬͨ
• ϒϥοΫϦετͱϗϫΠτϦετΛΈ߹Θͤͯଟతʹ͙ • Өڹൣғ͕େ͖͍ʢσʔλͷҰׅআͳͲʣΫΤϦ༧Ίϒ ϥοΫϦετʹఆ͓ٛͯ͘͠ 26 False negativeͷཁҼͱͳΔΫΤϦͷߟ ࣮ڥͰൃߦ͞ΕͨΫΤϦߏʢΫΤϦϩάʣ ςετ࣌ʹൃߦ͞ΕͨΫΤϦߏ
5. ·ͱΊͱࠓޙͷ՝
• ϗϫΠτϦετ࡞ͷෛՙΛܰݮ͢ΔͨΊʹɼςετ࣌ʹൃߦ͞ΕΔΫΤϦΛ ༻͍ͯϗϫΠτϦετΛ࡞͢Δख๏ΛఏҊͨ͠ • WebΞϓϦέʔγϣϯͷ࣮ʹґଘͤͣɼՔಇޙɼଈ࠲ʹෆਖ਼ΫΤϦΛݕ Ͱ͖Δ • ࣮ڥͰͷ࣮ݧʹΑΓɼFalse positive /
negativeཁҼͱͳΔΫΤϦ͕͋Δ͜ ͱ͕֬ೝ͞Εͨ 28 ·ͱΊ
• False positiveͷཁҼͱͳΔΫΤϦͷରॲ๏ͷݕ౼ • ख๏ͷద༻Λςʔϒϧ୯ҐͰ੍ݶͨ͠߹ͷFalse positiveΛධՁ • ϗϫΠτϦετʹෆ͍ͯ͠ΔΫΤϦΛิ͢Δํ๏ͷௐࠪ • False
negativeͷཁҼͱͳΔΫΤϦͷରॲ๏ͷݕ౼ • ϒϥοΫϦετͱϗϫΠτϦετΛซ༻ͨ͠߹ͷFalse negativeΛධՁ 29 ࠓޙͷ՝