Skip to content

12.5 · Critical findings addendum (Deep Redo 2026-07)

บทนี้เป็น addendum ของ 12.3 หลัง DEEP REDO ของ per-service scorecards (Wave 1–2) — finding ใหม่หรือที่ยกระดับเป็น Critical จากหลักฐาน file:line ที่ลึกกว่า shallow pass เดิม

อย่าใช้ตัวเลข 48 จาก 12.3 เป็น canonical อีกต่อไป — ตารางด้านล่างคือ Critical ชุดใหม่ที่ต้อง reconcile เข้า master register ใน Volume 17


สรุปจำนวน (post deep-redo, partial)

GroupCritical เพิ่ม/ยืนยันใหม่ (ตัวอย่าง)
Legacy coreSEC-VTRC-API-01..04 (deep scorecard 590 บรรทัด)
FrontendsSEC-VTRC-RC-01..05, SEC-VTRC-WEB-01..04
2waySEC-2WAYAPI-01..04, SEC-2WAYVTRC-01..03/07/08
DomainSEC-BENEFIT-01..05, SEC-RECRUIT-01..03, SEC-PMS-01..02, SEC-AIRECRUIT-01..02, SEC-CHAT-01/04, SEC-WORKFLOW-01..02, SEC-COMMON-01/03
MeetingSEC-MTVTRC-01/02/05/06
Scheduler/SSOSEC-JOBSCHED-01..02, CORR-SSO-01 (auth broken)

Backdoor / bypass cluster (ต้องแก้ก่อน)

IDRepoEvidenceImpact
SEC-2WAYAPI-012way-apihardcode i3admin login → JWT admin 48hfull admin without SSO
SEC-2WAYVTRC-012way-vtrc-apibypass token "testnaja"skip auth on middleware
SEC-CU-04cu-central-api/auth/signinbypasspasswordless signin live
CRIT-03centralize-api@Public() ทุก routeauth machinery dead
SEC-MTVTRC-05meeting-vtrc-apiglobal /meeting/secure/* auth commentedAPI surface open
SEC-BENEFIT-03benefit-api@Public() wdHospitals CRUDmedical claim without login
SEC-PMS-01pms-api@Public() salary endpointssalary leak
SEC-RECRUIT-03recruitment-api@Public() import_blacklistblacklist import open

Secrets-in-git cluster (rotate พร้อมกัน)

IDRepoWhat's leaked
SEC-BENEFIT-01benefit-apiMSSQL ×3 + JWT + SFTP password hardcode
SEC-RECRUIT-01recruitment-apiMSSQL + JWT + SMTP + reCAPTCHA + GCP SA
SEC-AIRECRUIT-01ai-recruitment-apiOpenAI/remove.bg keys + DB
SEC-PMS-02pms-apishared JWT secret + UAT creds
SEC-CHAT-04chat-center-apiprod/UAT .env
SEC-COMMON-03vtrc-common.env + Docker bake
SEC-JOBSCHED-01job-scheduler-api.env with sa password
SEC-MTVTRC-01meeting-vtrc-api.env* plaintext
SEC-2WAYVTRC-032way-vtrc-apiMongo + MSSQL sa in source
SEC-VTRC-RC-01vtrc-rc-backofficeStimulsoft conn + AES key

Shared JWT pattern: benefit-api / recruitment-api / ai-recruitment-api / pms-api ใช้ SECRET_KEY ชุดเดียวกัน — rotate ต้องพร้อมกัน (ดู runbook §2)


SQL injection cluster

IDRepoEvidence
SEC-VTRC-API-07 / SEC-BENEFIT-02vtrc-api / benefit-apitemplate literal raw SQL
SEC-2WAYAPI-032way-apiannounces/surveys/complaints
SEC-RECRUIT-02recruitment-apidynamic EXEC AI compare
SEC-CHAT-01chat-center-apirooms/tags query string
SEC-COMMON-02vtrc-commonaddress provCode/amphCode
approvedisaster.service.ts:415-417benefit-apiempCode = ${query.approverEmpCode} ไม่มี quote

Command injection / dangerous exec

IDRepoEvidence
SEC-VTRC-API-01vtrc-apiexecSync(qpdf --encrypt ${passwordPDF}...) ×5
SEC-VTRC-API-03vtrc-api/webdeployment shell binary

Frontend token-in-URL / XSS

IDRepoEvidence
SEC-VTRC-RC-02vtrc-rc-backoffice/pathLogin/:token/:refreshToken
SEC-BONEW-01vtrc-backoffice-newtoken in URL path
SEC-VTRC-WEB-02 / SEC-VTRC-RC-04web/rc-bodangerouslySetInnerHTML

Broken auth design (ไม่ใช่ bypass แต่ flow พัง)

IDRepoEvidence
CORR-SSO-01sso-apiJWT sign() commented + JwtService not injected
SEC-2WAYAPI-052way-apiignoreExpiration: true
SEC-WORKFLOW-01workflow-apiไม่ verify JWT; role จาก sourceDB
SEC-AIRECRUIT-02ai-recruitment-apisignature only — no role
SEC-JOBSCHED-02job-scheduler-apicron POST ไม่มี auth

ROI — ลำดับแก้ระดับแพลตฟอร์ม

  1. Rotate ทุก secret ที่หลุดใน git (secrets cluster) + git filter-repo
  2. ลบ backdoor (i3admin, testnaja, signinbypass) + ปิด @Public() ที่ write/PII
  3. Parameterized SQL ทั้ง injection cluster
  4. แทนที่ execSync qpdf (SEC-VTRC-API-01)
  5. SSO redesign — ออก JWT จริงหรือลบ guard ที่ทำให้ 2FA พัง (CORR-SSO-01)
  6. HttpOnly cookie / CSP / dompurify ฝั่ง frontend

สิ่งที่ยังต้อง reconcile

  • Volume 17 master register ยังอ้าง 275 items จาก shallow pass — ต้องนับใหม่หลัง mobile/OCR agents เสร็จ
  • Volume 18 security review ต้อง import ตารางนี้เป็น input
  • Finding ID ที่ซ้ำชื่อข้าม shallow vs deep (เช่น C1 vs SEC-VTRC-RC-01) — ใช้ deep ID เป็น canonical

ไป 12.3 (legacy table) หรือ Volume 17