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

脆弱性管理のベストプラクティスとスレットモニタリング

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 脆弱性管理のベストプラクティスとスレットモニタリング

Interlop Tokyo 2018での西村の講演資料です。

Avatar for Recruit Technologies

Recruit Technologies

June 13, 2018
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. ੢ଜ फߊ גࣜձࣾϦΫϧʔτςΫϊϩδʔζ αΠόʔηΩϡϦςΟΤϯδχΞϦϯά෦ ηΩϡϦςΟΤϯδχΞϦϯάάϧʔϓ Ϛωʔδϟʔ ࠃ಺ܞଳి࿩ϝʔΧʔʹ͓͚ΔηΩϡϦςΟί ϯαϧλϯτͳͲΛܦͯɺ೥ΑΓݱ৬ɻ ϦΫϧʔτάϧʔϓʹ͓͚ΔηΩϡϦςΟࣄނ ͷະવ๷ࢭʹऔΓ૊Ήɻ೥݄ʹ͸ɺ

    Ϣ ʔ β ا ۀ Ͱ ࠃ ಺ ॳ ͱ ͳ Δ Ϩ ο υ ν ʔ Ϝ ʮ3&$36*5 3&% 5&".ʯΛࣾ಺ʹൃ଍ɻझ ຯ͸ϒϥ΢βͷ੬ऑੑΛ୳͠ग़͠ɺϕϯμʔ͔ Βಘͨใ঑ۚͰॅ୐ϩʔϯΛฦ͢͜ͱɻ ೥ʹՈΛݐͯɺ೥ޙʹ౔஍୅ͷฦࡁΛऴ͑ͨɻ ஶॻʹϒϥ΢βϋοΫʢ؂༁ʣɻओͳߨԋྺʹɺ $ 0 % & # - 6 &     ɺ 1 B D 4 F D    
  2. ࠓ͸ٕज़త߹ཧੑ͕ٻΊΒΕΔ ηΩϡϦςΟ૊৫ اըɾ؅ཧ ࣾһ ࣾһ ։ൃ ֎෦ҕୗ ࣾһʴ֎෦ҕୗ R R

    ͜Ε·Ͱ ݱࡏ ҙຯͳ͍͠໘౗ͳΜͰ͚͢Ͳ R R R Կނ͜Ε͕ϧʔϧͳͷ͔ આ໌ͯ͠ཉ͍͠ΜͰ͚͢Ͳ R
  3. ٕज़ίϯςϯπΛࣾ֎ల։͢Δ͜ͱͰղܾ • ݴޠʗ؀ڥผηΩϡϦςΟΨΠυ͸GitHub PagesͰ഑৴ • άάΕ͹ݟ͔ͭΔঢ়ଶΛ໨ࢦ͢ • Issue΍Pull RequestΛड͚෇͚Δ͜ͱͰ௠෗ԽΛ཈ࢭ •

    ಁ໌ੑ͋ΔରԠͱɺࢦఠΛ׮༰ʹड͚ೖΕΔۭؾ࡞Γ • ࡞੒ʹؔ༩ͨ͠ਓ͸READMEʹँࣙΛܝࡌ ϦΫϧʔτݻ༗ͷ ηΩϡϦςΟΨΠυ ݴޠʗ؀ڥผͷ ηΩϡϦςΟΨΠυ ࣾ಺αΠτ ࣾ಺֎ͷ ։ൃऀ
  4. • ৘ใ഑৴ͷλΠϜϥά • ։ൃݩʹΑΔ৘ใެ։͔Β਺೔ͷ஗Ԇ • ৘ใͷ໢ཏੑ • CVEͷׂΓ౰ͯΒΕ͍ͯͳ͍੬ऑੑͳͲʹൈ͚ • ࣗࣾ؀ڥͱҰக͠ͳ͍ਂࠁ౓ධՁ

    • ଟ͘ͷ৔߹ɺCVSS͸ࣗࣾʹ͓͚Δਂࠁ౓ͱҰக͠ͳ͍ ࠃ಺ͷ੬ऑੑ৘ใαʔϏεͷ՝୊ $744ͳΒଈ࣌ରԠͱ͍ͬͨ ࣾ಺ϧʔϧΛෑ͘ͱେมͳ͜ͱʹͳΔ
  5. • ৘ใల։ͷૣظԽ • ੬ऑੑͷҰ࣍৘ใΛపఈऩू • JPCERT/CCͷૣظܯռύʔτφʔγοϓΛ௨ͯ͡ ެදલͷ੬ऑੑ৘ใΛೖख • ໢ཏੑͷ޲্ •

    ࠃ಺֎ͷηΩϡϦςΟ৘ใൃ৴ऀΛTwitterͰϑΥϩʔ • JPCERT/CCͷૣظܯռ৘ใΛ༻͍ͯɺ৘ใͷऩू࿙ΕΛ௿ݮ • ࣗࣾ؀ڥʹج͍ͮͨ੬ऑੑධՁ • ੬ऑੑΛCSIRTͰղੳ͠ɺ߈ܸͷ೉қ౓΍ࣗࣾͰੜ͡͏Δඃ֐ΛධՁ ͦ͜ͰࣗࣾͰ੬ऑੑ৘ใͷऩूͱධՁ͕ඞཁͱͳΔ
  6. • ࣾ಺ͷ։ൃऀ͕SlackνϟϯωϧΛϑΥϩʔͯ͘͠ΕΔ • ϑΥϩʔ਺ 305໊ʢ2018೥5݄࣌఺ʣ • ηΩϡϦςΟνʔϜͱࣾ಺ΤϯδχΞͷަྲྀͷ৔ʹ • ϝϯόʔ͕੬ऑੑͷϓϩͱͯ͠ͷࣾ಺ೝ஌ΛಘΔ •

    ։ൃऀ͕Өڹௐࠪʹڠྗͯ͘͠ΕΔ • Ͳ͜ͰͲͷϞδϡʔϧ͕࢖ΘΕͯΔ͔ڭ͑ͯ͘ΕΔ • ·͍ͣ੬ऑੑ͕ग़Δͱɺೳಈతʹ֤ॴ΁ରԠΛಇ͖͔͚ͯ͘ΕΔ ZEITA͕͞Βʹଟ͘ͷ՝୊Λղܾͯ͘͠ΕΔΑ͏ʹ
  7. • ༵೔͝ͱʹ୲౰ऀΛܾΊͯɺ੬ऑੑͷௐࠪͱτϦΞʔδ • 300ਓҎ্ʹݟΒΕ͍ͯΔͷͰۓுײ͕ߴ·Δ • ৽ਓ͸ຖ೔1݅ɺ੬ऑੑΛௐࠪͯ͠Ϩϙʔτ • Өڹͷେ͖ͦ͏ͳ੬ऑੑ͸͔ͬ͠Γௐࠪ • ରࡦͷύον΍߈ܸίʔυ͔Β੬ऑੑͷࠜຊݪҼΛಛఆ

    • ϝϯόʔ͕ղੳͰ͖ΔΑ͏ʹDockerͰ࠶ݱ؀ڥΛߏங • IDEͷσόοΨͳͲΛར༻ͯ͠ɺ߈ܸ੒ཱͷϝΧχζϜΛݕূɻ ࣮࢖༻্ɺͦͷ੬ऑੑ͕ຊ౰ʹ໰୊ʹͳΔͷ͔ʁͳͲ ੬ऑੑௐֶ͕ࠪͼͷ৔ʹ
  8. • ίετΩϟοϓʹΑΔݕࠪείʔϓͷ੍ݶ • ϓϥοτϑΥʔϜ੬ऑੑݕࠪ • ೥ؒ150 IPΞυϨεΛબग़ͯ͠ݕࠪΛ࣮ࢪ • Web੬ऑੑݕࠪ •

    ৽ن or มߋ͞ΕͨαΠτʹରͯ͠4~8ը໘ͷൈ͖औΓݕࠪΛ࣮ࢪ • ݕࠪͰ͸ͳ͘఺ݕͱ͍͏Ґஔ෇͚ ͜Ε·Ͱͷ੬ऑੑݕࠪ͸׬શʹ֎෦ҕୗ
  9. • طଘͷηΩϡϦςΟαʔϏε͸SoRʹ࠷దԽ͞Ε͍ͯΔ • 1ϲ݄ؒͷ੬ऑੑݕࠪΛܦͯϦϦʔε à 1ϲ݄ؒͷCVʹӨڹ • ։ൃ଎౓Λམͱ͞ͳ͍ηΩϡϦςΟࢪࡦ͕ٻΊΒΕΔ • CIʹΑΔܧଓతͳ੬ऑੑݕࠪ

    • Deployͱ࿈ಈͨ͠ϓϥοτϑΥʔϜ੬ऑੑεΩϟϯ • Pull Requestͷ౎౓ߦ͏ηΩϡϦςΟϨϏϡʔ • ϨϏϡʔίϝϯτΛ௨ͯ͡։ൃऀڭҭ SoEͷ։ൃʹ૬ੑͷྑ͍ηΩϡϦςΟࢪࡦͷ໛ࡧ
  10. ։ൃϓϩηεʹ࠷దͳࢪࡦΛ໛ࡧ اը ઃܭ ։ൃ ςετ ӡ༻ɾվमɾଌఆ • ઃܭϦεΫϨϏϡʔ ʢڴҖ෼ੳʣ •

    ΞʔΩϨϏϡʔ • ίʔυϨϏϡʔ • ੬ऑੑͷमਖ਼ࢧԉ • ੬ऑੑεΩϟφ$*࿈ܞ • ։ൃऀҭ੒ʢ0+5ʣ • ੬ऑੑݕࠪ • ։ൃऀҭ੒ʢ0+5ʣ • ੬ऑੑͷૣظܯռ • ։ൃ૊৫Ͱͷࣗ཯తͳ %FW4FD0QTମ੍ߏஙࢧԉ Sprintʢ1~4िؒʣ কདྷతͳ։ൃମ੍ͷ มԽΛߟྀ
  11. ੢ଜ͕஫ࢹ͍ͯ͠ΔपғͷมԽ ΦϦϯϐοΫಛधΛऴ͑ɺηΩϡϦςΟۀքͷ ٸ଎ͳྫྷ͑ࠐΈɻ࠾༻ࢢ৔ʹηΩϡϦςΟ ΤϯδχΞ͕ྲྀग़͠ɺίϞσΟςΟԽ͕Ճ଎     ౦ژΦϦϯϐοΫεϙϯαʔΛૂͬͨ ߈ܸͷඪతʹͳΔڪΕ

    ϦΫϧʔτਓࡐྖҬੈք/PͱͳΓ ࣭ྔͱ΋ʹੈքΫϥεͷ߈ܸ͕དྷΔڪΕ ηΩϡϦςΟ஌ݟͷ͋Δࣾ಺ΤϯδχΞͷ૿Ճ ࣾ಺Ͱ࠾༻͞ΕΔٕज़ͷٸ଎ͳҠΓมΘΓ
  12. ͜ͷ2೥ؒͰʮมԽʯʹͲ͏උ͑Δ͔͕উෛ ΦϦϯϐοΫಛधΛऴ͑ɺηΩϡϦςΟۀքͷ ٸ଎ͳྫྷ͑ࠐΈɻ࠾༻ࢢ৔ʹηΩϡϦςΟ ΤϯδχΞ͕ྲྀग़͠ɺίϞσΟςΟԽ͕Ճ଎     ౦ژΦϦϯϐοΫεϙϯαʔΛૂͬͨ ߈ܸͷඪతʹͳΔڪΕ

    ϦΫϧʔτਓࡐྖҬੈք/PͱͳΓ ࣭ྔͱ΋ʹੈքΫϥεͷ߈ܸ͕དྷΔڪΕ ηΩϡϦςΟ஌ݟͷ͋Δࣾ಺ΤϯδχΞͷ૿Ճ ࣾ಺Ͱ࠾༻͞ΕΔٕज़ͷٸ଎ͳҠΓมΘΓ ͜͜ͰͲ͏උ͑Δ͔ʁ
  13. CVE-2014-0580 CVE-2015-2744 CVE-2015-5208 CVE-2016-1136 CVE-2016-2816 CVE-2017-5386 CVE-2014-1591 CVE-2015-2745 CVE-2015-5256 CVE-2016-1137

    CVE-2016-2817 CVE-2017-5463 CVE-2014-5318 CVE-2015-2951 CVE-2015-5667 CVE-2016-1138 CVE-2016-7599 CVE-2017-7788 CVE-2014-7257 CVE-2015-2964 CVE-2015-6759 CVE-2016-1139 CVE-2016-7844 CVE-2017-7789 CVE-2014-8638 CVE-2015-3750 CVE-2015-6762 CVE-2016-1140 CVE-2016-7845 CVE-2017-10815 CVE-2015-0799 CVE-2015-3751 CVE-2015-7094 CVE-2016-1141 CVE-2017-2240 CVE-2017-10816 CVE-2015-0807 CVE-2015-3752 CVE-2015-7190 CVE-2016-1782 CVE-2017-2241 CVE-2017-10817 CVE-2015-0832 CVE-2015-5204 CVE-2015-7191 CVE-2016-1940 CVE-2017-2376 CVE-2017-10818 CVE-2015-2714 CVE-2015-5207 CVE-2015-8510 CVE-2016-1955 CVE-2017-5385 CVE-2017-10819 ϝϯόʔ͕ใࠂͨ͠੬ऑੑʢൈਮʣ
  14. ϦΫϧʔτͷηΩϡϦςΟ૊৫੒ख़౓    $4*35ൃ଍ ٕज़ۀ຿͸ϕϯμʔҕୗ ٕज़ਓһͷొ༻ʹΑΔ Ұ෦ۀ຿ͷ಺੡Խ΍ ϕϯμʔ඼࣭؅ཧʹணख ͜͜ͷ࢟Λඳ͘΂͖

    ͕࣌དྷ͍ͯΔ ߴ౓ͳٕज़ਓࡐͷ࠾༻΍ ैདྷͷ࿮Λ௒͑Δ׆ಈΛػʹ Ұஈ্ͷεςʔδʹਐΉ ४උ͕੔͍ͭͭ͋Δ ࠃ಺ઌਐେاۀ ࠃ಺ઌਐ*5ϕϯνϟʔ ࠃ಺اۀฏۉ ੈք ੒ख़౓
  15. ϕϯμʔ͔Βͷਓࡐྲྀग़ʹΑΓ ೥Ҏ߱ʹίϞσΟςΟԽ͠͏ΔྖҬ ੢ଜ͕ߟ͑ΔࠓޙٻΊΒΕΔηΩϡϦςΟਓࡐ ܦӦͱͷڮ౉͠ਓࡐ ʴ ηΩϡϦςΟ؂ࠪਓࡐ ηΩϡϦςΟٕज़ͷ Θ͔Δίϯαϧਓࡐ ʴ গ਺ͷηΩϡϦςΟ

    ٕज़ઐ໳ਓࡐ رগੑͱۀքχʔζͷ ૒ํΛอͯΔྖҬ ΤϯδχΞϦϯάྗΛۦ࢖ͯ͠ ࣗΒͷखͰ͋ΒΏΔ ՝୊ղܾΛߦ͏ ηΩϡϦςΟˍΤϯδχΞਓࡐ ίϞσΟςΟԽͷ೾ ੒ख़౓
  16. • άϧʔϓͷϝϯόʔʹԿ͔͠Βͷ։ൃΛΞαΠϯ • ੬ऑੑݕࠪͷਐ௙؅ཧγεςϜʮ.0,6#"ʯ • ύονϚωδϝϯτγεςϜʮ3"''-&4*"ʯ • ϓϥοτϑΥʔϜ੬ऑੑݕࠪγεςϜ • ࣗ෼ͨͪͰ։ൃΛߦ͏͜ͱͰಘΒΕΔ஌ݟ͕͋Δ

    • ηΩϡϦςΟࢪࡦΛυοάϑʔσΟϯά • ٕज़બఆͷ৹ඒ؟ʢӡ༻ऀͷࢹ఺ͳͲʣ • ։ൃϓϩηεʹ߹ͬͨηΩϡϦςΟࢪࡦΛఏҊ ؇΍͔ͳγϑτ͸͢Ͱʹ࢝·͍ͬͯΔ
  17. • )BDL&WFSZUIJOH • ࢲୡ͕ӦΉ͜Ε·ͰͷηΩϡϦςΟࢪࡦΛ)BDL͠ • ߹ཧੑ͸ଛͳΘͳ͍··ʹ • ςΫχΧϧʹਖ਼͘͠ • ඒ͘͠εςΩʹ

    • ίεύྑ͘ • ࢖͍΍͘͢ • ԿΑΓࣗ෼͕ͨͪϫΫϫΫ͢Δ΋ͷʹຏ্͖͍͛ͯ͘ͱ͍͏͜ͱ γϑτ͸ڪΕΔͷͰ͸ͳָ͘͠Ή΋ͷ