Skip to content

report-log — Scorecard

Legend:

  • Critical = active security/data-loss/availability risk
  • High = correctness/maintainability hazard, real impact
  • Medium = friction/hygiene, ยังไม่เป็นอันตราย

repo นี้ (branch: master) มีรายการระดับ Critical เพราะมีข้อมูลส่วนบุคคลจริงของผู้ใช้ระบบฝังอยู่ใน git history แบบ plaintext


Scorecard table

IDSeverityคำอธิบายหลักฐาน (file:line)การแก้ไข
SEC-REPORTLOG-01Criticalไฟล์ request_*.log ที่ commit ไว้ 63 ไฟล์ มีเลขบัตรประชาชน (citizenId), วันเกิด, empCode, รหัสผ่าน login แบบ plaintext ใน query string, JWT/refresh ใน query, FCM token, และ IP — ไม่ถูก mask ก่อน commit (header authorization ถูก _REPLACED_ แต่ inline query ไม่ถูก)request_2023-02-17.logrequest_2023-04-20.log; pattern ที่ app.js:10; producer gap ที่ vtrc-api/api/src/lib/logging.js:7-8,65-70ลบไฟล์ log ที่มี PII ออกจาก git history (rewrite history), จำกัดการ clone, แจ้งตามนโยบาย PDPA; แก้ redaction ที่ vtrc-api ให้ครอบคลุม inline args + apikey
SEC-REPORTLOG-02High.gitignore มี # *.log ถูก comment ปิด — นโยบายปัจจุบันคืออนุญาต commit logreport-log/.gitignore:16-17เปิด *.log ใน gitignore; mask PII ก่อน export จาก API host
SEC-REPORTLOG-03Highconsole.log(dataM) / console.log(dataW) พิมพ์ raw log lines (รวม PII) ออก stdout ทุกครั้งที่รันapp.js:108-109ลบหรือลดให้เหลือ count เท่านั้น; ห้าม dump raw line
CORR-REPORTLOG-01Mediumโค้ดจัด OMM/OWW ด้วย users.filter(item => !keyUserM.includes(item)) — ได้สมาชิก users.json ที่ไม่ปรากฏในวันนั้น ไม่ใช่ "user นอกจุฬาที่เรียก API" ตามชื่อ typeapp.js:128-141แก้ logic ให้ Other = keyUser − users หรือตั้งชื่อ type ใหม่ให้ตรงความหมาย
QUAL-REPORTLOG-01Mediumusers.json (9,486 UUID) ไม่มี metadata แหล่งที่มา/วันที่ exportusers.json; คอมเมนต์ app.js:111,124เพิ่ม README อธิบายที่มา
QUAL-REPORTLOG-02Mediumhard-code วันที่; CSV export comment ปิด; ต้องแก้ source ทุกครั้งที่จะรันซ้ำapp.js:4,211,221-229CLI args --start/--end/--output; เปิด export เป็น default
QUAL-REPORTLOG-03MediumsetVerticalData เป็น dead code และมี index arithmetic ที่เสี่ยง throwapp.js:150-206ลบหรือแยกเป็น script พร้อม test
OBS-REPORTLOG-01Mediumไม่มี try/catch รอบ readData — ไฟล์วันใดหายแล้วทั้ง batch ล้มapp.js:85-88,208-219catch ต่อวันแล้ว continue

ตัวเลขที่ยืนยันใหม่ (แก้เอกสารเก่า)

รายการค่าเก่าใน scaffoldค่าที่ยืนยันบน masterวิธียืนยัน
จำนวนไฟล์ log5063ls request_*.log | wc -l
จำนวน pattern ใน array2831นับ entries ใน app.js:9-47
จำนวน menu2931app.js:51-83
จำนวน UUID ใน users.json9,4859,486json.load length

ลำดับ remediation

  1. SEC-REPORTLOG-01 — sanitize/ลบ git history ของ request_*.log + ประสาน PDPA
  2. SEC-REPORTLOG-02 — ปิดการ commit log ในอนาคต
  3. แก้ redaction ที่ vtrc-api (logging.js) — นอก repo นี้แต่เป็น root cause
  4. hygiene ของ app.js (CORR/QUAL/OBS)

Cross-ref