Skip to content

15.2 High security debt

บทนี้รวบรวม debt ด้านความปลอดภัยระดับ High — ความเสี่ยงที่อาจไม่ได้เกิดเหตุทันที แต่เพิ่มพื้นผิวการโจมตีและความรุนแรงเมื่อเกิด incident

รายการทั้งหมด

SEC-6 · trustServerCertificate: true บน MSSQL

ข้อมูลรายละเอียด
Evidencecentralize-api/src/app.module.ts:36-38,55-57 (trustServerCertificate: true บน TypeORM MSSQL). ไม่ใช่ vtrc-api/api/src/connector.js (MariaDB/Sequelize เท่านั้น — ไม่มี MSSQL/trustServerCertificate)
ปัญหาMSSQL connection ตั้ง trustServerCertificate: true ซึ่งทำให้ไม่ตรวจสอบ TLS certificate ของ MSSQL server — การเชื่อมต่อระหว่าง service กับ MSSQL อาจถูก MITM โดยไม่มีการเตือน
Impactผู้ไม่ประสงค์ดีที่ควบคุม network ระหว่าง service กับ MSSQL สามารถอ่าน/แก้ DB traffic ได้
Mitigation ระยะสั้นติดตั้ง TLS cert จาก internal CA แล้วตั้ง trustServerCertificate: false
แนวทางระยะยาวทุก DB connection ใช้ TLS ที่ตรวจสอบ certificate เสมอ

SEC-7 · axois typosquat และ axios หายจาก node_modules

ข้อมูลรายละเอียด
Evidencecu-central-api/main-api/package.json:20 — ประกาศ dependency axois (พิมพ์ผิด)
ปัญหาpackage.json ประกาศ axois แต่ lib/httpRequest.js:1 import axios ซึ่งไม่ได้ประกาศใน dependencies — httpRequest.js รันไม่ได้ตามที่เขียน มีความเป็นไปได้สองทาง: (ก) เป็น dead code ที่ไม่เคยถูกเรียก (ข) มี build process ที่แก้ resolution เงียบ ๆ
Impactถ้ามี code path ใดเรียก httpRequest.js ในขณะที่ axios ไม่อยู่ใน node_modules service จะ crash
Mitigation ระยะสั้นลบ axois ออกจาก package.json แล้วเพิ่ม axios@^1.x ที่ถูกต้อง — ตรวจดูว่ามี caller จริงหรือไม่
แนวทางระยะยาวเปลี่ยนไปใช้ HTTP client ของภาษาที่เลือก (เช่น net/http ใน Go) เพื่อลด dependency

SEC-8 · PII ใน URL path

ข้อมูลรายละเอียด
Evidencevtrc-api/api/src/routes.js:51:pid/:empcode/:device/:timestamp/:hash pattern ใน readfile/prs endpoints
ปัญหาidentityCard (เลขบัตรประชาชน) และ empCode อยู่ใน URL path ของ request — URL ถูกบันทึกใน nginx access log, browser history, CDN log, referrer header
ImpactPII รั่วไหลไปยัง log หลายแหล่ง ละเมิดหลักการ data minimization และอาจละเมิด PDPA
Mitigation ระยะสั้นใช้ short-lived opaque token (signed) แทนการส่ง PII ใน URL — ทำได้ภายใน 2-3 วัน
แนวทางระยะยาวตัวระบุทั้งหมดอยู่ใน POST body ที่เข้ารหัส log scrubbed ของ PII ผ่าน structured logger

SEC-9 · typosquat และ placeholder packages ใน dependencies

ข้อมูลรายละเอียด
Evidencevtrc-rc-backoffice/package.json:46,49,67,71undefined-service-web, i, npm, save; cu-central-api/.../package.json:25error-ex เป็น git URL dependency
ปัญหาdependency เหล่านี้เป็น typosquat หรือ placeholder ที่ไม่ควรอยู่ใน production — เพิ่มความเสี่ยง supply chain (แพ็กเกจเหล่านี้อาจถูกควบคุมโดยผู้ไม่ประสงค์ดีในอนาคต)
Impactผู้ไม่ประสงค์ดีที่ควบคุมแพ็กเกจเหล่านี้สามารถ inject โค้ดใน build ได้
Mitigation ระยะสั้นลบ dependency เหล่านี้ออกจาก package.json regenerate lockfile รัน npm audit --production — ทำได้ภายใน 1 วัน
แนวทางระยะยาวdependency review ใน CI (เช่น dependency-cruiser, socket.dev)

SEC-10 · ไม่มี rate limiting ทุก endpoint

ข้อมูลรายละเอียด
Evidencevtrc-api/api/src/index.js (ไม่มี express-rate-limit หรือ middleware ที่คล้ายกัน)
ปัญหาlogin, OTP request, refresh token, time-attendance endpoint ไม่มีการจำกัดอัตราการเรียก — ผู้ไม่ประสงค์ดีสามารถ brute-force password หรือ OTP หรือ scrap ข้อมูลได้
Impactความเสี่ยง credential stuffing, OTP brute-force (OTP 6 หลัก = 1 ล้านความเป็นได้ได้), การดึงข้อมูลจำนวนมาก
Mitigation ระยะสั้นเพิ่ม express-rate-limit middleware สำหรับ login, OTP, refresh endpoint — กำหนด limit ต่อ IP + ต่อ token — ทำได้ภายใน 2-3 วัน
แนวทางระยะยาวtoken-bucket rate limit ที่ Redis-backed แยกตาม endpoint type

ผลกระทบรวมของ High security debt

ถ้าผู้ไม่ประสงค์ดีเข้าถึงระบบได้ผ่านช่องโหว่ใดช่องโหว่หนึ่งในบทนี้ ผลกระทบมักรุนแรงเพราะ:

  1. PII รั่วผ่าน log (SEC-8) ทำให้ incident บานปลาย
  2. ไม่มี rate limit (SEC-10) ทำให้ตรวจจับการโจมตีช้า
  3. DB traffic ไม่ตรวจ cert (SEC-6) ทำให้ lateral movement ง่าย

สรุป

IDรายการEffort ระยะสั้น
SEC-6trustServerCertificate: true1-2 วัน
SEC-7axois typosquat0.5 วัน
SEC-8PII ใน URL2-3 วัน
SEC-9typosquat/placeholder packages1 วัน
SEC-10ไม่มี rate limit2-3 วัน

ทั้ง 5 รายการเป็นเป้าหมายของ Wave 1 (stabilize) ในบท 14.10 — แก้ภายใน 1-3 เดือน

บทถัดไปจะไปยัง debt ด้าน performance ที่กระทบความเร็วและความสามารถในการขยายตัวของระบบ