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
920
Automatic Whitelist Generation for SQL Queries Using Web Application Tests
komei22
3
1.4k
ペパコンナイト:セキュリティWG成果報告 / pepacon night: security working group report
komei22
2
1.7k
不正クエリを検知するsqdを作った
komei22
1
840
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
6k
Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法
komei22
0
1.5k
新卒研究員の研究開発 〜セキュアなWebサービスを目指して〜
komei22
0
1.9k
Other Decks in Research
See All in Research
電通総研の生成AI・エージェントの取り組みエンジニアリング業務向けAI活用事例紹介
isidaitc
1
940
[RSJ25] Enhancing VLA Performance in Understanding and Executing Free-form Instructions via Visual Prompt-based Paraphrasing
keio_smilab
PRO
0
100
Galileo: Learning Global & Local Features of Many Remote Sensing Modalities
satai
3
220
Adaptive Experimental Design for Efficient Average Treatment Effect Estimation and Treatment Choice
masakat0
0
160
AIによる画像認識技術の進化 -25年の技術変遷を振り返る-
hf149
7
4k
利用シーンを意識した推薦システム〜SpotifyとAmazonの事例から〜
kuri8ive
1
250
言語モデルの地図:確率分布と情報幾何による類似性の可視化
shimosan
5
1.4k
[論文紹介] Intuitive Fine-Tuning
ryou0634
0
110
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
160
Cross-Media Information Spaces and Architectures
signer
PRO
0
240
Towards a More Efficient Reasoning LLM: AIMO2 Solution Summary and Introduction to Fast-Math Models
analokmaus
2
790
Generative Models 2025
takahashihiroshi
24
13k
Featured
See All Featured
BBQ
matthewcrist
89
9.8k
Building Applications with DynamoDB
mza
96
6.6k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Code Reviewing Like a Champion
maltzj
525
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Navigating Team Friction
lara
189
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Gamification - CAS2011
davidbonilla
81
5.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
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 ࠓޙͷ՝