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
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.1k
Kerasによるモデル構築 / Model-building-with-Keras
komei22
0
6.9k
ハンドメイド作品を対象としたECサイトにおける単語の出現頻度を用いた稀覯品の検出 / Detection of Rare Works Using Term Frequency on Electronic Commerce Site for Trading Handmade Works
komei22
1
930
Automatic Whitelist Generation for SQL Queries Using Web Application Tests
komei22
3
1.4k
ペパコンナイト:セキュリティWG成果報告 / pepacon night: security working group report
komei22
2
1.8k
不正クエリを検知するsqdを作った
komei22
1
850
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
6k
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
1.5k
新卒研究員の研究開発 〜セキュアなWebサービスを目指して〜
komei22
0
1.9k
Other Decks in Research
See All in Research
Generative Models 2025
takahashihiroshi
25
14k
論文紹介:Not All Tokens Are What You Need for Pretraining
kosuken
0
200
Stealing LUKS Keys via TPM and UUID Spoofing in 10 Minutes - BSides 2025
anykeyshik
0
150
PhD Defense 2025: Visual Understanding of Human Hands in Interactions
tkhkaeio
1
270
まずはここから:Overleaf共同執筆・CopilotでAIコーディング入門・Codespacesで独立環境
matsui_528
2
660
LLM-jp-3 and beyond: Training Large Language Models
odashi
1
430
【輪講資料】Moshi: a speech-text foundation model for real-time dialogue
hpprc
3
770
[CV勉強会@関東 CVPR2025] VLM自動運転model S4-Driver
shinkyoto
2
550
EarthDial: Turning Multi-sensory Earth Observations to Interactive Dialogues
satai
3
270
J-RAGBench: 日本語RAGにおける Generator評価ベンチマークの構築
koki_itai
0
850
日本語新聞記事を用いた大規模言語モデルの暗記定量化 / LLMC2025
upura
0
280
論文紹介: ReGenesis: LLMs can Grow into Reasoning Generalists via Self-Improvement
hisaokatsumi
0
110
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Thoughts on Productivity
jonyablonski
71
4.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Building Applications with DynamoDB
mza
96
6.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
640
A designer walks into a library…
pauljervisheath
209
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Scaling GitHub
holman
463
140k
Fireside Chat
paigeccino
41
3.7k
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 ࠓޙͷ՝