Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
7k
ハンドメイド作品を対象としたECサイトにおける単語の出現頻度を用いた稀覯品の検出 / Detection of Rare Works Using Term Frequency on Electronic Commerce Site for Trading Handmade Works
komei22
1
940
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
J-RAGBench: 日本語RAGにおける Generator評価ベンチマークの構築
koki_itai
0
980
論文読み会 SNLP2025 Learning Dynamics of LLM Finetuning. In: ICLR 2025
s_mizuki_nlp
0
340
AIグラフィックデザインの進化:断片から統合(One Piece)へ / From Fragment to One Piece: A Survey on AI-Driven Graphic Design
shunk031
0
560
財務諸表監査のための逐次検定
masakat0
0
200
単施設でできる臨床研究の考え方
shuntaros
0
3.2k
ドメイン知識がない領域での自然言語処理の始め方
hargon24
1
170
論文紹介: ReGenesis: LLMs can Grow into Reasoning Generalists via Self-Improvement
hisaokatsumi
0
130
学習型データ構造:機械学習を内包する新しいデータ構造の設計と解析
matsui_528
4
1.5k
[RSJ25] Enhancing VLA Performance in Understanding and Executing Free-form Instructions via Visual Prompt-based Paraphrasing
keio_smilab
PRO
0
170
Mamba-in-Mamba: Centralized Mamba-Cross-Scan in Tokenized Mamba Model for Hyperspectral Image Classification
satai
3
220
EcoWikiRS: Learning Ecological Representation of Satellite Images from Weak Supervision with Species Observation and Wikipedia
satai
3
360
まずはここから:Overleaf共同執筆・CopilotでAIコーディング入門・Codespacesで独立環境
matsui_528
2
770
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Music & Morning Musume
bryan
46
7k
Building Adaptive Systems
keathley
44
2.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
Facilitating Awesome Meetings
lara
57
6.6k
Producing Creativity
orderedlist
PRO
348
40k
Typedesign – Prime Four
hannesfritz
42
2.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Rails Girls Zürich Keynote
gr2m
95
14k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Unsuck your backbone
ammeep
671
58k
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 ࠓޙͷ՝