Pick a depth. Each prompt opens in your AI pre-loaded with the lesson. Click a row to preview the prompt.
A big reason LLM security moves faster than classic appsec is pure economics: probing a hosted model for a working jailbreak or injection payload costs pennies and can be automated end to end, whereas a comparable classic web exploit often took a skilled human hours of manual work. That asymmetry means attackers can afford to fuzz thousands of phrasings, encodings, and framings until one lands — and defenders who assume 'no one will bother crafting something that specific' are wrong by construction. Understanding the cost curve on both sides — what it costs an attacker to find a bypass, and what it costs you to close it — is what tells you where to actually spend your limited defensive effort instead of hardening the parts nobody will bother attacking.
The demo compares the cost of an automated payload-fuzzing loop against a rough historical estimate of manual web-exploit development time, purely to make the asymmetry concrete and countable, not to build an actual attack tool.
cost_per_call_usd drops to 0.0005 (a cheaper model) — note how much cheaper large-scale probing gets.defender_review_cost function estimating the cost of a human reviewing 5,000 flagged attempts, and compare it to the attacker's cost.automated assuming the attacker is blocked after 100 attempts by a rate limiter, and note how much the asymmetry shrinks.# Illustrative cost model only -- no real payloads or targets here.
def automated_fuzz_cost(num_variants: int, cost_per_call_usd: float) -> float:
# e.g. 5,000 rephrasings/encodings of a candidate attack, run unattended
return num_variants * cost_per_call_usd
def manual_exploit_cost(hours: float, hourly_rate_usd: float) -> float:
return hours * hourly_rate_usd
automated = automated_fuzz_cost(num_variants=5000, cost_per_call_usd=0.002)
manual = manual_exploit_cost(hours=20, hourly_rate_usd=75)
print(f"automated fuzzing run: ~{automated:.2f} USD for 5,000 attempts")
print(f"comparable manual web-exploit dev: ~{manual:.2f} USD for one attempt")
print(f"cost ratio: manual is ~{manual / automated:,.0f}x more expensive per successful attempt found")
# The takeaway isn't the exact numbers -- it's that "no one will try that
# many variations" is not a valid assumption once probing is this cheap.python3 main.py