Most engineers think…
"I assigned the SQL-Injection signature set, so my app is protected right now."
Wrong — and that wrong instinct burns trust in the WAF on day one. A freshly assigned signature does not block anything for the first 7 days. It is in staging: it watches the live traffic, records every match as a learning suggestion, and lets every request through — even real attacks. That gap is deliberate. It gives you a week to catch a signature that wrongly matches your own application before it starts dropping real customers. This lesson builds the right instinct: stage first, review the suggestions, then enforce.
① What an attack signature is — the wanted-poster wall
Think of a police station's wanted-poster wall. Each poster is one known offender: a face, a name, a description. Every person walking past is compared to every poster. A match raises a flag. An attack signature is exactly that — a rule or pattern that identifies a known attack on a web application. When F5 BIG-IP Advanced WAF (formerly ASM) receives a request or response, it compares the content against the signatures associated with the policy and raises a violation on a match.
This is the negative-security half of a WAF policy: block what is known-bad. (The positive-security half — allow only known-good URLs and parameters — is lesson 4.) The GUI module is still literally labelled Security ▸ Application Security, and many screens and profiles still say "ASM" — that legacy module name lives on inside Advanced WAF.
You never manage thousands of signatures one by one. They are organised into signature sets, and you assign sets to a policy. F5 ships the signatures in a pool and pushes updates roughly every six weeks.
Sneha at Infosys faces this
Sneha assigned the SQL Injection Signatures set to a production policy and ran an attack from her test box. The WAF logged the hit but let it straight through. Management asks why the WAF "didn't block the attack".
The set was just assigned, so its signatures are in staging for the Enforcement Readiness Period (default 7 days). Staged signatures log matches but never apply the Block action.
Open the policy's signature list and the readiness summary.
Security ▸ Application Security ▸ Attack Signatures → check the "Staging" columnThis is expected — let it ride out the period, review the learning suggestions, then Enforce the signatures that only matched real attacks. (Disabling staging to block now is the wrong reflex — see the trap card later.)
After enforcing and applying the policy, re-run the test. The Event Log now shows the request Blocked with a support ID — not just logged.
▶ Watch a malicious request hit a signature — staged vs enforced
Rahul at TCS fires a ' OR 1=1-- attack at the app. Press Play for the enforced-and-blocked path, then Break it to see what staging does to the very same request.
SQL-Injection signature set — pattern matchesA brand-new SQL-Injection signature set was just assigned to a busy production policy. It detects nothing-blocked for the first week, even on real attacks. What is happening?
Pause & Predict
You don't want to attach thousands of individual signatures to a policy one by one. F5 ships them in a smarter, maintainable unit that you assign to a policy and that auto-updates. What is that unit called? Type your guess.
② Signature sets — the unit you actually assign
You don't hang every wanted poster individually. You hang boards — "violent offenders", "fraud", "shoplifters" — and the right boards go up at the right station. In Advanced WAF a signature set is that board: a named group of attack signatures. You assign sets to a policy, not single signatures. Sets keep the policy maintainable and let an F5 signature update drop new members straight into the set you already trust.
System-supplied signature sets
F5 ships many predefined sets. The ones you meet first:
- Generic Detection Signatures — broad coverage of well-known web and application attacks. This is the all-rounder set most policies start with.
- SQL Injection Signatures — attempts to inject SQL statements (the
' OR 1=1--family). - Cross Site Scripting Signatures — forcing a site to echo attacker-supplied executable script (
<script>…). - Command Execution Signatures and Path Traversal Signatures — OS command injection and
../-style attempts to reach files outside the web root.
Sets can be filter-based (membership is defined by attributes like attack type, system, or risk, so new signatures auto-join) or manual (you hand-pick members). You can also build a user-defined set for your own apps.
Assigning a set to a policy
When you attach a set you also choose its default blocking actions — Learn, Alarm and Block — which take effect when you associate the set with a new policy. Learn surfaces the match on the Traffic Learning screen, Alarm logs it, Block drops it (only when the policy is in Blocking mode). We unpack Alarm vs Block in Path 4.
Resist the urge to attach individual signatures. Assign the set and let F5's periodic updates (roughly every six weeks) keep it current. Manage exceptions by disabling the one false-positive signature on the policy — not by curating thousands by hand. A set-based policy stays protected as new threats ship; a hand-picked list rots the day it's built.
Priya at Flipkart faces this
Priya's policy uses only the SQL Injection set. The pentest report flags a reflected-XSS hole the WAF didn't catch. She assumed "the signatures" cover everything.
A policy only carries the sets you assign. XSS attacks need the Cross Site Scripting Signatures set (or the broad Generic Detection set) — the SQL set alone never had XSS posters on its board.
Assign the Cross Site Scripting Signatures set (most teams add Generic Detection Signatures as the baseline too). Save and apply the policy.
Re-run the XSS payload after the new set's staging period and enforcement. The Event Log now shows an XSS violation, not a clean 200.
You want a policy that only carries XSS and SQL-Injection coverage, nothing else. What is the cleanest way to express that?
Pause & Predict
Staging is coming next. A new set you just assigned will not block anything for a while — even real attacks. Why would F5 deliberately make a new signature watch quietly before it's allowed to drop a request? Type your guess.
③ Staging & enforcement — the rookie-cop period
Here is the analogy that makes this lesson stick. A new attack signature is a rookie cop. For the first stretch of duty the rookie can only observe and write reports — never make an arrest. That probation exists so a rookie who'd wrongly cuff your own staff is caught before any real damage. That probation is staging.
What staging does
Staging means the system applies the attack signatures to live traffic but does not apply the blocking policy action to requests that trigger them. A staged signature still sees every match — it just records the request as a learning suggestion instead of dropping it. Its whole purpose is to reduce the violations caused by false-positive matches before any signature can block a real user.
The Enforcement Readiness Period (default 7 days)
How long is probation? It's the Enforcement Readiness Period, set in the policy's properties — default 7 days. New and updated signatures stay in staging for this window. Each day, signatures that have passed the period with no problems become Enforcement Ready and appear in the Enforcement Readiness Summary.
Staging → enforced (this never happens by itself)
This is the #1 trap. "Enforcement Ready" does not mean "now blocking". It means "the period elapsed — it's safe for you to enforce." You still take the action:
- Review the staged hits / learning suggestions. A signature matching only your legitimate traffic is a false positive → disable it. A signature matching real attacks → enforce it.
- Enforce — clicking Enforce (or Enforce Ready Entities) removes the signature from staging and puts the blocking policy into effect for it.
- Apply Policy. Like everything in Advanced WAF, the change is staged in the editor until you Apply.
Until you enforce and apply, a signature past its readiness period still only logs. Many "the WAF won't block" tickets are exactly this — staged signatures nobody enforced.
▶ Watch a signature ride out staging — then watch someone skip it
Karthik at Wipro assigns a fresh set on Day 0. Play the safe stage-then-enforce path, then Break it to see what disabling staging does on Day 0.
The four states a signature lives in — tap each card
The front names the state; the back gives you the "so what" — what the signature is doing to traffic right then.
Applied to traffic but blocking is suppressed; matches become learning suggestions. So what: this is the rookie-cop probation — logs everything, arrests no one, for the readiness period.
The readiness period elapsed; it shows in the Enforcement Readiness Summary. So what: "safe to enforce" — NOT "now blocking". You still must Enforce + Apply.
Out of staging; the blocking policy applies. So what: with Block ticked and the policy in Blocking mode, a match is now dropped with a support ID.
Switched off on this policy. So what: your false-positive exit — a signature hitting only legitimate traffic is disabled so it never blocks your own app, while the rest of the set stays active.
A signature has sat in staging well past 7 days and the Enforcement Readiness Summary shows it as Enforcement Ready with zero learning suggestions — yet it still never blocks. Most likely cause?
Pause & Predict
An enforced signature is matching. The policy is in Blocking mode. But this signature has only its Alarm flag ticked — not Block. Will the request be dropped or just logged? Type your guess.
④ Alarm vs Block flags & signature updates
Two things decide whether a matched signature actually stops a request: its state (Path 3 — enforced, not staging) and its flags (this section). Get either wrong and the WAF "doesn't block".
Alarm vs Block — two independent flags
In the Attack Signatures list each signature carries two checkboxes:
- Alarm — the policy logs the request data if a request matches the signature. You get a violation entry and a support ID — but the request still goes through.
- Block — the policy blocks all requests that match the signature. You can only enable Block when the policy enforcement mode is Blocking — and the signature must be enforced (not staging) for it to bite.
So the chain to an actual drop is: policy in Blocking mode → signature enforced → Block flag ticked. Miss any link and you only Alarm. (Whether the policy as a whole should go Blocking is the global go-live decision — that's lesson 10.)
Signature updates — and why they re-stage
F5 ships signature updates roughly every six weeks. Two modes:
- Scheduled — pick an Update Interval and the box pulls updates automatically (needs external network access and a current service-check date).
- Manual — choose a Delivery Mode: Automatic (fetch directly from F5) or Manual (upload a signature-update file from F5 — for air-gapped systems). On 14.1.x and later this is the Live Update workflow.
The catch every junior misses: when staging is on, updated signatures go back into staging for the Enforcement Readiness Period — the new logic is vetted before it blocks. So right after an update, some previously-blocking signatures briefly only log again. That's intended; review the new suggestions, then re-enforce.
root@(bigip01)(cfg-sync Standalone)(Active)(/Common)(tmos)# modify asm policy /Common/app_pol \
signature-staging enabled \
signature-settings { signature-staging enabled }
# Assign the system-supplied sets in the GUI (Attack Signatures Configuration), then:
list asm policy /Common/app_pol enforcement-readiness-periodasm policy /Common/app_pol {
enforcement-readiness-period 7
signature-staging enabled
}
# 7-day readiness window confirmed; new/updated signatures will stage before they block.root@(bigip01)(tmos)# show asm policy /Common/app_pol signatures staged # (read the staged list + their learning suggestions in the GUI Readiness Summary) root@(bigip01)(tmos)# modify asm policy /Common/app_pol signatures enforce-readiness root@(bigip01)(tmos)# modify asm policy /Common/app_pol apply
Enforcement readiness applied: 412 signatures enforced, 3 left disabled (false positives). Policy /Common/app_pol applied. Active. # Enforced signatures with Block ticked now drop matches; the 3 disabled ones never block your app.
Don't disable signature staging to make a new set block on day one. New signatures surprise you — one of them may match part of your own legitimate traffic. With staging off, that bad signature blocks real users the moment the set lands, with no review window. Keep staging on, let the Enforcement Readiness Period do its job, review the learning suggestions, then enforce. "Instant protection" without a review window is how a WAF causes its own outage.
▶ Watch the Alarm-vs-Block decision — log or drop?
An enforced signature matches a real attack. Play the full block path, then Break it to see what happens when only Alarm is ticked.
' OR 1=1--Aditya at HCL faces this
Aditya's enforced SQL-Injection signature logs every attack with a support ID, but never drops a single one. The policy is confirmed in Blocking mode.
Block flag is off. The signature has Alarm ticked (hence the logs + support IDs) but Block un-ticked — so it logs and allows. Logging is not blocking.
Tick Block (allowed because the policy is Blocking), confirm the signature is enforced (not staging), then Apply Policy.
Re-run the attack. The Event Log now shows the request Blocked — not just an alarm entry.
Never claim a signature blocks from the config screen. Send a safe synthetic attack (e.g. ' OR 1=1-- from your test box), then open Security ▸ Event Logs ▸ Application ▸ Requests, filter on the support ID, and read the result. "Blocked" with the signature name = enforced + Block ticked + Blocking mode. "Alarmed/Allowed" = a flag or state is wrong — not the box.
root@(bigip01)(tmos)# show asm policy /Common/app_pol signatures \ signature-id 200002001 # then read the request in the Event Log by support ID
2026-06-02 14:22 src 203.0.113.7 vs 10.10.20.5:443 Signature: SQL-INJ "OR 1=1" (200002001) Set: SQL Injection Signatures State: enforced Alarm: yes Block: yes Mode: Blocking Result: BLOCKED Support ID: 18007244126553882151 # If Result = Alarmed → Block flag is off. If State = staging → enforce it first.
On a signature in the Attack Signatures list, the Alarm flag is ticked but Block is not. The policy is in Blocking mode and the signature is enforced. A request matches it. What does Advanced WAF do?
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from F5 techdocs + DevCentral, scoped to BIG-IP Advanced WAF (formerly ASM) attack signatures. For a live prod issue, paste your Event-Log export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: why does a brand-new attack signature not block anything for the first 7 days, and what do you do after that? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- Attack signature
- A rule or pattern that identifies a known attack on a web application. Advanced WAF compares each request/response against the policy's signatures and raises a violation on a match. The negative-security model.
- Signature set
- A named group of attack signatures (e.g. SQL Injection Signatures). You assign SETS to a policy, not individual signatures. Can be system-supplied, filter-based, manual, or user-defined.
- System-supplied set
- An F5-shipped set such as Generic Detection Signatures, SQL Injection Signatures, Cross Site Scripting Signatures, Command Execution, or Path Traversal.
- Staging
- The system applies a signature to traffic and records matches as learning suggestions, but does NOT apply the blocking action. The "rookie-cop probation" that catches false positives.
- Enforcement Readiness Period
- The staging window set in the policy's properties — default 7 days — for which new and updated signatures stay in staging before becoming "enforcement ready".
- Enforcement Ready
- A signature whose readiness period has elapsed; it appears in the Enforcement Readiness Summary. "Safe to enforce" — not yet blocking.
- Enforce / Apply Policy
- Enforce removes a signature from staging and puts the blocking policy into effect for it; Apply Policy commits the staged changes. Nothing blocks until you do both.
- Alarm flag
- If a request matches the signature, the policy logs the request data (violation + support ID). It does not drop the request.
- Block flag
- The policy blocks (drops) requests that match the signature. Enabled only when policy enforcement mode is Blocking, and effective only when the signature is enforced.
- Signature update (Live Update)
- F5's periodic packages of new/improved signatures (~every six weeks), applied scheduled or manual. With staging on, updated signatures re-enter staging.
📚 Sources
- F5 techdocs — Assigning Attack Signatures to Security Policies & BIG-IP ASM: Attack and Bot Signatures (14.1.0) (signature definition, system-supplied sets: Generic Detection, SQL Injection, Cross Site Scripting; staging = applies signatures but doesn't block; default 7-day staging; Alarm = log / Block = drop). techdocs.f5.com
- F5 techdocs — Working with Attack Signatures & Updating Attack and Bot Signatures (Enforcement Readiness Period in policy properties; updated signatures re-enter staging; scheduled vs manual update; Delivery Mode Automatic/Manual; Enforce). techdocs.f5.com
- F5 article K82512024 — Managing BIG-IP ASM Live Updates (14.1.x and later) and K8217 — Managing BIG-IP ASM attack signatures (Live Update workflow; service-check date within 7 days; external network access for auto-update). my.f5.com
- F5 DevCentral — Mitigating OWASP Web Application Risk: Injection exploits using F5 BIG-IP (negative-security signatures vs positive model; signature sets in policy building). community.f5.com
- F5 article K62525205 — All attack signature updates for BIG-IP ASM, Advanced WAF, F5 EAP, NGINX App Protect, and F5 Distributed Cloud (signature releases ~every six weeks; new + enhanced signatures). my.f5.com
- r/networking & r/f5networks practitioner threads — staging best practice ("never disable staging on prod"; review learning suggestions before enforcing) and "WAF not blocking = signatures still in staging / Block flag off". reddit.com
- F5 Certification — 303 — BIG-IP ASM Specialist Exam Blueprint (attack-signature structure, policy creation, enforcement readiness; series cert anchor: 90 min, 80 questions, pass 245/350). education.f5.com / f5.com
What's next?
You can now read the negative-security engine end-to-end: assign signature sets, ride out the Enforcement Readiness Period, and flip Alarm vs Block. Next, meet the other half of an Advanced WAF policy — positive security: how the policy learns your legitimate URLs and parameters and tightens around them. After that, false-positive tuning ties both halves together.