2.3 KiB
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") |