V9 · BUG BOUNTY HUNTER · HUMAN-IN-THE-LOOP

AI làm copilot, evidence mới là nguồn sự thật

AI được dùng như trợ lý, nhưng researcher vẫn phải : tự xác minh , bằng chứng, khả năng tái hiện và impact trước khi gửi report. Workspace này không quét Internet, không né WAF và không gửi dữ liệu ra ngoài.

Business LogicEvidence DiffAI Prompt GuardrailsReport Quality Gate
0/8business-logic lab đã tự kiểm chứngProgress lưu localStorage trên thiết bị.
HUNTING MINDSET

6 trục kỹ năng thay vì “AI hack giùm”

Từng track bắt người học đi từ policy → model → evidence → report. Không track nào cho phép lấy output AI làm finding.

Policy / Rate Limit / Stop Condition

&

  • Đọc in-, out-of-, kỹ thuật cấm, giới hạn automation và rate limit trước khi test.
  • Lập để giữ phép thử nhỏ, có mục đích và không gây tải không cần thiết.
  • Định nghĩa khi thấy dữ liệu nhạy cảm, side effect ngoài dự kiến hoặc rời .
  • Tách “ít request” khỏi “có quyền”: request ít không tự tạo .
  • Ghi policy constraint cùng để report/ không vô tình vượt giới hạn.
Invariant / State Machine / Multi-account

Hunter

  • Vẽ của feature trước khi nghĩ tên vulnerability.
  • Viết : điều gì tuyệt đối không được xảy ra dù request tới từ browser, mobile hay client.
  • Dùng hai tài khoản test để phân biệt ownership, role và organization boundary.
  • So before/after state, side effect và audit trail thay vì chỉ nhìn .
  • Tạo negative test cho coupon, refund, , invitation, quota và object ownership.
Human-in-the-loop / Code Review / Hypothesis

AI-assisted Research

  • Dùng AI để tóm tắt code, sources/sinks và câu hỏi cần review, không coi output AI là .
  • Buộc AI tách FACT / ASSUMPTION / UNKNOWN để giảm .
  • Dùng AI tạo checklist hoặc PoC skeleton tối thiểu cho lab sau khi hypothesis đã có .
  • Không gửi , credential, dữ liệu khách hàng hoặc confidential lên dịch vụ AI không được phép.
  • Manual review toàn bộ report AI hỗ trợ trước khi nộp.
Baseline / Diff / Redaction

Engineering

  • Giữ request/response và variant thay đúng một biến.
  • Redact token// nhưng giữ đủ context để triager tái hiện.
  • Ghi account/state/request ID/timestamp khi chúng quyết định kết quả.
  • Phân biệt screenshot minh họa với tái hiện được.
  • Chứng minh impact tối thiểu, không lấy thêm dữ liệu chỉ để “cho nặng”.
Reproducible / Concise / Verified

  • Viết title nói rõ subject/action/object hoặc bị phá.
  • Steps đủ để người khác lặp lại mà không cần đoán endpoint/state.
  • Impact chỉ nói điều đã chứng minh hoặc giới hạn rõ assumption.
  • Đính đã làm sạch và chỉ ra so với variant.
  • Tự hỏi: confirmed? human verified? reproducible? trước khi submit.
Feature Depth / Notes / Pivot

-aware Hunting

  • Không dành cả buổi quét lỗi bề mặt phổ biến giống mọi người.
  • Chọn một feature rồi lập data model, role matrix, state transition và .
  • Ghi hypothesis đã thử để tránh quay lại cùng một ngõ cụt.
  • sang biến thể logic gần kề khi không tăng, thay vì spam payload.
  • Viết riêng cho lab: feature + + actor + state + .
LOW-IMPACT TESTING

Request Budget Planner

Rate limit và dùng để giảm tác động, tuân policy và giữ phép thử có kiểm soát; không dùng để ngụy trang traffic hay né cơ chế phòng thủ.

3 request/phútNằm trong budget đã nhập

Planner chỉ giúp so kế hoạch với giới hạn ông nhập từ policy. Nó không quyết định scope và không phải công cụ né detection.

BUSINESS LOGIC LAB

8 case không nói trước tên lỗi

Mỗi lab bắt đầu bằng invariant và state. Tự ghi hypothesis trước khi mở phần review.

LAB 01Easy → Medium

Coupon dùng một lần

Shop synthetic có coupon WELCOME10. UI ẩn coupon sau khi dùng nhưng backend giữ order draft và payment state riêng.

Actors
Account A
States
cart → coupon-applied → paid → refund
Invariant
Một benefit “dùng một lần” không được tạo tổng giảm giá vượt policy qua các state transition.
Nhiệm vụ

Vẽ state machine, xác định nơi backend phải đánh dấu redemption và thiết kế positive/negative test chỉ trên lab.

Ghi hypothesis trước để mở review

Tập trung server-side redemption state và idempotency; UI ẩn nút không phải control đủ mạnh.

LAB 02Medium

Invoice ownership

Hai tài khoản test A/B thuộc hai organization synthetic khác nhau. Mỗi invoice có owner, org và invoice id.

Actors
Account A · Account B
States
created → viewed → downloaded
Invariant
Account B không được đọc invoice của A chỉ vì biết identifier.
Nhiệm vụ

Tạo subject × action × object matrix, giữ request baseline của A rồi tạo negative case của B trong lab.

Ghi hypothesis trước để mở review

Authorization phải enforce theo owner/org phía server cho từng action; identifier khó đoán không thay authorization.

LAB 03Medium

Team invitation & role

Workspace synthetic có owner, admin và member; invitation token có role mong muốn và trạng thái pending/accepted/revoked.

Actors
Owner · Admin · Member
States
pending → accepted → revoked → expired
Invariant
Người không có quyền không được tạo/đổi invitation thành role cao hơn policy cho phép.
Nhiệm vụ

Liệt kê action tạo invite, đổi role, revoke, accept; xác định check nào phải chạy lại lúc accept.

Ghi hypothesis trước để mở review

Đừng chỉ validate lúc tạo token; state/role có thể thay đổi trước lúc token được dùng.

LAB 04Medium

Trial → Premium → Downgrade

SaaS lab tách billing status khỏi entitlement cache. Trial, premium và downgraded là ba state độc lập theo thời gian.

Actors
Account A
States
trial → premium → downgrade-pending → free
Invariant
Entitlement phải khớp trạng thái billing hợp lệ và không tồn tại lâu hơn khoảng policy cho phép.
Nhiệm vụ

Lập timeline trước/sau downgrade và xác định nguồn sự thật nào quyết định entitlement.

Ghi hypothesis trước để mở review

Business logic bug thường nằm ở desync giữa billing source-of-truth và cache/feature flag.

LAB 05Hard logic

Refund sau chuyển ownership

Marketplace lab cho phép mua gift, chuyển cho account khác rồi yêu cầu refund trong cửa sổ giả lập.

Actors
Buyer · Recipient
States
purchased → transferred → consumed → refunded
Invariant
Refund không được tạo trạng thái vừa hoàn tiền vừa giữ benefit đã chuyển/tiêu dùng.
Nhiệm vụ

Liệt kê transition nào phải atomic hoặc được bù trừ; thiết kế test dùng dữ liệu synthetic có giá trị 0.

Ghi hypothesis trước để mở review

Kiểm tra invariant xuyên nhiều service/state, nhưng không cần thực hiện giao dịch tiền thật để chứng minh logic.

LAB 06Medium → Hard

Password reset & đổi email

Account lab có email cũ/mới, reset session và security event. Token synthetic chỉ tồn tại trong simulator.

Actors
Account owner · Second test account
States
email-old → email-change-pending → email-new → reset-active
Invariant
Sensitive account recovery phải ràng buộc đúng identity/state và invalidate artifact cũ khi policy yêu cầu.
Nhiệm vụ

Vẽ artifact lifecycle và xác định sự kiện nào phải invalidate reset/session cũ; không dùng token thật.

Ghi hypothesis trước để mở review

Tập trung lifecycle và invalidation thay vì “đoán token”; token strength không sửa state transition sai.

LAB 07Hard logic

Inventory reservation

Shop lab có 1 item synthetic, reserve timeout và checkout. Hai account test có thể reserve gần nhau trong simulator.

Actors
Account A · Account B
States
available → reserved → paid → released
Invariant
Một đơn vị inventory không được commit thành hai purchase thành công.
Nhiệm vụ

Xác định critical state transition và evidence cần có để phân biệt race symptom với double-commit thật.

Ghi hypothesis trước để mở review

Response nhanh/chậm chưa đủ; phải kiểm tra committed state cuối và transaction/idempotency control.

LAB 08Hard logic

Reward points ledger

Wallet synthetic có earn, redeem, reverse và transfer trên ledger giả lập; không chứa tiền thật.

Actors
Account A · Account B
States
earned → reserved → redeemed → reversed → transferred
Invariant
Tổng ledger không được tạo value mới ngoài event hợp lệ; retry không được double-apply.
Nhiệm vụ

Viết invariant về conservation/idempotency và lập bảng event ID, balance before/after trong lab.

Ghi hypothesis trước để mở review

Đừng chỉ nhìn balance UI; ledger event và idempotency key mới giúp chứng minh duplicate application.

EVIDENCE WORKBENCH

So response + redact secret

Evidence Diff

So baseline và variant theo dòng. Khác biệt là signal để điều tra, chưa tự động là vulnerability.

1HTTP/1.1 403 ForbiddenHTTP/1.1 200 OK
2content-type: application/jsoncontent-type: application/json
3
4{"error":"forbidden"}{"invoice":"synthetic-001"}

Evidence Redactor

Dùng trước khi đưa notes vào report hoặc AI bên ngoài. Vẫn phải review thủ công vì regex không hiểu mọi format secret.

SOURCE REVIEW

Source/Sink Review Assistant

Heuristic local chỉ đánh dấu chỗ đáng review; nó cố ý không nói “đã có lỗ hổng”.

L1 · sourceconst invoiceId = req.params.id;

Input source: review trust boundary và kiểm tra validation/context trước khi kết luận.

L2 · authconst user = req.user;

Authorization signal: kiểm tra decision có ràng buộc đúng subject, action và object không.

L3 · sinkconst invoice = await db.query(invoiceId);

Sensitive sink: review data flow và xác minh control theo context; đây chưa phải bằng chứng vulnerability.

L4 · sinkres.send(invoice);

Sensitive sink: review data flow và xác minh control theo context; đây chưa phải bằng chứng vulnerability.

REPORT QUALITY

Không cho “AI slop” đi qua

Report tốt ngắn gọn nhưng đủ tái hiện: title cụ thể, steps, , impact có quan sát, giới hạn/assumption và / khi phù hợp.

CHƯA ĐỦ EVIDENCEThiếu: title, steps, impact, evidence, scopeConfirmed, humanVerified
AI COPILOT

Prompt có guardrail, không bịa finding

Khi dùng: Sau khi đã tự xác minh finding bằng request/response hoặc state evidence trong lab/scope.

Guardrail: Không cho AI thêm endpoint, impact, severity hoặc bước tái hiện chưa có trong notes.

Từ ghi chú dưới đây, chỉ sắp xếp FACT đã có thành Title, Summary, Steps, Evidence, Impact, Limits. Không suy đoán. Mọi chỗ thiếu hãy ghi [CẦN XÁC MINH]. Văn phong ngắn gọn.

GUARDRAIL: Không cho AI thêm endpoint, impact, severity hoặc bước tái hiện chưa có trong notes.

RAW NOTES (hãy tự redact secret trước khi đưa vào dịch vụ AI bên ngoài):
[DÁN GHI CHÚ ĐÃ LÀM SẠCH Ở ĐÂY]

Prompt được tạo local. Trang này không gọi API AI và không upload notes.

Không có nút “hack target”

V9 cố ý không có scanner, stealth/WAF-bypass hay autonomous attack. Mọi lab ở trang này là synthetic/local; với chương trình thật phải đọc policy cụ thể và giữ human-in-the-loop.