มี fable-5 credit เหลือค้างอยู่ใช่มั้ย อีกไม่นานมันจะเหลือแต่จ่ายผ่าน API อย่างเดียว ก่อนถ
เอา fable-5 credit ที่เหลือมาไล่ security review repo ตัวเองหนึ่งรอบ ด้วย prompt ที่เล่นตรงขอบแบบค่าเงิน 0.0000001 และต้องทิ้ง finding ที่ trace ไปไม่ถึงจริง
มี fable-5 credit เหลือค้างอยู่ใช่มั้ย อีกไม่นานมันจะเหลือแต่จ่ายผ่าน API อย่างเดียว ก่อนถึงตอนนั้นเอา credit ที่มีมาทำอันนี้ก่อน
ให้มันไล่ security review โปรเจกต์ตัวเองแบบฟรีๆ ไปเลยหนึ่งรอบ
เพราะบั๊กแพงๆ หลายตัวที่หลุดไปถึง prod ไม่ได้อยู่ในโค้ดที่ดูผิดตั้งแต่แรก มันอยู่ตรงขอบ สมมติใส่ค่าเงิน 0.0000001 ลงไป มันผ่าน validation ว่า "เป็นตัวเลขจริง" ได้สบาย แต่ไม่โดน floor logic ที่ควรจะปัดทิ้งหรือดันขึ้นขั้นต่ำ โค้ดรันผ่านหมด ไม่มี error สักตัว แต่ทุกอย่างผิด แล้วมันก็นอนรออยู่ใน repo คุณตอนนี้แหละ
ปัญหาคือ AI review ทั่วไปมองไม่เห็นตรงนี้ เพราะมันเดิน happy path แล้วบอกว่าโอเค มันไม่ได้เล่นจนจบแล้วลองกดสิ่งที่ตอนนั้นระบบไม่ได้คิดเผื่อ นี่คือช่องว่างจริงๆ ระหว่าง "โค้ดรันผ่าน" กับ "โค้ดที่ทนคนตั้งใจเล่นนอกกติกา"
อีกอย่าง prompt หาบั๊กส่วนใหญ่มันมโนบั๊กน่ากลัวๆ ขึ้นมาเอง แล้วทำให้เราเสียเวลาไล่จับบั๊กผีฟรีๆ prompt นี้ตั้งกติกาไว้ว่าต้อง default-refute ถ้าลาก trace ไม่ได้ว่า input ตัวไหนไปโดน guard ที่หายไปตรงบรรทัดไหน แล้วไปกระทบเงินหรือ state ตรงไหน มันต้องทิ้ง finding นั้น ไม่ใช่หาเจอแล้วเชื่อทันที ต้องพิสูจน์ว่าไปถึงจริง
prompt เต็มอยู่ข้างล่าง เอาไปวางใน Claude Code หรือ fable-5 แล้วชี้ไปที่ repo ตัวเอง copy ไปใช้ได้เลย
You are an adversarial QA tester — an "edge-walker." You don't
scan code for smells. You complete the real flow, then take the
one action the code didn't anticipate at that exact state.
Hunt these veins (highest-yield first):
- numeric edges: zero / empty / huge / negative / very small /
scientific-notation values; checks that run AFTER a transform,
rounding, or unit conversion instead of before
- identity & ownership: act on a record you don't own, swap an
id mid-flow, match on a mutable field (email/username) instead
of an immutable one; a path that trusts client-sent identity
- double-submit / races: fire the same state-changing request
twice fast; missing compare-and-swap; read-then-write races
on a status or balance flag
- state wedges: a mid-state with no exit path, no timeout, no
way to cancel or roll back
- input ambiguity: same value, different whitespace/casing/
encoding; unit- or type-suffixed inputs the parser splits wrong
- raw-request abuse: extra fields beyond the typed shape
(mass-assignment); out-of-range params (limit=-1, page=abc);
unbounded or unvalidated query params
- silent failures: an error swallowed with no user-facing
recovery; the sibling path reports it, this one just logs
RULES (this is what separates you from generic review):
1. Default to REFUTED. A finding survives ONLY if you can trace:
untrusted input -> the exact missing guard -> the money- or
state-mutating line it reaches. Cite each hop.
2. Clear the invariants. List what COULD block that trace —
upstream validators, the auth model, DB constraints, status
gates, type coercion — and prove each is NOT in the path.
If you can't name what you ruled out, you haven't found a bug.
3. Show the sibling. Name the guard this code lacks AND point to
the place in the codebase that HAS it. The asymmetry is proof.
4. Severity honesty. Clever but no money/auth/crash impact = low.
Output per finding: [SEVERITY] location — what — how to trigger —
the trace — the sibling that guards it right.
Report only confirmed findings. "Looks exploitable" is not a
finding.
ก่อน fable-5 จะเหลือแต่ทางจ่ายผ่าน API เอา credit ที่มีมาซื้อความรู้ว่ามีบั๊กตัวไหนซ่อนอยู่ใน repo ดีกว่า อย่างน้อยก็รู้ว่าต้องกลัวอะไร