Files
solution-erp/.claude/workflows/runs/2026-07-29-S160-khkk-dryrun-plan/sub-reviewer-5.md
2026-07-29 16:54:56 +07:00

2.3 KiB

sub-reviewer-5 — CON TRỎ (lane 5: SECURITY + DATA-RISK)

VERDICT: SUA-TRUOC-THI-CONG — 3 HIGH / 6 MED / 5 LOW / 1 PASS-dương · 0 anchor sai.

Full-detail nằm ở file cùng thư mục theo tên lane mà spec-task chỉ định: 👉 .claude/workflows/runs/2026-07-29-S160-khkk-dryrun-plan/sub-reviewer-security-s160.md

(2 tên file do task-block gọi sub-reviewer-security-s160.md còn boilerplate RUN-TRACE gọi sub-reviewer-5.md; file này giữ để cả 2 đường trỏ đều tới nội dung, tránh em main đọc hụt.)

Index 15 finding

# SEV Tóm
F-S1 HIGH W8 seeder-grant dễ thành NO-OP im lặng (row Contracts đã tồn tại, nhánh non-Pe = continue skip-existing) ⇒ 403 giết dry-run
F-S2 HIGH 3 handler attachment 0-authz 0-phase-guard (download scan ký/dấu bởi mọi user); W8 cố ý để GET trần; plan §4 chưa khai
F-S3 HIGH W6 gate 5-anchor thiếu 2/3 call-site GetEligiblePhases (:301 list, :381 đã-xoá); hàm role-only ⇒ vá rẻ = mở toang
F-S4 HIGH→MED W6 không có test ÂM cho VIEW; ca ÂM prod không pin ROLE ⇒ 0-bit
F-S5 MED W8 grant theo ROLE ⟂ V2 duyệt theo USER-ID; 6/13 role ngoài list (gồm HrAdmin/AuthorizedSigner)
F-S6 MED Map "POST→Create" nuốt comments/attachments/details; test tính-chất không bắt map sai
F-S7 MED DeleteContractCommandHandler 0 owner-check
F-S8 MED W8 verify bằng sqlcmd RDP mâu thuẫn plan §7 (prod verify = curl)
F-S9 MED W6 nới guard trộn vế hẹp (CreatedBy) + vế rộng (Procurement); tên field lệch DrafterUserId
F-S10 MED-LOW FormsController:11 class-trần, 0 policy per-action — hố chưa khai
F-S11 LOW Guard >= DangInKy chặn cả ChoDuyet/TraLai/TuChoi, plan chỉ khai DaPhatHanh
F-S12 LOW Q11 2-đường-song-song ⇒ dry-run không chứng minh được cổng KHKK giữ
F-S13 PASS+INFO 0 mật khẩu trong plan/spec/sub-file; INFO: Admin@123456 ở 25 file tracked khác
F-S14 PASS "22 endpoint ghi" đúng; O-B/O-C phân vai đúng; revoker S92 không xung đột
F-S15 LOW Nhãn đo plan §3 "curl 6 phase" dưới-phủ enum 12 giá trị (vật chịu lực là "tổng")