ขั้นตอนแก้ไขเบื้องต้นเมื่อเจอช่องโหว่ใน Dependency ของ Nodejs

ขั้นตอนแก้ไขเบื้องต้นเมื่อเจอช่องโหว่ใน Dependency ของ Nodejs

เมื่อเราใช้ trivy scan หาช่องโหว่ Dependency ใน Nodejs เจอแล้ว ให้ดูว่า Library ไหนที่โดน ดูว่าติดตั้ง version ไหน และดูว่ามันได้รับการแก้ไขที่ version ไหนหรือยัง? จากนั้นกดไปดู Link รายละเอียดของ Vulnerability เพิ่มเติมได้

แล้วลองพิมพ์ npm audit ตรวจสอบอีกรอบว่า Library ที่โดนเป็นยังไงบ้าง

ถ้ามีอันไหนบอกว่า fix available via npm audit fix ก็ให้เราพิมพ์ npm audit fix เพื่อมันแก้ไขไปก่อน

จากนั้นจะเหลือตัวที่เราต้องแก้ไขเอง ให้เอาชื่อ Library ไปค้นหาใน package-lock.json

ถ้ามันแสดงแบบนี้ คือมันติดตั้ง 3.43

"node_modules/@koa/cors": {
      "version": "3.4.3",
      "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.4.3.tgz",
      "integrity": "sha512-WPXQUaAeAMVaLTEFpoq3T2O1C+FstkjJnDQqy95Ck1UdILajsRhu6mhJ8H2f4NFPRBoCNN+qywTJfq/gGki5mw==",
      "dependencies": {
        "vary": "^1.1.2"
      },
      "engines": {
        "node": ">= 8.0.0"
      }
    },

ให้เราหาต่อไปจนเจอ Library อยู่ใน dependencies ไหน ตามข้างล่างแสดงว่ามันอยู่กับ @strapi/strapi

"node_modules/@strapi/strapi": {
      "version": "4.11.3",
      "resolved": "https://registry.npmjs.org/@strapi/strapi/-/strapi-4.11.3.tgz",
      "integrity": "sha512-nK+8mQpiIiq81Eyx8CO8/AZSigyl6j9q/tz6grF2NkDvZrG9eQh93ey1Cb+GxEf3ZPcZKkZtmdPamScXNUHvsw==",
      "hasInstallScript": true,
      "dependencies": {
        "@koa/cors": "3.4.3",

เราก็ไปดูว่า @strapi/strapi ใน npmjs.com มันเวอร์ชั่นอะไรแล้ว ให้เราอัพเดทตาม หรือไปแก้เลข version ใน package.json เลย เพราะว่าเมื่อเราทำอัพเดท @strapi/strapi แล้ว โดยส่วนมากเจ้าตัว @koa/cors ที่มันดึงมาด้วยก็จะอัพเดทตามให้ทันที

จากนั้นก็ไปแก้ code เราที่เกี่ยวข้องกับ Library นั้นๆ ว่าได้รับผลกระทบอะไรบ้าง มีการทำงานผิดพลาดอะไรไหม เพราะการอัพเดทบ้างครั้ง อาจจะต้องมีการแก้ไขการเขียนไปเป็นอีกรูปแบบ

อันนี้เป็นวิธีการอัพเดท Library ต่างๆ ที่เขาได้มีการแก้ไขช่องโหว่แล้ว แต่เราไม่ได้อัพเดทตามเขา... หากใครมีวิธีอื่นๆ ก็แชร์กันมาได้นะ 😄

Arnon Kijlerdphon

Arnon Kijlerdphon

Board game & Plant-based & Minimalist, it's all my life.
Bangkok, Thailand