TTechclick ⚡ XP 0% All lessons
F5 · BIG-IP ASM · Positive Security & LearningInteractive · L1 / L2 / L3

ASM Positive Security & Learning — Allow-list What's Good, Don't Chase Every Bad

At a Big Fat Indian Wedding the bouncer never tries to memorise every possible gatecrasher. He learns who is actually invited — which relatives, which caterers, which entrance — and over a week of watching the gate, tightens the list until only known guests get in. That is the positive security model in F5 BIG-IP Advanced WAF (formerly ASM). This lesson shows you how Policy Builder auto-learns your app's legitimate URLs, parameters, file types and cookies, how the learning score and violation rating decide what's trustworthy, and how staging, tightening and the Enforcement Readiness Summary tell you exactly what's safe to enforce.

📅 2026-06-02 · ⏱ 11 min · 3 live demos · 4 infographics · 🏷 10-Q assessment + AI Tutor inline · 303-aligned

⚡ Quick Answer

Learn F5 BIG-IP Advanced WAF (formerly ASM) positive security & Traffic Learning the AI-era way — how Policy Builder auto-discovers legitimate URLs, parameters, file types and cookies, learning score vs violation rating, entity staging, tightening, and the Enforcement Readiness Summary. 303-aligned. 11 min.

🎯 By the end you will be able to

Read as:

Pick where you want to start

1

Positive Security

Allow-list what's good vs signatures that block what's bad. The two models combined.

2

Traffic Learning

How Policy Builder discovers entities, the suggestions list, learning score vs violation rating.

3

Staging & Modes

Entity staging, the 7-day readiness period, and the three learning modes per entity.

4

Tighten & Enforce

Loosen vs tighten, and reading the Enforcement Readiness Summary to know what's ready.

🧠 Warm-up — 3 questions, no score

Just notice which ones make you pause. We answer all three inside the lesson.

1. Signatures block known attacks. What does the positive security model do instead?

Answered in Path 1 — Positive Security. (Spoiler: enumerate the good, not the bad.)

2. A new parameter is in staging when a violating request arrives. Does ASM block it?

Answered in Path 3 — Staging & Modes. Staging is the safety window.

3. The Enforcement Readiness Summary shows "Not Enforced = 12" for URLs. What does that mean?

Answered in Path 4 — Tighten & Enforce. Non-zero = still in staging.

Most engineers think…

"A WAF works by having a giant list of attack signatures. The more signatures I switch on, the safer my app is."

Wrong — and that instinct is exactly why so many WAFs miss zero-days and drown the SOC in noise. Signatures (negative security) try to enumerate every possible attack — an endless, losing race. F5 BIG-IP Advanced WAF (formerly ASM) adds a second, smarter model: positive security — it learns the much smaller set of things your app legitimately uses (its URLs, parameters, file types, cookies) and treats anything outside that allow-list as suspect. Policy Builder builds that allow-list for you by watching real traffic. This lesson builds the instinct: enumerate the good, stage it safely, then tighten until only known-good gets in.

① Positive security — allow-list the good, don't chase every bad

Picture a Big Fat Indian Wedding. A bouncer who tries to recognise every possible gatecrasher will fail — there are infinitely many. The smart bouncer instead learns the guest list: these relatives, this caterer, that decorator, entering through that gate. Anyone not on the learned list gets a second look. That is positive security.

In Advanced WAF, the two models work together. Negative security (attack signatures) blocks known-bad. Positive security allow-lists known-good — the legitimate entities your app actually serves. A request that asks for a URL your app never exposes, or sends a parameter the app never uses, sits outside the allow-list — a violation, even if no signature matches it. That is how positive security catches zero-days that signatures miss.

Quick history (state this the same way every time): ASM went End-of-Sale on 01-Apr-2021. Advanced WAF (launched 2018) = ASM + L7 Behavioral DoS + Bot Defense (Proactive Bot Defense) + credential-stuffing/brute-force + DataSafe. Existing ASM customers on BIG-IP ≥ 14.1 under support can reactivate to Advanced WAF free. The GUI module is still literally Security ▸ Application Security and many screens still say "ASM" — so we use "ASM" for the menu/legacy name and "Advanced WAF" in prose. The cert anchor for this whole series is the 303 — BIG-IP ASM Specialist exam (90 min, 80 questions, pass 245/350).

👉 So far: positive security = allow-list the good; signatures = block the bad. Both run together. Next, the architecture — where the learned entities live in a policy.
Figure 1 — A request only reaches the app after it clears the learned allow-list
An isometric stack of three planes. The bottom red plane is the untrusted internet where a client sends a request. The middle amber plane is the Advanced WAF inspection layer holding the positive-security allow-list of learned file types, URLs, parameters and cookies, plus the negative-security attack signatures. The top blue plane is the trusted application and pool. A lime arrow climbs from the client through the inspection gate to the app, labelled that the request is promoted only after it matches the learned entities. A legend maps red to untrusted, blue to trusted, amber to inspection, lime to the key insight and green to allowed. Three zones — a request climbs only if it matches the learned entities Untrusted — Internet client GET /admin.aspx?id=5 Advanced WAF inspection Positive: allow-list of URLs · params · file types · cookies Negative: attack signatures (the other lesson) Trusted — web app & pool promoted only if it matches a learned, enforced entity Untrusted Trusted Inspection Allowed Key insight Learn → stage → tighten → enforce
The allow-list is the gate. A request reaches the app only if it matches an entity Policy Builder has learned and enforced — anything else raises a violation.

Sneha at Infosys faces this

Sneha deployed a brand-new app behind Advanced WAF and turned on every attack signature she could find. A zero-day still got through to a URL the app never exposes — and the SOC is asking why the WAF "did nothing".

Likely cause

She relied only on negative security (signatures). The attack used a payload no signature recognised, against a URL outside the app's legitimate set — exactly the gap positive security closes.

Diagnosis

Check whether Policy Builder is learning entities, or whether the policy is signatures-only.

Security ▸ Application Security ▸ Policy Building ▸ Learning and Blocking Settings
Fix

Enable automatic Policy Builder so it learns the legitimate URLs, parameters and file types. Now a request to a never-seen URL raises a violation even with zero signature matches.

Verify

Watch Traffic Learning populate with suggestions; the never-exposed URL now appears as an Illegal URL violation in the event log.

▶ Watch Policy Builder learn an entity — then watch it block too early

Rahul at TCS turns on automatic Policy Builder for a new app. Press Play for the healthy learn → stage → enforce path, then Break it to see what skipping staging does.

① TRAFFICReal users hit /cart/checkout with parameter coupon — legitimate
② LEARNPolicy Builder raises a learning suggestion to add the URL + parameter as entities
③ STAGENew entity enters staging — logged, not blocked, for the readiness period
④ ENFORCENo new suggestions across 7 days → entity is Ready to Enforce and now blocks bad input
Press Play to step through learn → stage → enforce. Then press Break it.
Quick check · Q1 of 10

Negative security blocks known-bad with signatures. What does the positive security model do instead?

Correct: b. Positive security enumerates the (small) set of things the app legitimately uses and treats everything else as suspect — the inverse of trying to enumerate every attack. That's how it catches zero-days no signature recognises. More signatures (a) is still negative security; encryption (c) and rate-limiting (d) are different controls.

Pause & Predict

Policy Builder has watched traffic for a day and proposes adding /cart/checkout as a legitimate URL. How do you think ASM decides whether it's confident enough to recommend you accept it? Type your guess.

Answer: It assigns a learning score — a 0–100% confidence built from how often the entity is seen, across how many different sources, and over how much time. Crucially, the score is pushed up by low violation ratings (looks benign) and down by high ones (looks like an attack). At 100% it's confident enough to auto-accept. That's exactly Path 2.

② Traffic Learning — how Policy Builder discovers your entities

You don't hand-write the allow-list. Policy Builder watches live traffic and builds it for you. The screen where you review what it found is Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning — the heart of this lesson.

As traffic flows, ASM generates learning suggestions for requests that don't yet match the policy. Each suggestion is "I keep seeing this file type / URL / parameter / cookie / redirection domain — should I add it as legitimate?" You Accept, Delete or Ignore each one. (Accepting how to go live / flip to blocking is a judgement call covered in the False-Positive Tuning lesson — here we learn what the entities and the workflow are.)

The two numbers that matter. Every suggestion carries a learning score and is shaped by the request's violation rating. Keep them straight:

Pro tip — let the score read like a trust meter

Don't force-accept a suggestion just to clear the screen. A score that won't climb usually means the entity keeps arriving with medium/high violation ratings — ASM is quietly telling you "this looks more like an attack than a feature". Investigate that traffic before you add it as legitimate. A score racing to 100% on low ratings is the genuinely safe one.

👉 So far: Traffic Learning proposes entities; the learning score is confidence, the violation rating drives it. Next, see a request flow into a suggestion and a score.
Figure 2 — A request becomes a learning suggestion — the violation rating sets the score
A left-to-right flow. A request arrives and matches no existing entity. ASM creates a learning suggestion to add it. The request is scored with a violation rating from one to five. A callout marks that the violation rating is the load-bearing step: a low rating pushes the learning score up toward 100 percent and acceptance, while a high rating stalls the score because the request looks like an attack. The flow ends in two outcomes — accept the legitimate entity, or hold and investigate the suspicious one. Unmatched request → suggestion → the rating decides the score Request matches no entity Learning suggestion "add this entity?" Violation rating 1–5 This sets the score. Low rating → score climbs · high → stalls rating 1–2 Score → 100% → Accept legitimate entity, allow-list it rating 4–5 Score stalls → Hold looks like an attack — investigate The learning score is a confidence read-out of the violation rating, not a separate dial. A stuck score is ASM telling you the traffic still smells like an attack.
Same request, two fates. A benign-looking request earns a high learning score fast; an attack-like one leaves the score stuck so you don't accept it blind.

Priya at Flipkart faces this

Priya opens Traffic Learning to a flood of low-value suggestions for one-off URLs (campaign links with random query strings) that will never repeat. The signal is buried in noise.

Likely cause

Policy Builder is dutifully suggesting every new URL it sees. The genuinely useful suggestions are drowned by transient ones.

DiagnosisSecurity ▸ Application Security ▸ Policy Building ▸ Traffic Learning → sort by Learning Score
Fix

Ignore the suggestions she never wants to see again (they're filtered out of the list), Delete pure noise (a recurrence resets that entity's learning score to zero), and accept the high-score, low-rating ones. Sorting by score surfaces the real signal.

Verify

The Traffic Learning list shrinks to meaningful entities; the Enforcement Readiness Summary counts start to make sense.

F5 ASM Attack Signatures F5 BIG-IP Simulator
Quick check · Q2 of 10

A new file type appears in Traffic Learning with a learning score climbing toward 100%. What does that score mean?

Correct: c. The learning score is Policy Builder's confidence (0–100%) that the entity is safe to add, built from frequency, breadth and time — and pushed up by low violation ratings. At 100% automatic mode accepts it; you can accept a valid one earlier. The 1–5 attack scale (b) is the violation rating, which is a separate input that drives the score.

Pause & Predict

Policy Builder just learned a brand-new parameter on a live banking app used by 5,000 people. If ASM enforced it the instant it was learned, what could go wrong — and what mechanism prevents that? Type your guess.

Answer: A legitimate-but-rare value of that parameter could violate the freshly-learned setting and get a real user blocked — an outage. Staging prevents it: a new entity is logged-not-blocked for the enforcement readiness period (default 7 days), so you watch it safely before it can ever block. That's exactly Path 3.

③ Staging and the three learning modes

Learning an entity is only half the job. The other half is doing it safely, so a new entity never causes an outage. That's what staging and the per-entity learning modes are for.

🖥️ This is the screen you'll live in — Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning. Each row is a suggestion with a learning score and Accept/Delete/Ignore. (Recreated for clarity — your BIG-IP console matches this.)
https://10.1.1.245/tmui · BIG-IP · Security ▸ Application Security
Security » Application Security » Policy Building : Traffic Learning  |  Policy: shop_app_policy (Transparent)
SuggestionEntityLearning ScoreAction
1 Add valid URL/cart/checkout 100%Accept · Ignore
Add valid parametercoupon 88%Accept · Ignore
2 Add valid file typepdf 74%Accept · Ignore
Add valid parameterid (rating 5) 11%Delete · Ignore
3 Enforcement Readiness Summary — Not Enforced: URLs 6 · Parameters 9 · File Types 2 · Cookies 1

Read the screen like a triage queue. Pins ① and ② are high-score, benign suggestions (low violation rating) — accept them. The id parameter at pin-area sits at 11% with violation rating 5 — ASM is warning you this looks like an attack, so you Delete it, not accept. Pin ③ is the Enforcement Readiness Summary, which we read in Path 4.

Entity staging — the safety window

Staging means an entity (or an attack signature) is in the policy but not enforced — ASM logs it and posts learning suggestions, but never blocks on it. New entities and new signatures go into staging automatically. The window is the enforcement readiness period (default 7 days). If no new learning suggestions appear for an entity across that period, it's considered ready to be enforced.

Analogy: staging is a new bouncer shadowing a senior for a week. He watches who comes in and notes faces, but he doesn't turn anyone away yet. Only after the week — once nothing new surprises him — does he start enforcing the guest list.

The three learning modes — per entity type

For file types, URLs and parameters you choose how aggressively Policy Builder learns, in Learning and Blocking Settings:

There's also a Compact flavour (top-level URLs like /abc/* enforced explicitly, the rest under a wildcard, with pre-populated disallowed file types) for very large apps.

👉 So far: staging logs-not-blocks for 7 days; the mode (Add All / Selective / Never) sets how granular the allow-list gets. Next, a side-by-side so you pick the right mode fast.
Figure 3 — Add All vs Selective vs Never — pick the learning mode
Three columns compare the Add All Entities, Selective, and Never wildcard-only learning modes across what gets learned, policy size, strictness, maintenance and a typical use. Add All Entities learns every explicit entity for a large strict policy with high maintenance. Selective adds an explicit entity only on a false positive, giving a small policy with balanced strictness and low maintenance, and is highlighted as recommended. Never only relaxes the wildcard, giving the smallest, least strict, lowest-maintenance policy. A legend marks Selective as recommended. Pick the mode by how strict vs how manageable you need the policy ◆ Recommended default Learns Policy size Strictness Maintenance Typical use Add All Entities Selective Never (wildcard) Every explicit entity Explicit only on FP Just relax the wildcard Large / granular Small / balanced Smallest Highest Balanced Lowest High (big policy) Low Lowest Locked, well-known app max security most production apps the safe default huge / fast-changing app manageability first Rule of thumb: Selective for most apps · Add All for a locked-down app · Never for a sprawling one you can't fully learn.
Add All is the scalpel for a known app; Never is the loose net for a sprawling one; Selective is the balanced default that only adds detail when a false positive forces it.

▶ Watch a new entity move through staging — then watch it block too early

Karthik at Wipro adds a new parameter to a live app. Play the safe staging flow, then Break it to see what skipping staging does.

① LEARNPolicy Builder learns parameter order_ref → it enters the policy in staging
② OBSERVEFor 7 days ASM logs but does not block on it — even odd values are only suggestions
③ STABILIZENo new suggestions across the readiness period → entity is Ready to Enforce
④ ENFORCEYou enforce it → now an attack value of order_ref is finally blocked
Press Play for the safe learn → stage → enforce lifecycle. Then press Break it.

The five entity types Policy Builder learns — tap each card

Positive security tracks five kinds of entity. The front names it; the back gives the "so what" — what the allow-list protects.

📁
File Types
tap to flip

Extensions the app legitimately serves (html, jsp, pdf). So what: a request for a file type the app never uses (e.g. .bak, .cgi) is a violation — blocks recon & backup-file probing.

🔗
URLs
tap to flip

The paths the app actually exposes. So what: a request to a never-published URL (forced browsing, admin probing) raises an Illegal URL violation even with no signature match.

🔧
Parameters
tap to flip

The inputs each URL takes, with learned type/length/meta-char rules. So what: the richest control — a parameter with an unexpected value or extra param is flagged, catching injection/tampering.

🍪
Cookies
tap to flip

The cookies the app sets, learned as allowed/enforced. So what: a modified or injected cookie is a violation — stops cookie tampering. (No "Add All" mode for cookies.)

↪️
Redirection Domains
tap to flip

The domains the app is allowed to redirect users to. So what: the allow-list blocks open-redirect abuse to an attacker's site. (Selective mode doesn't apply here.)

Staging
tap to flip

Any new entity is logged-not-blocked for the readiness period (default 7 days). So what: the safety window — a freshly-learned entity can never cause an outage before you've reviewed it.

Quick check · Q3 of 10

An entity is in staging. A request arrives that would violate its setting. What does ASM do?

Correct: b. Staging is the safety window: ASM does not enforce a staged entity, it only logs and posts learning suggestions. That's how a freshly-learned entity is observed for the enforcement readiness period (default 7 days) before it can ever block — so a legitimate-but-new request never becomes an outage.

Pause & Predict

An auto-built policy has grown huge — wildcards everywhere and dozens of entities still sitting in staging. You want to shrink and harden it without re-learning from scratch. What single Policy Builder action does that? Type your guess.

Answer: Tightening (the Tighten Policy / stabilize setting). It shrinks and hardens the policy — deleting redundant wildcard entities, removing stabilized entities from staging, and enforcing violations that haven't occurred for the configured number of requests/time. Loosening does the opposite (adds entities / relaxes). That's exactly Path 4.

④ Tighten the policy and read the Enforcement Readiness Summary

You've learned entities and staged them safely. The last two moves are tightening the policy so it stays lean, and reading the summary that tells you what's ready to enforce.

Loosen vs tighten — the two stabilize directions

Policy Builder stabilizes a policy in two directions, each with its own requests-and-time threshold in Learning and Blocking Settings → Policy Building Process:

Analogy: the wedding bouncer's week is over. Loosening is adding a late-confirmed cousin to the list. Tightening is striking off the "maybe" entries nobody used and locking the final list — fewer names, firmer door.

The Enforcement Readiness Summary — your go/no-go board

Open Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning and read the Enforcement Readiness Summary. For each entity type (File Types, URLs, Parameters, Cookies, Redirection) it shows a Not Enforced count. A number greater than zero means entities of that type are still in staging (or a wildcard is still learning explicit matches) — being learned and logged, but not yet able to block. When the staging period passes with no new suggestions, they become Ready to be Enforced, and you can enforce them. The summary is the single screen that answers "is this policy safe to enforce yet?".

🖥️ The entity list — Security ▸ Application Security ▸ Parameters. Each row's State column shows Staged (still learning) vs Enforced (now blocking). (Recreated for clarity — your BIG-IP console matches this.)
https://10.1.1.245/tmui · BIG-IP · Security ▸ Application Security ▸ Parameters
Security » Application Security » Parameters » Parameters List  |  Policy: shop_app_policy
Parameter NameValue Type1 StateLast Updated
* (wildcard)User-inputEnforced2026-05-19
usernameAlpha-numericEnforced2026-05-21
couponAlpha-numericEnforced2026-05-24
2 order_refDecimalStaged · 4d left2026-05-30
filterAlpha-numericStaged · 6d left2026-06-01
Selected rows → Enforce   (only available once an entity is Ready — Staged rows are still in the readiness window)

Pin ① is the State column — your at-a-glance "is this blocking yet?". Pin ② is order_ref, the parameter Karthik just learned, still Staged with 4 days left in its window; it logs but can't block until it stabilizes. The wildcard and the older parameters are already Enforced.

The same moves at the command line

ASM is GUI-heavy, but tmsh and the iControl REST API expose the same state. Useful for audits and automation.

tmsh — list parameters and their enforcement/staging state
root@(bigip01)(cfg-sync)(Active)(/Common)(tmos)# list asm policy shop_app_policy parameters
# realistic mgmt IP 10.1.1.245 — run from the BIG-IP CLI
asm policy shop_app_policy {
    parameters {
        order_ref { perform-staging enabled }
        coupon    { perform-staging disabled }
    }
}
Expected output
order_ref : perform-staging = enabled   (still in the 7-day readiness window)
coupon    : perform-staging = disabled  (enforced — now blocks bad input)
# perform-staging enabled  = entity is staged (logs, no block)
# perform-staging disabled = entity is enforced
iControl REST — read the policy's enforcement readiness (from a jump host 172.16.40.10)
curl -sk -u admin:****** \
  https://10.1.1.245/mgmt/tm/asm/policies//policy-builder \
  | python3 -m json.tool
Expected output
{
  "enforcementReadinessPeriod": 7,
  "learningMode": "automatic",
  "trustAllIps": false
}
# enforcementReadinessPeriod = 7 days (the default staging window)
# If a never-seen URL still shows Not Enforced > 0 → it is still learning, not ready.
The trap behind a "ready" policy

"The 7-day window ended, so I'll flip the whole policy to Blocking." Wrong reflex. The readiness period ending only makes entities eligible to enforce — it does not mean you reviewed every outstanding suggestion. On a busy app a legitimate-but-rare entity can still be sitting unaccepted. Triage the Traffic Learning list and confirm the Enforcement Readiness Summary first. (The full judgement of flipping to blocking is the False-Positive Tuning lesson — here, just don't treat "7 days passed" as "review done".)

👉 So far: loosen adds, tighten shrinks-and-hardens, and the Not Enforced count = what's still staged. Next, see a zero-day the allow-list catches — then prove an entity is enforced.

▶ Watch a zero-day hit a signature-only WAF — then a learned allow-list

A forced-browse request to /admin/backup.bak arrives. Play to see the learned allow-list catch it, then Break it to see what happens with positive security off (signatures only).

① REQUEST172.16.40.10 requests /admin/backup.bak — a path the app never serves
② SIGNATURESNo attack signature matches — the payload itself looks clean
③ ALLOW-LISTPositive security checks the URL + file type against learned entities — not on the list
④ VIOLATIONIllegal URL + Illegal file type → blocked, even with zero signature hits
Press Play to see the allow-list catch a zero-day signatures miss. Then press Break it.

Aditya at HCL faces this

Aditya's auto-built policy never blocks anything, even obvious bad input, two weeks after go-live. Every entity in the Enforcement Readiness Summary still shows a non-zero Not Enforced count.

Likely cause

The entities are still staged — learned and logged, but never enforced. Policy Builder is in learning/transparent mode and nobody tightened or enforced the stabilized entities.

DiagnosisSecurity ▸ Application Security ▸ Policy Building ▸ Traffic Learning → Enforcement Readiness Summary
Fix

Review the Ready to be Enforced entities, run Tighten Policy to clear stabilized ones from staging, then Enforce them. The policy can only block on enforced entities.

Verify

Re-test the bad input; the entity's State now reads Enforced and the request is blocked with the matching violation in the event log.

Verify it worked — the screen that ends the argument

Never claim an entity is enforcing from memory. Open Security ▸ Application Security ▸ Parameters (or URLs / File Types) and read the State column — Enforced vs Staged. Cross-check the Enforcement Readiness Summary: a Not Enforced count of 0 for that type means everything is live. If a request you expect to block sails through, the entity is almost always still staged — not a Policy Builder bug.

Quick check · Q4 of 10

The Enforcement Readiness Summary shows a number greater than zero in the Not Enforced column for Parameters. What does that tell you?

Correct: d. A non-zero Not Enforced count means entities of that type are still in staging or have wildcard entities that are still learning explicit matches — so they cannot block yet. Once the staging period passes with no new suggestions, they become Ready to be Enforced and you can enforce them. It is not a block count (a) or a signature count (c).
Figure 4 — ASM positive-security & learning cheat-sheet (screenshot this)
A grid of six cheat-sheet tiles covering the positive-security learning lifecycle: positive security allow-lists known-good entities, Traffic Learning proposes them, the learning score is confidence while the violation rating drives it, staging logs without blocking for seven days, the three learning modes set granularity, and tightening plus the Enforcement Readiness Summary decide what to enforce. A golden-rule footer states: learn then stage then tighten then enforce, and read the summary before enforcing. The lifecycle → the one decision that matters at each step ① Positive security allow-list known-good URLs · params · file types catches zero-days signatures miss ② Traffic Learning Policy Builder proposes Accept · Delete · Ignore sort by learning score ③ Score vs rating score 0–100% = confidence rating 1–5 = attack-like low rating → high score ④ Staging logs, never blocks readiness period 7 days the no-outage safety window ⑤ Learning modes Add All · Selective · Never Selective = balanced default sets allow-list granularity ⑥ Tighten & enforce tighten = shrink + harden read Not Enforced count 0 = ready, >0 = still staged GOLDEN RULE Learn → stage → tighten → enforce. Read the Enforcement Readiness Summary before you enforce — never enforce on a hunch. Menu of truth: Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning | State column = Staged vs Enforced | 303 exam topic
Six steps, six decisions, one golden rule. Screenshot this — it's the card you'll glance at while reviewing a learned policy.

🤖 Ask the AI Tutor

Tap any question — instant, scoped to this lesson. No login, no waiting.

Pre-curated from F5 techdocs + DevCentral, scoped to ASM positive security & learning. For a live prod issue, paste your Traffic Learning 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.

Q5 · Remember

What is the default enforcement readiness period for a new ASM security policy?

Correct: b. The default enforcement readiness period is 7 days. During it you review learning suggestions and adjust the policy without blocking; an entity with no new suggestions across that period is considered ready to enforce.
Q6 · Apply

Aditya wants the smallest, easiest-to-manage policy that still relaxes only when a real false positive appears. Which parameter learning mode?

Correct: a. Selective is the balance of strict security, small policy size and low maintenance — it only adds an explicit entity when a wildcard gets a false positive. Add All (b) makes a huge granular policy; Never (c) only ever relaxes the wildcard, never adds detail when a real FP appears.
Q7 · Apply

Priya gets a flood of low-value learning suggestions for one-off URLs that will never repeat. Best first move?

Correct: c. Ignore permanently filters a suggestion out of the list; Delete removes the noise (a recurrence resets that entity's learning score to zero). Sorting by score surfaces the genuinely useful, high-confidence ones. Disabling learning (a) blinds Policy Builder; accepting everything (b) pollutes the allow-list.
Q8 · Analyze

Policy Builder's learning score for a parameter is stuck and never reaches 100%. The same parameter keeps drawing medium-to-high violation ratings. Why?

Correct: b. The learning score is driven by the violation rating — lower ratings push it up, higher ratings hold it down. A stuck score on attack-like traffic is ASM withholding confidence on purpose. Investigate whether the traffic is malicious before accepting; don't force-accept just to clear the screen.
Q9 · Analyze

Karthik must reduce a sprawling auto-built policy — wildcards everywhere, entities lingering in staging. Which Policy Builder action does that?

Correct: d. Tightening is what shrinks and hardens a policy. Loosening (a) does the opposite — it adds entities and relaxes settings. Dropping the readiness period (b) only changes the staging window; deleting (c) throws away all the learning you already paid for.
Q10 · Evaluate

A team proposes flipping a freshly auto-learned policy straight to Blocking the moment the 7-day window ends, with no review. Sound for a 5,000-user banking app?

Correct: c. "7 days passed" means entities are eligible to enforce, not that every suggestion was reviewed. On a high-traffic app you still triage the Traffic Learning list and confirm the summary before enforcing — otherwise a legitimate-but-rare entity blocks real users. The full go-live judgement is the False-Positive Tuning lesson.
Lesson complete — saved to your profile.
Almost! You need 70% (7 of 10) — re-read the path that tripped you up and tap "Try again".

🧠 In your own words

Type one line: why does ASM put a newly-learned entity into staging before it can block? Then compare to the expert version.

Expert version: A freshly-learned entity hasn't been observed long enough to trust. If ASM enforced it instantly, a legitimate-but-rare request (an unusual parameter value, a new file type) could violate the new setting and block a real user — an outage. Staging makes ASM log and suggest, never block, for the enforcement readiness period (default 7 days). You watch the suggestions safely; once the entity stabilizes with no new suggestions it becomes ready to enforce. If your answer mentioned "so a new entity can't cause a false-positive outage before it's reviewed", you've got it.

🗣 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

Positive security model
Allow-lists the known-good entities an app uses (URLs, parameters, file types, cookies, redirection domains); anything outside the list is a violation. The complement of signature-based negative security.
Negative security model
The signature-based approach — a list of known attack patterns to block. Covered in the Attack Signatures lesson.
Policy Builder
The ASM component that watches real traffic and proposes entities to add to the policy. Runs in automatic or manual mode.
Traffic Learning
The screen (Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning) where you review learning suggestions and the Enforcement Readiness Summary.
Learning suggestion
A Policy Builder recommendation to add, relax or enforce an entity, based on observed traffic. You Accept, Delete or Ignore it.
Learning score
A 0–100% confidence that a suggestion is safe to accept, built from how often/widely/long an entity is seen and pushed up by low violation ratings. At 100% automatic Policy Builder accepts it.
Violation rating
ASM's 1–5 estimate of how attack-like a request is (5 = almost certainly an attack). It drives the learning score: lower rating → higher score.
Entity
Any element the positive model tracks — a file type, URL, parameter, cookie or redirection domain.
Staging
A per-entity (or per-signature) mode where ASM logs and suggests but never blocks, for the enforcement readiness period — so a new entity can't cause an outage.
Enforcement readiness period
The time a new policy/entity is observed without blocking — default 7 days — before it's considered ready to enforce.
Enforcement Readiness Summary
The Traffic Learning table showing, per entity type, a Not Enforced count (still staged/learning) vs Ready to be Enforced.
Tightening (stabilize)
Policy Builder shrinking and hardening a policy: deleting wildcard entities, removing stabilized entities from staging, and enforcing violations that have not occurred.
Advanced WAF (formerly ASM)
F5 BIG-IP Advanced WAF — ASM (End-of-Sale 01-Apr-2021) plus L7 Behavioral DoS, Bot Defense, credential-stuffing/brute-force and DataSafe. The GUI module is still labelled "Application Security".

📚 Sources

  1. F5 techdocs — Refining Security Policies with Learning (learning suggestions, learning score, violation rating, staging, enforcement readiness period, Loosen/Tighten settings, Accept/Delete/Ignore). techdocs.f5.com — BIG-IP ASM Implementations 14.1.0.
  2. F5 techdocs — Changing How a Security Policy is Built & Adding Entities to a Security Policy (Add All Entities / Selective / Never wildcard-only / Compact learning modes; file types, URLs, parameters, cookies, redirection domains). techdocs.f5.com.
  3. F5 / MyF5 — K74535942: Building web application security policies with entities & Creating a Security Policy Automatically (automatic Policy Builder, Enforcement Readiness Summary "Not Enforced" column). my.f5.com.
  4. F5 DevCentral community — "ASM — confusion about Wildcard, Selective, All Entities", "ASM Policy Builder stuck at 52%", "The difference between Real Traffic Policy Builder & Staging & Learn" (real-world staging/stabilize behaviour). community.f5.com.
  5. F5 security advisories (≤12 mo) — K000158072 / CVE-2025-55669 (HTTP/2 TMM termination) and CVE-2025-54858 (JSON-schema uncontrolled recursion in bd) affecting BIG-IP Advanced WAF / ASM, disclosed 15-Oct-2025. my.f5.com.
  6. F5 Certification — 303 — BIG-IP ASM Specialist Exam Blueprint (K29900360; 90 min, 80 questions, pass 245/350; positive-security / Policy Building objectives) and the Configuring F5 Advanced WAF (previously licensed as ASM) v16.1 course outline. education.f5.com / techdocs.f5.com.

What's next?

You can now explain the positive-security model, read Traffic Learning's suggestions and scores, stage entities safely, tighten a policy, and read the Enforcement Readiness Summary. Next, learn the judgement of going live — triaging false positives and flipping a policy from Transparent to Blocking without breaking the app.