Repository navigation
AiSOC v22.1.0 — five advisories patched to a named version, and three silent data-loss defects closed #1710
Replies: 2 comments
The
|
| Release | Breaking change |
|---|---|
| v20.0.0 | POST /api/v1/cases/{case_id}/comments no longer accepts is_system in the request body. |
| v21.0.0 | Correlation grouping narrows when identifiers are missing, so alerts that previously collapsed together may now stay separate. Published alert-reduction figures were corrected downward as a result. |
| v22.0.0 | GET /posture/summary returns null instead of 0 for its eight counts when nothing has collected. Generated SDK types change from int to int | None. The old type was the defect: an empty table and a clean estate are different facts and 0 could not express both. |
The v21.0.0 and v22.0.0 entries are both corrections where a number that looked confident was not measured. Neither requires action unless you consume those fields programmatically.
If you prefer not to track a channel
Pin an explicit version tag, for example ghcr.io/beenuar/aisoc-core-api:v22.1.0. Version tags are immutable; stable and latest move.
|
Follow-up: v22.2.0 is out. Unrelated to the advisories above — it closes a collection-integrity class: eight connectors were losing data on every deployment, silently, and Google Workspace OAuth token events had never once been ingested anywhere. If you run Entra, Defender, Sentinel, Google Workspace, Google Cloud Audit, Security Command Center or Wiz, it is worth reading. The five advisories in this thread are unchanged and still name |
Uh oh!
There was an error while loading. Please reload this page.
AiSOC v22.1.0 is out. It is the follow-through release: the five advisories published against v22.0.0 are patched and now name a real version you can upgrade to, and a long-standing data-loss defect in Duo polling is closed.
34 defects have been addressed across this release and the two before it — 16 here, 15 in v22.0.0 and 3 in v21.0.0, counting distinct product and CI defects named in each release's Fixed and Security sections.
Upgrade, and what you get
docker compose pull && docker compose up -dAll 16 first-party images are published at
v22.1.0forlinux/amd64andlinux/arm64, and:latestnow points at this release. The Helm chart publishes as7.16.0.The security work
Five advisories, every one of them reproduced before it was fixed and each now naming
22.1.0as the patched version rather than a bare commit — so a reader has somewhere to upgrade to:SECRET_KEYpublished in this repository.envbackups remain in history, and the namespace was not deniedThe critical one is worth reading even if you do not run the Railway recipe, because the shape generalises:
enforce_secure_defaultsrefuses an insecure default at boot, but only whenENVIRONMENT=production, anddemoturned out to be the one member of the dev-environment set that denotes a deployed environment. A deployed demo now substitutes a per-process key and states the cost at boot rather than letting you find it. The fix covers the whole set of published defaults, not only the spelling the report named.Two actions worth taking. If you deployed from a clone that reused one of the committed
.envbackups, rotateSECRET_KEY, the FernetAISOC_CREDENTIAL_KEYand your Postgres, Redis and ClickHouse passwords — no vendor credential was in those files, so the exposure is bounded to a reused deployment file. And if you poll CrowdStrike, grant your API client Alerts: Read.Three defects that were costing you data, silently
Each of these had no error, no gap in the logs, and nothing on a dashboard to suggest anything was wrong — which is what makes them worth naming.
Duo was losing roughly 40% of authentication events on every deployment. The poll window ran
[now - interval, now]with no checkpoint anywhere in the connector, while Duo serves an authentication no sooner than two minutes after it happens and answers a more recent range as empty. So the last 120 seconds of every window was read once, while it was still empty, and the next poll's window began past it. At the default 300-second interval that is 120 seconds in every 300, lost quietly. The window now ends where Duo's logs actually become available, so consecutive polls stay contiguous. Thank you to @rudycelekli, who found and fixed this.CrowdStrike's investigation read was answering "no detections" to a 404. CrowdStrike decommissioned the
/detects/*endpoints in September 2025. The connector raised the 404 visibly, which is how it got reported — but the actions-side read logged a warning and returned an empty list, so the action reportedSUCCEEDEDwithcount: 0and an investigation read that as the EDR having nothing on the host. That is the strongest exonerating evidence there is, produced by a call that never reached the vendor. Both callers now use the Alerts API, and a failed read raises instead of returning empty.cloudflare_ztWAF mode polled a route that does not exist. Measured against the live API, the path it used answers 404 for any zone, with or without a token, while an unrelated zone route answers an auth refusal — so the probe discriminates and the absence is a measurement rather than a guess. WAF mode could never have returned an event on any deployment. It now queries Cloudflare's GraphQL analytics dataset, which changes the token scope it needs to Zone: Analytics: Read. Access mode was never affected.Numbers that now say what they measure
Five surfaces published an ATT&CK figure on one deployment at one moment — 392/392, 1/201, 22.22%, 494 and 14 — each measuring something different and none saying which, so any two of them contradicted each other. Each now names its measurement. The operations card also claimed "100% of known techniques have an enabled rule", which was false: the endpoint returns one row per technique your rules already reference, so a technique with no rule never appears at all.
In the same spirit, a console strip reported "Backlog 7" from a number that was a correlation outcome rather than a queue depth, and two landing surfaces rendered a hardcoded connector count of 26 against a registry of 91. The gate that owns that figure had only ever reconciled markdown prose; it now reads components too.
Alongside that, the event lake no longer runs two flushes at once, a cached triage verdict is actually persisted (and carries an explicit note that a cache hit is not authorization to close an alert), a tenant can be created on a brand-new database without naming every column the schema fills in, and the sandbox demo completes on a Windows console with a legacy encoding instead of stopping at a traceback.
Also in this release
The gate that proves published images match the tree compared
VERSION, which does not change after a release — so every post-release commit was invisible to it. It now compares the commit for tags that move, which is what catches a:latestthat quietly went stale.Channels
Neither
stablechannel moves. Imagestableis onv19.0.0and chartstableon7.8.0, so promoting either here would carry it across three application majors. Both guards held automatically and said so. If you pull bystableyou are unaffected by this release; if you want the fixes, pinv22.1.0or track:latest.Thanks
To @rudycelekli for the Duo fix, and to everyone who filed an issue, reported a vulnerability privately, or pushed back on a number that did not look right. Several of the entries above started as someone saying "that figure cannot be correct."
Full detail, every entry with the reasoning behind it, is in the release notes and
CHANGELOG.md. Docs are at https://beenuar.github.io/AiSOC/.All reactions