脆弱性のあるJavaScriptライブラリの使用を防ぐには / #sec_kansai 14

脆弱性のあるJavaScriptライブラリの使用を防ぐには / #sec_kansai 14

総関西サイバーセキュリティLT大会(第14回) ( https://sec-kansai.connpass.com/event/122914/ ) でJavaScriptライブラリの脆弱性に関する発表を行いました。

5cf7e9533a457726cd51232e06c1da9a?s=128

Masashi Hirano

April 10, 2019
Tweet

Transcript

  1. ੬ऑੑͷ͋ΔJavaScriptϥΠϒϥϦ ͷ࢖༻Λ๷͙ʹ͸ ૯ؔ੢αΠόʔηΩϡϦςΟ̡̩େձʢୈ14ճʣ ฏ໺ ণ࢜(@shisama)

  2. ฏ໺ ণ࢜ / Masashi Hirano ɹɹɹɹ Kyoto office @shisama_ @shisama

    Node.js Core Collaborator ؔ੢NodeֶԂOrganizer
  3. એ఻ https://nodejs.connpass.com/event/126358/

  4. Agenda • JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ৘ • ੬ऑੑͷ͋ΔϥΠϒϥϦͷ࢖༻Λ๷͙ʹ͸

  5. JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ৘

  6. JavaScriptͷϥΠϒϥϦࣄ৘ • Node.js / npmͷొ৔ʹΑΓJavaScriptͷϥΠϒϥϦ͕രൃతʹ ૿͑ͨ • Node.js΍ϑϩϯτΤϯυͳͲJSͷ։ൃͰ͸ଟ͘ͷϥΠϒϥϦ͕ ࢖ΘΕ͍ͯΔ

  7. npmʹొ࿥͞Ε͍ͯΔϥΠϒϥϦ͕ ѹ౗తͳ਺ʹͳ͍ͬͯΔ http://www.modulecounts.com/

  8. npmʹొ࿥͞Ε͍ͯΔϥΠϒϥϦ͕ ҟৗͳ਺ʹͳ͍ͬͯΔ http://www.modulecounts.com/ ਺͕ଟ͍෼ɺ ੬ऑੑͷ͋ΔϥΠϒϥϦ΋ଟ͍

  9. JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ৘ • ਓؾϥΠϒϥϦʹѱҙͷ͋Δίʔυ͕ૠೖ͞ΕΔࣄ݅ • ESLint (JavaScriptͷ࠷΋ϙϐϡϥʔͳ੩తղੳπʔϧ)ʹѱҙ ͷ͋Δίʔυ͕ૠೖ͞Ε͍ͯͨ(2018೥7݄) • 1िؒʹ200ສDLͷϥΠϒϥϦevent-streamʹԾ૝௨՟΢Υ Ϩοτ͔Β҉߸伴Λ౪Έग़͢ػೳ͕ૠೖ͞ΕΔ(2018೥11݄)

  10. JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ৘ • ੈքͷτοϓ75,000ͷWebαΠτ(Alexaௐ΂)ͷ্Ґ37%͕Կ͔͠Βͷ ੬ऑੑͷ͋ΔJSϥΠϒϥϦΛ࢖༻ • ϊʔεΠʔελϯେֶͷݚڀνʔϜʹΑΔௐࠪ݁Ռ(2017೥) • ݹ͍ϥΠϒϥϦΛ࢖༻͍ͯ͠Δ • ޿ࠂ΍τϥοΩϯάɺιʔγϟϧϝσΟΞͷ΢ΟδΣοτʹຒΊࠐ·

    Ε͍ͯΔ͜ͱ͕ଟ͍
  11. ੬ऑੑͷ͋ΔϥΠϒϥϦͷ࢖༻Λ๷͙ʹ͸

  12. npmͷηΩϡϦςΟ΁ͷऔΓ૊Έ • npmjs.comʹ֤ͯϥΠϒϥϦͷ੬ऑੑใࠂ͕Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ • npm v6͔Βnpm auditίϚϯυ͕௥Ճ͞Ε͍ͯΔ • ϓϩδΣΫτ಺ʹΠϯετʔϧͨ͠ϥΠϒϥϦͷ੬ऑੑΛνΣοΫ •

    ϥΠϒϥϦͷΠϯετʔϧ࣌ʹ΋࣮ߦ͞ΕΔ
  13. https://www.npmjs.com/package/typescript ֤ϥΠϒϥϦͰ੬ऑੑΛใࠂՄೳ

  14. npm auditΛ࣮ߦ͢ΔͱΠϯετʔϧͨ͠ ϥΠϒϥϦͷ੬ऑੑΛݕग़ͯ͘͠ΕΔ

  15. npm auditΛ࢖͏ • CIͰ࣮ߦ͢Δ͜ͱͰ੬ऑੑͷ͋ΔϥΠϒϥϦͷσϓϩΠΛ๷͙ • IBM/audit-ciͱ͍͏ϥΠϒϥϦΛ࢖͑͹੬ऑੑͷϨϕϧʹԠ͡ ͨݕग़Λߦ͑Δ • npm audit

    fixίϚϯυͰ੬ऑੑͷ͋ΔϥΠϒϥϦΛࣗಈमਖ਼
  16. npm audit fixΛ࣮ߦ͢Δͱ੬ऑੑ͕मਖ਼͞Εͨ όʔδϣϯͷϥΠϒϥϦΛΠϯετʔϧ͢Δ

  17. npm auditͰ͸ node security projectʹใࠂ͞Ε͍ͯͳ͍ ੬ऑੑ͸ݕग़Ͱ͖ͳ͍

  18. https://retirejs.github.io/retire.js/

  19. Retire.jsΛ࢖͏ • CVE΍HackerOne΁ͷใࠂΛجʹ੬ऑੑΛݕग़͢Δπʔϧ • ίϚϯυϥΠϯ͚ͩͰͳ͘ɺChrome΍Firefoxͷ֦ுػೳ΋͋Δ • unpkg.comͳͲCDN͔ΒಡΈࠐΜͰ͍ΔϥΠϒϥϦ΋֬ೝ͢ Δ͜ͱ͕Ͱ͖Δ • ͋ΒΏΔWebϖʔδͷ੬ऑੑΛ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ

  20. Retire.jsͷChrome ExtensionͰ WikipediaΛνΣοΫ (աڈͷΩϟϓνϟͰࠓ͸طʹमਖ਼ࡁ)

  21. https://snyk.io/

  22. SnykΛ࢖͏ • CVEͷσʔλΛجʹ੬ऑੑͷ͋ΔϥΠϒϥϦΛνΣοΫ͢Δαʔ Ϗε • ༷ʑͳݴޠʹରԠ͍ͯ͠Δ • ੬ऑੑΛमਖ਼͢ΔPull RequestΛࣗಈੜ੒ •

    OSS͸ແྉͰ࢖͑Δ
  23. https://snyk.io/vuln

  24. ·ͱΊ • JavaScript͸ϥΠϒϥϦ͕๛෋͕ͩ੬ऑੑͷ͋ΔϥΠϒϥϦ΋ଟ ͍ • ੬ऑੑͷݕग़΍म෮͸πʔϧͰߦ͑Δ

  25. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠