Science & Analytics

The Scientist

The Signal

CISA silently rewrote 59 KEV ransomware labels, some 3.5 years late.

Suzu Labs counted the flips itself, because no alert goes out when the field changes. Every zero in that column was potentially a one that had not arrived yet, so any model you trained on ransomware-use as a binary carried future positives in its negative class, and its backtest was graded against labels that landed after the prediction window closed. There is a version of this where the label noise washes out at scale. That version needs the revisions to be random with respect to your features, and revisions driven by observed ransomware activity are not.

In Play

  1. Censored Security Labels

    Suzu Labs' Jacob Krell found CISA changed the KEV ransomware-use field from Unknown to Known for 59 CVEs during 2025, with confirmation lags from one day to more than three and a half years, and no alert when a field flips. Train on that field as a binary and an unknown fraction of your negative class is future positives. Your backtest also scores against a label snapshot taken after the prediction window, so precision looks good for a reason production will never reproduce.

    Ask Clarity
    Try
  2. Sender Authentication Stopped Carrying Signal

    A compromise at email provider Brevo handed one attacker 120 legitimate tenant accounts and their contact lists, producing phishing that reached Trezor, CoinTracking and BitBox subscribers with SPF and DKIM passing. The feature vector did not change; the conditional label distribution did. PSI and KS monitors on input distributions stay green through exactly this event. Only precision and recall reported per sender-authentication stratum will show it.

    Ask Clarity
    Try
  3. Retrieval Graded On A Corpus Production Discards

    Databricks unveiled Adaptive Instructed-Retriever, a retriever that decides per query whether extra search hops are needed, and disclosed no baseline, dataset, or cost-per-query delta. Separately, security researchers described agents inheriting service-account privilege inside retrieval paths. Both land on the same instrument: when entitlement filtering runs after the ANN query rather than inside it, recall@k is computed over documents your serving path throws away, and every routing experiment is graded against the wrong corpus.

    Ask Clarity
    Try
  4. Full-Duplex Voice Retires WER And TTFB

    OpenAI shipped GPT-Live-1, a voice agent that keeps listening while it speaks and catches mid-utterance redirection without waiting for a pause. That removes endpoint and VAD tuning, the dominant perceived-latency knob in cascaded ASR-to-LLM-to-TTS stacks, and introduces a failure you do not currently measure: stopping on a backchannel like 'mhm'. Meanwhile three new transcription models all sit under 4% word error rate with a roughly 3x hourly price spread, so accuracy commoditized and latency mode did not.

    Ask Clarity
    Try
  5. Rubric-Gated Compaction, No Parameter Updates

    Tianjian Li and colleagues at Johns Hopkins and Apple published SelfCompact: a probe appends a self-assessment prompt every 16,000 tokens, a rubric decides whether compaction is allowed, and a summarizer condenses 50k-100k-token traces down to 1k-3k. Qwen3-30B-A3B reached 52.1% on IMO-Answerbench against 48.7% for fixed-interval summarization and 45.2% for none, with no fine-tuning. The ablation is the finding: replacing the rubric with a plain 'do you want to compact?' prompt collapsed results back to fixed-interval.

    Ask Clarity
    Try

Deep Dives

The KEV Field That Rewrites Your Backtest After You Score It

Two of the five signals feeding a vulnerability risk model cannot serve as targets at all, and the one everyone trains on updates silently, years after the prediction window closes.

This is a formulation bug, not a feature bug

The temptation is to fix a censored label with better features. It does not work, because the defect is in the problem statement. A model consuming KEV's ransomware-use field as a binary is sampling from a population where an unknown share of the negative class are future positives, then being evaluated against a label table that caught up after the prediction window. That is positive-unlabeled contamination and point-in-time leakage in the same pipeline, and they push error in the same direction: offline precision looks strong, production precision cannot match it, and nobody can explain the gap.

The two defensible reformulations are well established. Treat it as time-to-event with explicit right censoring, where a CVE not yet confirmed is censored rather than negative. Or treat it as PU learning with an estimated label frequency. Either way, every backtest joins against a point-in-time snapshot of the label table, not today's. If you buy a vendor exploitation score, the question worth asking is which of the two they do; the concrete finding here is that the underlying field changes without notification, so a vendor that re-scores history against current labels has the same defect you do.

Rank your label sources by whether you can train on them

SignalWhat it measuresLabel latencyKnown biasUsable as target?
CVSS scoreTheoretical severity rubricNone, assigned at disclosureNot a probability; both exploited Windows privilege-escalation zero-days this cycle scored 7.8No, feature only
KEV exploited listingConfirmed in-the-wild exploitationDays to monthsLeft-truncated; absence is not evidence of no exploitationYes, positive-only
KEV ransomware-use fieldConfirmed ransomware associationOne day to 3.5+ yearsRight-censored, silently updatedOnly with censoring modelled
Vendor priority ratingSuggested patch timelineStatic rubricVendor-defined, predates AI-accelerated discoveryNo
Internet-scan telemetryObserved unpatched exposureDaysNo denominator, scan coverage biasCovariate, not target

A remediation prior worth stealing

Shadowserver counted roughly 11,000 unpatched WatchGuard Fireboxes in December 2025 and about 9,000 nine months later — near 18% remediation on a KEV-listed, CVSS 9.3, ransomware-exploited flaw. Plex still showed 36,000-plus exposed servers a week after its advisory. If your exposure or time-to-remediation model assumes exponential decay, it is badly optimistic; the empirical hazard for edge appliances looks closer to flat. No denominator is published for either count, so use them as relative trend only.

The regime break sitting in the same dataset

Microsoft's monthly CVE volume reached 974 in September against 622 in July, roughly 5x May and 10x February. That is a level shift, not a noisy month, and a rolling-window baseline will smear it into a gentle trend and stop alerting on anything real for a year. Declare a changepoint or reset the window.

The headline count also fails to reconcile across outlets: 974 per Dark Reading and The Register, 972 with 113 critical per CrowdStrike, 966 per BleepingComputer — and CrowdStrike's tidy 45% privilege-elevation / 26% RCE / 18% information-disclosure split rides on its own denominator. ZDI separately counts 2,760 Microsoft CVEs year to date, more than double the prior record with a quarter left. The popular explanation, that AI-assisted code analysis drove the surge, has no ablation separating it from CVE-assignment policy, bounty scaling, or third-party bundling. Ingest the machine-readable vendor feed and persist your denominators, or your severity-mix charts will drift for editorial reasons alone.

A censored label with silent updates is not a data-quality ticket. It means your backtest measured a future you had already been told about.

What to do

  1. Re-specify any KEV-derived target as positive-unlabeled or time-to-event with explicit censoring, and re-run one existing backtest on point-in-time label snapshots this sprint.

  2. Add a changepoint indicator, or reset baselines to a post-February window, for every monitor or SLO keyed on monthly CVE volume before the next release lands.

  3. Replace CVSS as the prioritization target with KEV listing plus exploit prediction by the next model review, keeping CVSS as one feature among many.

Your Inputs Held Still And The Label Moved Underneath Them

Three separate events changed what a positive class means without shifting a single feature distribution — the drift class every PSI and KS monitor you own is structurally blind to.

The only instrumentation that sees it

Aggregate metrics will not move on the Brevo cohort, and neither will input drift tests: headers are well formed, domains are aged, reputation scores are high. The detection instrument is slice-level, label-conditional evaluation — precision and recall reported per sender-authentication stratum and per sender-domain reputation tier, never pooled. Report the authenticated-sender slice as its own line and the AUC delta becomes visible in an afternoon.

Then replace what died. The features that survive an account takeover at the provider are tenant-relative, not artifact-relative: template similarity against that tenant's own prior legitimate sends, list-wide URL novelty, and send-time deviation from the tenant's historical cadence. All three describe the sender's behaviour rather than the message's credentials, which is exactly the axis the compromise did not fake.

When the document is genuine, forgery is the wrong label

The IDScan exposure tied full names to driver's-license and government ID numbers within a dark-web dataset of 153M-plus driver's licenses, 10M ID cards, 3M travel documents, 579,000 medical cards, and 170M-plus individuals across the US and Canada — verified by Brian Krebs pulling his own record. The documents are real. A document-authenticity classifier is therefore optimizing a label that no longer separates the classes: the adversary holds an authentic scan, and the cost of obtaining one collapsed.

This is a label-definition problem, so the fix is a label change plus an eval slice. Build a purpose-built genuine-but-stolen cohort, ablate knowledge-based identity features at a fixed false-positive rate to quantify what they still contribute, and shadow-score device, behavioural, and graph replacements before the degradation arrives so you can distinguish it from noise. AdaptHealth's 4,115,802-person breach points the same way: entry came through social engineering of a third-party contractor's session, not a cracked password, which makes session-trajectory anomalies — device fingerprint change mid-session, impossible travel, unusual API call ordering — the right abstraction over credential-centric features.

A high-weight feature just died quietly

Anthropic's misuse report states plainly that 'sophistication' can no longer be used as an attribution signal: a Russian-aligned autonomous toolkit and undergraduates running an exploit foundry now produce indistinguishable technique complexity. Any model scoring threat, abuse, fraud severity, or account risk on proxies for actor capability — attack complexity, tooling quality, operational polish — just lost discriminative power while those features' distributions held steady.

The recalibration ticket is auditable: PSI or KS on those features across the last two quarters, feature-importance deltas, and a reliability curve. Miscalibration here has a predictable shape — systematic under-scoring of the low-resource segment — and ECE plus Brier make the before-and-after defensible to a reviewer.

Where the sources stop supporting you

All three reports agree on direction and share the same evidentiary hole. The misuse report is conditioned on detection: every case is one the vendor's own classifiers caught, and actors running open weights locally emit no API telemetry, so they are absent from the sampling frame entirely. There is no denominator, no false-positive rate on legitimate biology or security queries, and no counterfactual uplift. That is enough to change a feature set. It is not enough to change a rate in a risk model, and moving a number on this evidence is how a vendor's visibility becomes your prior. Separately, 42% of LG smart TV apps previously carried a residential proxy SDK across roughly 216M units, so re-measure slice AUC on residential-ASN cohorts before trusting IP-reputation features either.

Concept drift with a frozen input distribution is the one failure your drift program cannot detect by construction, because it monitors the data and the definition is what moved.

What to do

  1. Re-cut your abuse or phishing classifier's precision and recall by SPF/DKIM pass status and sender-domain reputation tier, reporting the authenticated-sender slice separately from aggregate.

  2. Stand up a genuine-but-stolen document slice for KYC or account-recovery scoring and ablate knowledge-based identity features at fixed FPR this sprint.

  3. Run PSI plus feature-importance deltas on every complexity or actor-sophistication proxy over the last two quarters, then recalibrate and publish ECE and Brier.

Your Recall@k Is Computed Over Documents Production Throws Away

Adaptive routing is the right architecture and the wrong purchase, and neither the vendor's efficiency claim nor your own router is testable until entitlement filtering moves inside the search.

Where the entitlement predicate sits decides two numbers at once

The security framing of this — agents authenticating as infrastructure rather than as users — is a confused-deputy bug, named decades ago and now sitting in the retriever and the tool router. The measurement consequence is the part nobody writes up. A post-retrieval filter grades your retriever on documents the serving path will discard, so recall@k and nDCG are silently inflated, and the offline numbers you used to pick an embedding model were computed against a corpus that does not exist at request time.

Enforcement patternLeak riskEffect on recall@kServing costOps burden
Post-retrieval filter or prompt-instructed redactionHigh — snippets, citations, caches and reranker inputs all touch unauthorized documentsSilently inflated; top-k drawn from a corpus the user cannot seeLowLow
Metadata pre-filter inside the ANN queryLow, if applied during search rather than afterHonest, but degrades under highly selective filters due to graph pruningModerateACL sync into index metadata
Per-tenant or per-role namespacesLowest — hard isolation boundaryHonest; k is per-namespace so tune k separatelyHigher, index duplicationHigh — index sprawl, reindex on ACL change
On-behalf-of token exchange at the tool boundaryLow for tool calls; does not cover the vector storeOrthogonal controlLowNeeds identity-provider support

Expect the honest number to come in lower per entitlement cohort. That drop is not a regression; it is the first accurate measurement you have taken.

Adaptive retrieval is selective prediction, and you can build it

Databricks positioned Adaptive Instructed-Retriever as a cost and latency play — deciding per query whether extra search hops are needed — with no baseline retriever, no dataset, no cost-per-query delta, no latency percentiles, and no ablation isolating the routing policy from retriever quality. Efficiency claims without a baseline are unfalsifiable by construction, so the useful move is to name the method rather than evaluate the product.

Methodologically this is selective prediction: a cheap path, an expensive path, and a calibrated policy routing each query to the cheapest path that clears a quality floor. That literature is mature, the evaluation instrument is a risk-coverage curve, and the router can be built from signals you already log — retriever top-1 score margin, score entropy across top-k, generator logprob, or a small classifier over those features trained against adjudicated correctness labels.

The failure mode to instrument is specific. An under-calibrated router does not error out; it quietly sends the hardest few percent of queries down the cheap path and returns confident, incomplete answers. Track expected calibration error on the routing signal, not aggregate accuracy, and freeze a stratified eval set of 300-500 production queries labelled by required hop count with cost-per-correct-answer and p50/p95 latency alongside faithfulness. That single artifact converts every future vendor efficiency claim into a one-afternoon test.

The gate that has no zero

Prompt injection and model-artifact supply chain remain the top entries on the most-critical-LLM-vulnerabilities list, which after years of guardrail products is itself the finding: no defense drives attack success rate to zero. Treat injection resistance as a robustness metric with a number, not a certification. Cover direct injection, indirect injection through retrieved documents, and injection through tool outputs, at 200-plus cases per surface so a five-point movement is distinguishable from sampling noise, and hold part of the attack corpus back so guardrail tuning does not overfit the attacks you already saw. Severity lives at the permission boundary: a 12% success rate against a read-only tool is an annoyance, and the same rate against a tool with production write access is an incident.

If entitlement filtering happens after retrieval instead of during it, you have a data leak and a fake recall number — and only one of them ever shows up in an incident report.

What to do

  1. Grep every retrieval service for where the entitlement predicate is applied; if it runs after the ANN query or inside a prompt instruction, re-baseline recall@k and nDCG per entitlement cohort.

  2. Freeze a 300-500 query eval set labelled by required hop count and add cost-per-correct-answer plus p95 latency before allocating any adaptive-retrieval bake-off budget.

  3. Wire a versioned injection suite into CI as a release gate, reporting attack success rate per model version and per exposed tool surface at 200-plus cases each.

The bottom line

The common thread today is not that models regressed. It is that the ground truth underneath them was rewritten while the inputs stayed identical. That breaks the assumption every drift program rests on: that monitoring the data monitors the model. Distribution tests cannot see a definition change, a censored class, or a scoring corpus that differs from the serving corpus, and adding features closes none of that gap. Pick the one production label whose definition and arrival time you cannot state precisely, version it with an as-of timestamp, and re-run its backtest against snapshots instead of today's table.