総関西サイバーセキュリティLT大会(第14回) ( https://sec-kansai.connpass.com/event/122914/ ) でJavaScriptライブラリの脆弱性に関する発表を行いました。
੬ऑੑͷ͋ΔJavaScriptϥΠϒϥϦͷ༻Λ͙ʹ૯ؔαΠόʔηΩϡϦςΟ̡̩େձʢୈ14ճʣฏ ণ࢜(@shisama)
View Slide
ฏ ণ࢜ / Masashi Hiranoɹɹɹɹ Kyoto office@shisama_@shisamaNode.js Core CollaboratorؔNodeֶԂOrganizer
એhttps://nodejs.connpass.com/event/126358/
Agenda• JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ• ੬ऑੑͷ͋ΔϥΠϒϥϦͷ༻Λ͙ʹ
JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ
JavaScriptͷϥΠϒϥϦࣄ• Node.js / npmͷొʹΑΓJavaScriptͷϥΠϒϥϦ͕രൃతʹ૿͑ͨ• Node.jsϑϩϯτΤϯυͳͲJSͷ։ൃͰଟ͘ͷϥΠϒϥϦ͕ΘΕ͍ͯΔ
npmʹొ͞Ε͍ͯΔϥΠϒϥϦ͕ѹతͳʹͳ͍ͬͯΔhttp://www.modulecounts.com/
npmʹొ͞Ε͍ͯΔϥΠϒϥϦ͕ҟৗͳʹͳ͍ͬͯΔhttp://www.modulecounts.com/͕ଟ͍ɺ੬ऑੑͷ͋ΔϥΠϒϥϦଟ͍
JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ• ਓؾϥΠϒϥϦʹѱҙͷ͋Δίʔυ͕ૠೖ͞ΕΔࣄ݅• ESLint (JavaScriptͷ࠷ϙϐϡϥʔͳ੩తղੳπʔϧ)ʹѱҙͷ͋Δίʔυ͕ૠೖ͞Ε͍ͯͨ(20187݄)• 1िؒʹ200ສDLͷϥΠϒϥϦevent-streamʹԾ௨՟ΥϨοτ͔Β҉߸伴Λ౪Έग़͢ػೳ͕ૠೖ͞ΕΔ(201811݄)
JavaScriptϥΠϒϥϦͷ੬ऑੑࣄ• ੈքͷτοϓ75,000ͷWebαΠτ(Alexaௐ)ͷ্Ґ37%͕Կ͔͠Βͷ੬ऑੑͷ͋ΔJSϥΠϒϥϦΛ༻• ϊʔεΠʔελϯେֶͷݚڀνʔϜʹΑΔௐࠪ݁Ռ(2017)• ݹ͍ϥΠϒϥϦΛ༻͍ͯ͠Δ• ࠂτϥοΩϯάɺιʔγϟϧϝσΟΞͷΟδΣοτʹຒΊࠐ·Ε͍ͯΔ͜ͱ͕ଟ͍
੬ऑੑͷ͋ΔϥΠϒϥϦͷ༻Λ͙ʹ
npmͷηΩϡϦςΟͷऔΓΈ• npmjs.comʹ֤ͯϥΠϒϥϦͷ੬ऑੑใࠂ͕Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ• npm v6͔Βnpm auditίϚϯυ͕Ճ͞Ε͍ͯΔ• ϓϩδΣΫτʹΠϯετʔϧͨ͠ϥΠϒϥϦͷ੬ऑੑΛνΣοΫ• ϥΠϒϥϦͷΠϯετʔϧ࣌ʹ࣮ߦ͞ΕΔ
https://www.npmjs.com/package/typescript֤ϥΠϒϥϦͰ੬ऑੑΛใࠂՄೳ
npm auditΛ࣮ߦ͢ΔͱΠϯετʔϧͨ͠ϥΠϒϥϦͷ੬ऑੑΛݕग़ͯ͘͠ΕΔ
npm auditΛ͏• CIͰ࣮ߦ͢Δ͜ͱͰ੬ऑੑͷ͋ΔϥΠϒϥϦͷσϓϩΠΛ͙• IBM/audit-ciͱ͍͏ϥΠϒϥϦΛ͑੬ऑੑͷϨϕϧʹԠͨ͡ݕग़Λߦ͑Δ• npm audit fixίϚϯυͰ੬ऑੑͷ͋ΔϥΠϒϥϦΛࣗಈमਖ਼
npm audit fixΛ࣮ߦ͢Δͱ੬ऑੑ͕मਖ਼͞ΕͨόʔδϣϯͷϥΠϒϥϦΛΠϯετʔϧ͢Δ
npm auditͰnode security projectʹใࠂ͞Ε͍ͯͳ͍੬ऑੑݕग़Ͱ͖ͳ͍
https://retirejs.github.io/retire.js/
Retire.jsΛ͏• CVEHackerOneͷใࠂΛجʹ੬ऑੑΛݕग़͢Δπʔϧ• ίϚϯυϥΠϯ͚ͩͰͳ͘ɺChromeFirefoxͷ֦ுػೳ͋Δ• unpkg.comͳͲCDN͔ΒಡΈࠐΜͰ͍ΔϥΠϒϥϦ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ• ͋ΒΏΔWebϖʔδͷ੬ऑੑΛ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ
Retire.jsͷChrome ExtensionͰWikipediaΛνΣοΫ(աڈͷΩϟϓνϟͰࠓطʹमਖ਼ࡁ)
https://snyk.io/
SnykΛ͏• CVEͷσʔλΛجʹ੬ऑੑͷ͋ΔϥΠϒϥϦΛνΣοΫ͢ΔαʔϏε• ༷ʑͳݴޠʹରԠ͍ͯ͠Δ• ੬ऑੑΛमਖ਼͢ΔPull RequestΛࣗಈੜ• OSSແྉͰ͑Δ
https://snyk.io/vuln
·ͱΊ• JavaScriptϥΠϒϥϦ͕๛͕ͩ੬ऑੑͷ͋ΔϥΠϒϥϦଟ͍• ੬ऑੑͷݕग़म෮πʔϧͰߦ͑Δ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠