2019/04/24の銀座Rails#8での発表資料です。 スライド中で紹介している拙作gemはこちら https://github.com/expajp/reredos
ͦͷਖ਼نදݱɺҟٞ͋Γʂʙ ReDoSʹ͍ͭͯShu OGAWARA(@expajp)2019/04/24 ۜ࠲Rails #8
View Slide
ਖ਼نදݱͬͯ·͔͢ʁ
ϝΞυͷόϦσʔγϣϯʹਖ਼نදݱΛ͍ͬͯΔਓ
ͦΕ͔ͯ͜͠͠ΜͳͷͰʁ2019/04/24 4
ͳͦ͞͏2019/04/24 5
ग़యɿχίχɾίϞϯζhttp://commons.nicovideo.jp/material/nc38409
͜ͷਖ਼نදݱʹɺ੬ऑੑ͕͋Δ
࣮ࡍʹ͝ཡ͍ͩ͘͞
ςετεΫϦϓτ2019/04/24 9ग़యɿਖ਼نදݱͰͷϝʔϧΞυϨενΣοΫݟ͖͢ – ReDoS – yohgaki's bloghttps://blog.ohgaki.net/redos-must-review-mail-address-validation
࣮ߦ݁Ռ2019/04/24 10
ݪҼ• ਖ਼نදݱΤϯδϯʹѱຐͷূ໌ΛΒ͍ͤͯΔ• ʮҙͷจࣈྻʯදݱ͕ଓ͘ͱΕ͕Θ͔Βͳ͍ͷͰɺશύλʔϯΛௐΔ– શύλʔϯΛௐͳ͍ͱϚον͠ͳ͍͜ͱ֬ఆͰ͖ͳ͍– Έ߹Θ͕ͤരൃ͍ͯ͠Δ2019/04/24 11
࣮ࡍʹΈ߹Θ͕ͤരൃ͍ͯ͠Δ༷ࢠΛ͝ཡ͍ͩ͘͞
؆୯ͷͨΊ• ݟͤΔͷ͜ͷ෦ͷνΣοΫͷΈ2019/04/24 13
Έ߹Θͤരൃ• host. ·ͰϚονͯ͠ɺ࣍2019/04/24 14
Έ߹Θͤരൃ• . (υοτ) ·ͰϚον͕ͨ͠2019/04/24 15
Έ߹Θͤരൃ• ͦͷޙΖ͕ҧ͏ͷͰΔ2019/04/24 16
Έ߹Θͤരൃ• ͬͺΓҧ͏ͷͰ1ͭΔɺΛ܁Γฦ͠2019/04/24 17
Έ߹Θͤരൃ• ͜͜·ͰΔ2019/04/24 18
Έ߹Θͤരൃ• ࠷ޙ·ͰͬͯɺͬͺΓϚον͠ͳ͍2019/04/24 19
Έ߹Θͤരൃ• * Λ0ճͱղऍͯ࣍͠ΛௐΔ2019/04/24 20
Έ߹Θͤരൃ• ͬͺΓϚον͠ͳ͍ͷͰ1ͭͣͭޙΖʹ2019/04/24 21
Έ߹Θͤരൃ• 1ݸͣͭͬͯͬͱϚον͠ͳ͍ͷ͕֬ఆ2019/04/24 22
͜Ε͕ԿΛҙຯ͢Δ͔ʁ
ԿΛҙຯ͢Δ͔• લ·ͰҰகͯ͠ɺ࠷ޙͷ1จࣈ͚ͩϚον͠ͳ͍จࣈྻΛϝʔϧΞυϨεཝʹ์ΓࠐΉ͚ͩͰDoS߈ܸ͕Ͱ͖Δ2019/04/24 24
DoS߈ܸ• ϦιʔεʹҙਤతʹաͳෛՙΛ͔͚ͨΓ੬ऑੑΛ͍ͭͨΓ͢ΔࣄͰαʔϏεΛ͢Δ߈ܸख๏ͷ͜ͱ– F5ΞλοΫͱ͔• ਖ਼نදݱΛͬͨDoSReDoSͱݺΕΔ2019/04/24 25
͞Βʹ൵͍͜͠ͱʹɺϝΞυͷ͞Ͱ͚ͳ͍
࣮ߦ݁Ռ2019/04/24 27
ϝʔϧΞυϨεͷఆٛ• RFC1035, 5321ΑΓ– ϝʔϧΞυϨεશମ256จࣈҎ– Ϣʔβ໊ʢ@ͷલʣ64จࣈҎ– υϝΠϯ255จࣈҎ– υϝΠϯͷϥϕϧ63จࣈҎ• test.example.com – ଞɺ͑Δจࣈܾ·͍ͬͯΔ2019/04/24 28
Ͳ͏͢ΕΑ͍ͷ͔ʁ
จࣈྻΛ۠ͬͯ͘͠γϯϓϧͳਖ਼نදݱͰఆ
ͱ͍͑ɺ͍͍࣮ͪͪ͢Δͷ໘
ͱ͍͏Θ͚Ͱ(FNΛ࡞Γ·ͨ͠
reredos2019/04/24 33
reredos• ReDoSʹڧ͍ϝΞυͷόϦσʔγϣϯΛߦ͍ɺtrue/false Ͱฦ͢γϯϓϧͳgem• ࠓޙͷ༧ఆ– ଘࡏ͠ͳ͍TLDΛ͘– URLʹରԠ͢Δ• PR͓ͪͯ͠·͢2019/04/24 34
·ͱΊ• ਖ਼نදݱͰDoS߈ܸΛ͔͚Δख๏͕͋Δ– ReDoSͱ͍͏• ෳࡶͳਖ਼نදݱආ͚Δ͖– ༷ΛͪΌΜͱಡΜͰɺ͍୯ҐͰνΣοΫΛ͢Δ͜ͱΛ৺͕͚Α͏• ϝΞυͰόϦσʔγϣϯ͔͚ΔgemΛ࡞ͬͨ2019/04/24 35
ฏ͕ऴΘΔલʹରԠ͠Α͏
ࣗݾհ• Shu OGAWARA (@expajp )– ϦϯΧʔζגࣜձࣾ– Ruby/Railsྺ2ऑ– ग़ௗऔɺେֶਆށ– झຯΫϥγοΫܥͷ߹এ2019/04/24 37