Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Webアプリケーションテストを用いた
SQLクエリのホワイトリスト自動作成手法 / Automatic Whitelist Generation for SQL Queries Using Web Application Test

Webアプリケーションテストを用いた
SQLクエリのホワイトリスト自動作成手法 / Automatic Whitelist Generation for SQL Queries Using Web Application Test

野村孔命, 力武健次*, 松本亮介 / ペパボ研究所 / *力武健次技術士事務所
2018.05.18 第41回 情報処理学会 インターネットと運用技術研究会

Komei Nomura

May 18, 2018
Tweet

More Decks by Komei Nomura

Other Decks in Research

Transcript

  1. ໺ଜ޸໋, ྗ෢݈࣍*, দຊ྄հ / ϖύϘݚڀॴ / *ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ
    2018.05.18 ୈ41ճ ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ
    WebΞϓϦέʔγϣϯςετΛ༻͍ͨ

    SQLΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏

    View Slide

  2. 1. ݚڀͷഎܠͱ՝୊
    2. ैདྷͷෆਖ਼ΫΤϦݕ஌ͷ՝୊
    3. ఏҊख๏
    4. ·ͱΊͱࠓޙͷ՝୊
    2
    ໨࣍

    View Slide

  3. 1.
    ݚڀͷഎܠͱ՝୊

    View Slide

  4. • WebΞϓϦέʔγϣϯʢWebΞϓϦʣͷ੬ऑੑΛར༻ͨ͠߈ܸ͸ޙΛઈͨͳ͍
    • WebαʔϏε͕อ༗͢Δൿີ৘ใ͕࿙Ӯ͢Δඃ֐͕ൃੜ
    • WebΞϓϦ͕ར༻͢Δσʔλϕʔεʹෆਖ਼ΫΤϦΛൃߦͯ͠ߦΘΕΔ
    • 1ͭͷෆਖ਼ΫΤϦ͕େن໛ͳ৘ใ࿙ӮΛҾ͖ى͜͢͜ͱ΋͋Δ
    • ෆਖ਼ΫΤϦΛݕ஌͠σʔλϕʔεͰͷ࣮ߦΛఀࢭ͢Δରࡦ͕ඞཁ
    4
    ݚڀͷഎܠ

    View Slide

  5. • WebΞϓϦ͕ൃߦ͢ΔΫΤϦͷϗϫΠτϦετΛखಈͰ࡞੒ͯ͠ݕ஌
    • େن໛ͰෳࡶͳWebΞϓϦͰ͸ϗϫΠτϦετͷ࡞੒͕ࠔ೉
    • WebΞϓϦͷվमʹΑΔϗϫΠτϦετͷ؅ཧ͕ࠔ೉
    • ӡ༻ऀ΁ͷෛ୲͕େ͖͍
    • ղܾࡦͱͯ͠ϗϫΠτϦετΛࣗಈͰ࡞੒͢Δख๏͕ఏҊ
    5
    ैདྷͷෆਖ਼ΫΤϦݕ஌ํ๏

    View Slide

  6. • WebΞϓϦՔಇ࣌ʹൃߦ͞ΕΔΫΤϦΛ༻͍ͯ࡞੒͢Δख๏
    • WebΞϓϦՔಇޙɼଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌Ͱ͖ͳ͍
    • WebΞϓϦͷιʔείʔυΛղੳͯ͠࡞੒͢Δख๏
    • WebΞϓϦͷ࣮૷ґଘͷͨΊɼ൚༻తʹར༻Ͱ͖ͳ͍
    6
    ैདྷͷϗϫΠτϦετࣗಈ࡞੒ख๏

    View Slide

  7. • WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏
    • WebΞϓϦՔಈલʹϗϫΠτϦετ࡞੒ɹ→ɹଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌
    • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ɹ→ ෳ਺ͷWebΞϓϦͰ൚༻తʹར༻Մೳ
    • ಋೖ࣌ͷ։ൃϓϩηε΁ͷӨڹ͕গͳ͍ɹ→ɹ։ൃऀͷӨڹΛܰݮ
    7
    ఏҊख๏

    View Slide

  8. 2.
    ैདྷͷෆਖ਼ΫΤϦݕ஌ͷ՝୊

    View Slide

  9. • WebΞϓϦ͕ൃߦ͢ΔΫΤϦͷϗϫΠτϦετΛखಈͰ࡞੒ͯ͠ݕ஌
    • WebαʔϏεͷ։ൃ͕ਐΉʹ൐͍ɼWebΞϓϦ͕େن໛ԽɾෳࡶԽ
    • WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͕૿େɹ
    • WebαʔϏε͸࢓༷มߋʹΑΓWebΞϓϦ͕ൃߦ͢ΔΫΤϦ͕มԽ
    • ൃߦ͢ΔΫΤϦͱϗϫΠτϦετͷ੔߹ੑΛऔΔඞཁ͋Γ
    • WebαʔϏεӡ༻ऀͷෛ୲͕૿େ͠ӡ༻͕ࠔ೉Խ
    9
    ैདྷͷෆਖ਼ΫΤϦݕ஌ํ๏ͱ՝୊

    View Slide

  10. • WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͸࣮ࡍʹൃߦ͞ΕͨΫΤϦ΍ιʔείʔυ͔Β
    ݶఆͰ͖Δ
    • ϗϫΠτϦετΛࣗಈͰ࡞੒͢Δख๏͕ఏҊ͞Ε͍ͯΔ
    • WebΞϓϦՔಇ࣌ʹൃߦ͞ΕͨΫΤϦΛ༻͍ͯ࡞੒
    • WebΞϓϦͷιʔείʔυΛղੳͯ͠࡞੒
    10
    ෆਖ਼ΫΤϦݕ஌ͷ՝୊ʹର͢Δैདྷख๏

    View Slide

  11. • WebΞϓϦՔಇ࣌ʹൃߦ͞ΕͨΫΤϦΛ༻͍ͯϗϫΠτϦετΛ࡞੒
    • ൃߦ͞ΕͨΫΤϦΛߏจղੳͯ͠ɼΫΤϦߏ଄ʹͯ͠ొ࿥
    • ΫΤϦߏ଄͸ΫΤϦͷϦςϥϧ஋ΛϓϨʔεϗϧμʔʹஔ͖׵͑ͨ΋ͷ
    11
    ൃߦ͞ΕͨΫΤϦΛ༻͍ͨख๏
    σʔλϕʔε
    8FCΞϓϦ
    ΫΤϦ
    ϗϫΠτϦετ
    8FCΞϓϦՔಇ࣌
    4&-&$5'30.VTFST8)&3&JE
    4&-&$5'30.VTFST8)&3&JE
    Ϧςϥϧ
    ΫΤϦߏ଄ͷྫ

    View Slide

  12. • ϝϦοτ
    • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Մೳ
    • σϝϦοτ
    • ϗϫΠτϦετ࡞੒த͸ෆਖ਼ΫΤϦͷݕ஌͕Ͱ͖ͳ͍
    • WebΞϓϦՔಇ࣌ʹϗϫΠτϦετ࡞੒ͱෆਖ਼ΫΤϦݕ஌͕ࠞࡏ
    • WebαʔϏεͷվमස౓͕ߴ͍͜ͱ͔Βݕ஌Ͱ͖ͳ͍λΠϛϯά͕ଟൃ
    • ϗϫΠτϦετͷ࡞੒͸WebΞϓϦՔಈલʹߦ͏ඞཁ͕͋Δ
    12
    ൃߦ͞ΕͨΫΤϦΛ༻͍ͨख๏ͷϝϦοτɾσϝϦοτ

    View Slide

  13. • WebΞϓϦͷιʔείʔυΛղੳͯ͠ϗϫΠτϦετΛ࡞੒
    • ιʔείʔυதͷSQLΛ૊Έཱ͍ͯͯΔ෦෼ͷจࣈྻॲཧΛղੳͯ͠

    ൃߦ͞Ε͏ΔΫΤϦύλʔϯΛྻڍ
    • WebΞϓϦͷՔಈલʹϗϫΠτϦετ࡞੒
    13
    ιʔείʔυղੳΛ༻͍ͨख๏
    ղੳث
    ιʔείʔυ
    ϗϫΠτϦετ
    8FCΞϓϦՔಈલ

    View Slide

  14. • ϝϦοτ
    • WebΞϓϦՔಈޙɼଈ࣌ʹෆਖ਼ΫΤϦݕ஌͕Մೳ
    • σϝϦοτ
    • ιʔείʔυղੳ͕WebΞϓϦͷ࣮૷ʹґଘ͢ΔͨΊ൚༻తʹར༻ෆՄ
    • WebαʔϏε͸࣮૷ʹ༷ʑͳݴޠ΍ORM*Λར༻
    • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ํ๏͕ඞཁ
    14
    ιʔείʔυղੳΛ༻͍ͨख๏ͷϝϦοτɾσϝϦοτ
    *Scott W. Ambler, Mapping objects to relational databases What you need to know and why Ronin International, July 2000

    View Slide

  15. 3.
    ఏҊख๏

    View Slide

  16. • ैདྷख๏ͷ՝୊͔ΒఏҊख๏͸ҎԼͷཁ݅Λຬͨ͢ඞཁ͕͋Δ
    • WebΞϓϦՔಈલʹϗϫΠτϦετ࡞੒ɹ→ɹଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌
    • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ɹ→ ෳ਺ͷWebΞϓϦͰ൚༻తʹར༻Մೳ
    • ಋೖ࣌ͷ։ൃϓϩηε΁ͷӨڹ͕গͳ͍ɹ→ɹ։ൃऀͷӨڹΛܰݮ
    16
    ఏҊख๏ͷཁ݅

    View Slide

  17. • WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏
    • ։ൃϓϩηεʹࣗಈςετ͕૊Έࠐ·Ε͍ͯΔલఏ
    • ςετ࣌ʹϗϫΠτϦετΛࣗಈͰ࡞੒͢ΔॲཧΛ௥Ճ
    • ։ൃϓϩηεͷӨڹܰݮɼWebΞϓϦՔಈલʹϗϫΠτϦετ࡞੒
    • ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛ༻͍ͯϗϫΠτϦετΛ࡞੒
    • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍
    17
    ఏҊख๏֓ཁ

    View Slide

  18. 18
    લఏͱ͢ΔࣗಈςετΛ༻͍ͨ։ൃϓϩηε
    ։ൃ
    ςετίʔυهड़
    αʔόʹ഑ஔ
    ࣗಈςετ
    /P
    :FT
    ӡ༻։࢝
    ςετ੒ޭ
    w ৽ػೳͷ௥Ճ
    w طଘػೳͷमਖ਼
    w 8FCΞϓϦΛಈ࡞ͤ͞Δखॱͱಈ࡞ͷ݁ՌΛهड़
    w ςετίʔυΛݩʹࣗಈͰςετΛ࣮ߦ
    w 8FCΞϓϦͷಈ࡞͕࢓༷௨Γ͔Λ֬ೝ
    w ςετࣦഊɿ8FCΞϓϦͷιʔείʔυ΋͘͠͸
    ςετίʔυʹ໰୊͋Γ
    w ςετ੒ޭɿ8FCΞϓϦ͕࢓༷௨Γʹಈ࡞
    w ৽͍͠8FCΞϓϦͷιʔείʔυΛαʔόʹ഑ஔ
    w ৽͍͠8FCΞϓϦͷӡ༻Λ։࢝

    View Slide

  19. 19
    ։ൃ
    ςετίʔυهड़
    αʔόʹ഑ஔ
    ࣗಈςετ
    ʴ
    ϗϫΠτϦετ࡞੒
    /P
    :FT
    ӡ༻։࢝
    ςετ੒ޭ
    w ࣗಈςετ࣌ʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετ
    Λࣗಈ࡞੒
    w ҎԼΛͦΕͧΕαʔόʹ഑ஔ
    w ৽͍͠8FCΞϓϦͷιʔείʔυ
    w ৽͍͠8FCΞϓϦͷΫΤϦͷϗϫΠτϦετ
    ։ൃϓϩηεʹ͓͚ΔఏҊख๏ͷҐஔ෇͚
    w ։ൃϓϩηε΁ͷӨڹ͕খ͍͞
    w ӡ༻։࢝࣌ʹ͸ෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δঢ়ଶ
    w ϗϫΠτϦετͷ໢ཏੑ͸ςετ࣌ʹൃߦ͞ΕͨΫ
    ΤϦʹґଘ
    w ߴ͍ςετΧόϨοδ͕ඞཁ

    View Slide

  20. • ఏҊख๏͸ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛ༻͍ͯϗϫΠτϦετΛ࡞੒
    • ఏҊख๏Ͱݕ஌Ͱ͖ΔΫΤϦ͸ςετ࣌ʹൃߦ͞Ε͍ͯͳ͍ΫΤϦ
    • ςετ͞Ε͍ͯͳ͍ΫΤϦɿςετίʔυ͕هड़͞Ε͓ͯΒͣݕ஌͞Εͨ΋ͷ
    • ෆਖ਼ΫΤϦɿWebΞϓϦ͕ൃߦ͠ͳ͍΋ͷ
    20
    ఏҊख๏Ͱݕ஌Ͱ͖ΔΫΤϦͷߟ࡯

    View Slide

  21. 21
    ΫΤϦͷ಺แؔ܎
    શͯͷΫΤϦ
    ςετ͞Ε͍ͯΔΫΤϦྖҬ
    ʢϗϫΠτϦετʹొ࿥ʣ
    8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ
    ɿςετ͞Ε͍ͯΔΫΤϦྖҬ
    ɿෆਖ਼ΫΤϦྖҬ
    ɿςετ͞Ε͍ͯͳ͍ΫΤϦྖҬ

    View Slide

  22. 22
    ςετΧόϨοδʹΑΔྖҬͷมԽ
    શͯͷΫΤϦ
    ςετ͞Ε͍ͯΔΫΤϦྖҬ
    ʢϗϫΠτϦετʹొ࿥ʣ
    8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ
    શͯͷΫΤϦ
    8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦྖҬ
    ςετ͞Ε͍ͯΔΫΤϦྖҬ
    ʢϗϫΠτϦετʹొ࿥ʣ
    ςετΧόϨοδΛ޲্ͤ͞Δ͜ͱͰςετ͞Ε͍ͯΔΫΤϦྖҬΛ֦େ
    ˠɹϗϫΠτϦετͷ໢ཏੑ͕޲্
    ɿςετ͞Ε͍ͯΔΫΤϦྖҬ
    ɿෆਖ਼ΫΤϦྖҬ
    ɿςετ͞Ε͍ͯͳ͍ΫΤϦྖҬ

    View Slide

  23. • ςετΧόϨοδͷ޲্ʹΑΓϗϫΠτϦετͷ໢ཏੑ͕޲্
    • ϗϫΠτϦετͷ໢ཏੑ޲্ͷͨΊʹ༨෼ͳςετΛ௥Ճͨ͘͠ͳ͍
    • ςετ؅ཧΛࠔ೉Խ͠ɼ։ൃऀͷෛ୲ͱͳΔ͜ͱΛආ͚͍ͨ
    • ఏҊख๏͸ݱ։ൃ࣌఺ͰͷϗϫΠτϦετͷϕʔεΛఏڙ
    • ໨ඪͱ͢ΔςετΧόϨοδ·Ͱ͸ఏҊख๏ͰϗϫΠτϦετΛ࡞੒
    • ϗϫΠτϦετʹෆ଍͍ͯ͠Δཁૉͷิ׬ʹ͸ผͷํ๏͕ඞཁ
    23
    ςετΧόϨοδͱϗϫΠτϦετͷ໢ཏੑ

    View Slide

  24. • WebΞϓϦ͕ൃߦ͢ΔΫΤϦ͸ϢʔβೖྗʹΑͬͯมԽ
    • ΫΤϦύλʔϯ͸๲େͱͳΔͨΊ͢΂ͯΛొ࿥͢Δͷ͸ࠔ೉
    • ΫΤϦͷϦςϥϧΛϓϨʔεϗϧμʹஔ͖׵͑ͨΫΤϦߏ଄Λొ࿥
    • ΫΤϦߏ଄͕ҟͳΔ΋ͷΛݕ஌Ͱ͖Δ
    24
    ϗϫΠτϦετͷొ࿥಺༰
    4&-&$5'30.VTFST8)&3&OBNFb5BJDIJ`
    4&-&$5'30.VTFST

    8)&3&JE
    ϗϫΠτϦετ
    4&-&$5'30.VTFST8)&3&JE
    র߹ র߹݁Ռ

    View Slide

  25. • ΫΤϦߏ଄͕ಉҰͱͳΔ΋ͷ͸ݕ஌Ͱ͖ͳ͍
    25
    ఏҊख๏Ͱݕ஌Ͱ͖ͳ͍ΫΤϦ
    ௨ৗɿSELECT * FROM users LIMIT 30
    ҟৗɿSELECT * FROM users LIMIT 1000
    SELECT * FROM users LIMIT ?

    View Slide

  26. 26
    ఏҊख๏ͷઃܭ
    σʔλϕʔε
    σʔλϕʔε

    ϓϩΩγ
    8FCΞϓϦ
    ϗϫΠτϦετ
    • σʔλϕʔεͷલஈʹσʔλϕʔεϓϩΩγΛ഑ஔ
    • ςετ࣌ʹ͸ൃߦ͞ΕΔΫΤϦΛσʔλϕʔεϓϩΩγͰऩूͯ͠ϗϫΠτϦε
    τΛ࡞੒ɹˠɹWebΞϓϦͷ࣮૷ݴޠʹґଘ͠ͳ͍
    • WebΞϓϦՔಇ࣌ͷෆਖ਼ΫΤϦݕ஌΋ಉ͡ߏ੒

    View Slide

  27. 27
    ςετ࣌ͷϗϫΠτϦετ࡞੒ϑϩʔ
    σʔλϕʔε
    σʔλϕʔε

    ϓϩΩγ
    8FCΞϓϦ
    ϗϫΠτϦετ
    4&-&$5'30.
    VTFST
    8)&3&JE
    4&-&$5'30.
    VTFST
    8)&3&JE
    4&-&$5'30.
    VTFST
    8)&3&JEʁ
    ΫΤϦΛൃߦ ΫΤϦ͸ͦͷ··σʔλϕʔε΁
    ςετऴྃޙΫΤϦߏ଄ʹม׵
    ΫΤϦߏ଄ΛϗϫΠτϦετʹొ࿥
    ΫΤϦΛऩू

    View Slide

  28. 28
    WebΞϓϦՔಇ࣌ͷෆਖ਼ΫΤϦݕ஌ϑϩʔ
    σʔλϕʔε
    σʔλϕʔε

    ϓϩΩγ
    8FCΞϓϦ
    ϗϫΠτϦετ
    4&-&$5'30.
    VTFST
    8)&3&JE
    4&-&$5'30.
    VTFST
    8)&3&JE
    4&-&$5'30.
    VTFST
    8)&3&JEʁ
    ΫΤϦߏ଄ʹม׵
    ϗϫΠτϦετͱೖྗ͞ΕͨΫΤϦߏ଄Λর߹
    ΫΤϦΛൃߦ
    ΫΤϦΛड͚औΔ
    র߹݁ՌΛฦ٫
    র߹݁Ռ͔ΒΫΤϦΛ࣮ߦ͢Δ͔Λܾఆ

    View Slide

  29. 4.
    ·ͱΊͱࠓޙͷ՝୊

    View Slide

  30. • WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏
    ͷௐࠪɾݕ౼Λߦͬͨ
    • ఏҊख๏͸ҎԼͷཁ݅ΛຬͨͤΔͱߟ͑ΒΕΔ
    • WebΞϓϦՔಈલʹϗϫΠτϦετΛ࡞੒Ͱ͖Δ
    • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Ͱ͖Δ
    • ಋೖ࣌ͷ։ൃϓϩηε΁ͷӨڹ͕খ͍͞
    30
    ·ͱΊ

    View Slide

  31. • ఏҊख๏ͷ࣮૷
    • ςετΧόϨοδʹର͢Δෆਖ਼ΫΤϦͷݕ஌ਫ਼౓ͷݕূ
    • ϗϫΠτϦετͷ଍Γͳ͍ཁૉΛิ׬͢Δํ๏ͷݕ౼
    • ΫΤϦͷϦςϥϧͷෆਖ਼Λݕ஌͢Δํ๏ͷݕ౼
    31
    ࠓޙͷ՝୊

    View Slide