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
Agentic AIとMCPを利用したサービス作成入門
mickey_kubo
0
650
EcoWikiRS: Learning Ecological Representation of Satellite Images from Weak Supervision with Species Observation and Wikipedia
satai
3
260
Panopticon: Advancing Any-Sensor Foundation Models for Earth Observation
satai
3
220
投資戦略202508
pw
0
570
IMC の細かすぎる話 2025
smly
2
680
AI エージェントを活用した研究再現性の自動定量評価 / scisci2025
upura
1
160
Google Agent Development Kit (ADK) 入門 🚀
mickey_kubo
2
2k
snlp2025_prevent_llm_spikes
takase
0
370
Adaptive Experimental Design for Efficient Average Treatment Effect Estimation and Treatment Choice
masakat0
0
120
不確実性下における目的と手段の統合的探索に向けた連続腕バンディットの応用 / iot70_gp_rff_mab
monochromegane
2
190
能動適応的実験計画
masakat0
2
850
Sat2City:3D City Generation from A Single Satellite Image with Cascaded Latent Diffusion
satai
3
120
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Scaling GitHub
holman
463
140k
Designing for humans not robots
tammielis
254
26k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
590
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
How STYLIGHT went responsive
nonsquared
100
5.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Building Applications with DynamoDB
mza
96
6.7k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Leading Effective Engineering Teams in the AI Era
addyosmani
3
360
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
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 ࠓޙͷ՝