มหาวิทยาลัยมหามกุฏราชวิทยาลัย · ระบบสาธิต (Demo)
ข้ามไปยังเนื้อหา

รายงานผลการตรวจสอบช่องโหว่ (Vulnerability Scan)

งวดที่ 2 · รายงานอัตโนมัติ

ดาวน์โหลด .md
← กลับไปศูนย์เอกสารสร้างอัตโนมัติ · สร้างเมื่อ 3 ตุลาคม 2569 เวลา 08:52ข้อ TOR: 4.8.1, 7.2.6, ก.2.2.2

สร้างอัตโนมัติเมื่อ 2026-10-03T01:52:40Z

รายงานผลการตรวจสอบช่องโหว่ (Vulnerability Scan)

อ้างอิง TOR: ข้อ 4.8.1 (Vulnerability Scan + รายงาน + ไม่มี High/Critical), ข้อ 7.2.6 (เอกสารส่งมอบงวดที่ 2), ข้อ ก.2.2.2 (ไม่มี High/Critical ก่อนใช้งานจริง)

รายงานนี้สร้างโดย scripts/security/npm-audit-report.ts (npm run report:security) จากผลจริงของ npm audit --json ซึ่งเทียบ dependency ทั้งหมดใน package-lock.json กับฐานข้อมูล GitHub Advisory — สคริปต์ ไม่ แก้ไข dependency ใด ๆ (ไม่รัน npm audit fix)

1. สรุปผล

รายการค่า
ผลตาม TOR 4.8.1 / ก.2.2.2ไม่ผ่าน — มี High/Critical คงค้าง 9 รายการ: @next/eslint-plugin-next (high), @prisma/config (high), braces (high), deepmerge-ts (high), eslint-config-next (high), fast-glob (high), micromatch (high), postcss (high), prisma (high)
วันที่สแกน2026-10-03T01:52:40Z
เครื่องมือnpm audit (npm 11.17.0, Node v24.19.0)
จำนวน dependency ที่ตรวจทั้งหมด 841 (prod 293, dev 488, optional 164, peer 31)
จำนวน package ที่มีช่องโหว่10
High/Critical คงค้าง9

2. จำนวนตามระดับความรุนแรง

ระดับทั้งหมดProduction (--omit=dev)เฉพาะ dev
critical000
high945
moderate110
low000
info000
รวม1055

หมายเหตุ: นับเป็นจำนวน package ที่ได้รับผลกระทบ (รูปแบบเดียวกับ npm audit) — package หนึ่งอาจมีหลาย advisory และ advisory เดียวอาจทำให้ package ที่พึ่งพามันถูกนับด้วย คอลัมน์ Production คือ package ที่ยังปรากฏเมื่อสแกนแบบ npm audit --omit=dev

3. รายการ Advisory

PackageระดับขอบเขตDirectAdvisoryช่วงเวอร์ชันที่กระทบการแก้ไขที่มี
@next/eslint-plugin-nexthighdev เท่านั้นไม่ (transitive)รับผลจาก fast-glob>=14.3.0-canary.0ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน eslint-config-next 15.5.27 → 14.2.35 (semver-major)
@prisma/confighighproductionไม่ (transitive)รับผลจาก deepmerge-ts6.13.0-dev.1 - 8.1.0-dev.4ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน prisma 6.19.3 → 6.12.0 (semver-major)
braceshighdev เท่านั้นไม่ (transitive)braces vulnerable to stack-exhaustion denial of service through deeply nested patterns [high]*ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน eslint-config-next 15.5.27 → 14.2.35 (semver-major)
deepmerge-tshighproductionไม่ (transitive)DeepmergeTS has stack exhaustion when merging recursive object graphs [high]<8.0.0ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน prisma 6.19.3 → 6.12.0 (semver-major)
eslint-config-nexthighdev เท่านั้นใช่รับผลจาก @next/eslint-plugin-next>=14.3.0-canary.0ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน eslint-config-next 15.5.27 → 14.2.35 (semver-major)
fast-globhighdev เท่านั้นไม่ (transitive)รับผลจาก micromatch*ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน eslint-config-next 15.5.27 → 14.2.35 (semver-major)
micromatchhighdev เท่านั้นไม่ (transitive)รับผลจาก braces>=0.2.0ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน eslint-config-next 15.5.27 → 14.2.35 (semver-major)
postcsshighproductionไม่ (transitive)(1) PostCSS has XSS via Unescaped </style> in its CSS Stringify Output [moderate] (2) PostCSS: Arbitrary file read and information disclosure via attacker-controlled sourceMappingURL in CSS comments [high] (3) PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappingURL reads arbitrary .map files when from is unset [moderate] (4) PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure [high]<=8.5.22มี แต่เป็น breaking — ต้องเปลี่ยนเป็น next@16.3.8 (จาก 15.5.27) (semver-major)
prismahighproductionใช่รับผลจาก @prisma/config6.13.0-dev.1 - 8.1.0-dev.4ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน — npm เสนอเพียงการลดเวอร์ชัน prisma 6.19.3 → 6.12.0 (semver-major)
nextmoderateproductionใช่รับผลจาก postcss9.3.4-canary.0 - 16.3.0-preview.10มี แต่เป็น breaking — ต้องเปลี่ยนเป็น next@16.3.8 (จาก 15.5.27) (semver-major)

4. แผนการแก้ไข (Remediation Plan)

ลำดับระดับสูงสุดPackage ที่เกี่ยวข้องสิ่งที่ต้องทำกำหนดแก้ (SLA)
1high@next/eslint-plugin-next, braces, eslint-config-next, fast-glob, micromatchnpm เสนอเพียงการลดเวอร์ชันเป็น eslint-config-next@14.2.35 ซึ่งไม่ใช่ทางแก้ที่ใช้ได้ — ใช้ overrides ใน package.json ปัก dependency ย่อยที่มีแพตช์แล้ว หรืออัปเกรดเมื่อผู้พัฒนาต้นทางออกเวอร์ชันที่แก้ไข แล้วรันชุดทดสอบภายใน 24 ชม. นับจากบันทึก Defect และต้องปิดก่อนใช้งานจริง (ก.2.2.2)
2high@prisma/config, deepmerge-ts, prismanpm เสนอเพียงการลดเวอร์ชันเป็น prisma@6.12.0 ซึ่งไม่ใช่ทางแก้ที่ใช้ได้ — ใช้ overrides ใน package.json ปัก dependency ย่อยที่มีแพตช์แล้ว หรืออัปเกรดเมื่อผู้พัฒนาต้นทางออกเวอร์ชันที่แก้ไข แล้วรันชุดทดสอบภายใน 24 ชม. นับจากบันทึก Defect และต้องปิดก่อนใช้งานจริง (ก.2.2.2)
3highpostcss, nextเปลี่ยนเวอร์ชันเป็น next@16.3.8 (semver-major — npm audit fix --force) ต้องทดสอบ regression ทั้งระบบก่อนนำขึ้น หรือใช้ overrides ปักเวอร์ชัน dependency ย่อยที่แก้แล้วภายใน 24 ชม. นับจากบันทึก Defect และต้องปิดก่อนใช้งานจริง (ก.2.2.2)

การจำแนก High/Critical:

  • อยู่ใน dependency tree ของ production: @prisma/config, deepmerge-ts, postcss, prisma
  • เฉพาะ devDependencies: @next/eslint-plugin-next, braces, eslint-config-next, fast-glob, micromatch
  • แก้ได้ด้วย npm audit fix แบบไม่ breaking: ไม่มี
  • ต้องเปลี่ยนเวอร์ชันแบบ breaking (semver-major): postcss → next@16.3.8
  • ไม่มีแพตช์ในสายเวอร์ชันปัจจุบัน (npm เสนอเพียงการลดเวอร์ชัน): @next/eslint-plugin-next (eslint-config-next@14.2.35), @prisma/config (prisma@6.12.0), braces (eslint-config-next@14.2.35), deepmerge-ts (prisma@6.12.0), eslint-config-next (eslint-config-next@14.2.35), fast-glob (eslint-config-next@14.2.35), micromatch (eslint-config-next@14.2.35), prisma (prisma@6.12.0)
  • ยังไม่มีแพตช์: ไม่มี

การประเมินการเปิดรับความเสี่ยงเบื้องต้น (บันทึกของทีมพัฒนา — ไม่ได้ลดระดับความรุนแรงที่รายงานข้างต้น และต้องได้รับการยืนยันจากผู้ตรวจ):

  • @prisma/config: ถูกโหลดโดย Prisma CLI เท่านั้น เพื่ออ่านไฟล์ config ของโครงการเอง (ไม่ใช่ข้อมูลจากผู้ใช้)
  • deepmerge-ts: ถูกเรียกผ่าน @prisma/config ของ Prisma CLI เพื่อ merge ไฟล์ config ของโครงการ — ไม่มีการ merge ข้อมูลที่ผู้ใช้ส่งเข้ามา
  • postcss: สำเนา postcss ที่ติดมากับ next ใช้ประมวลผล CSS ของโครงการเองตอน build/dev — ระบบไม่รับ CSS หรือ source map จากผู้ใช้มาประมวลผล
  • prisma: Prisma CLI ใช้ตอน build/deploy (prisma migrate deploy, prisma generate) ไม่อยู่ในเส้นทางรับคำขอของผู้ใช้ — runtime ใช้ @prisma/client ซึ่งไม่อยู่ในรายการช่องโหว่นี้
  • next: ถูกนับเพราะพึ่งพา postcss รุ่นที่มีช่องโหว่ (ดูแถว postcss)

5. การบันทึก Defect

มี DefectLog ที่ยังเปิดอยู่จากสคริปต์นี้แล้ว (id 2f21c80f-1ba3-4f0a-9815-dc59c971daf7) จึงไม่สร้างซ้ำ

6. เกณฑ์และข้อจำกัด

  • เกณฑ์ผ่าน: ไม่มีช่องโหว่ระดับ High หรือ Critical คงค้าง (TOR 4.8.1, ก.2.2.2) — ระดับ Moderate ลงไปบันทึกไว้ในแผนแก้ไขและแก้ในรอบบำรุงรักษา
  • ขอบเขต: ช่องโหว่ที่ทราบของ dependency (Software Composition Analysis) จาก npm registry ณ เวลาที่สแกน — ไม่ครอบคลุมช่องโหว่ในโค้ดของระบบเอง, container image หรือโครงสร้างพื้นฐาน ซึ่งต้องตรวจเพิ่มด้วยการสแกน image/โครงสร้างพื้นฐานของสภาพแวดล้อม production และการทดสอบเจาะระบบตามเอกสาร pentest-report
  • ผลเปลี่ยนได้เมื่อมี advisory ใหม่ จึงต้องสแกนซ้ำก่อนส่งมอบแต่ละงวดและก่อนใช้งานจริง

7. วิธีสแกนซ้ำ

npm run report:security          # สร้างรายงานนี้ใหม่
npm audit                        # ดูรายละเอียดบนเทอร์มินัล
npm audit --omit=dev             # เฉพาะ dependency ของ production