Repository navigation
Releases: alejadxr/AEGIS
Releases · alejadxr/AEGIS
Release list
AEGIS v1.7.27 — release pipeline fixed, installers back
Fixed — release pipeline
- A unit test used
TestClient(client=...), which the Starlette pinned in
CI (0.41.3) does not support. CI failed from v1.7.25 on, and the release
workflow skipped the desktop installers and the Docker images for
v1.7.25 and v1.7.26. The test now sets the client address through a small
ASGI wrapper; this release ships the missing artifacts, built on Node 22.
AEGIS v1.7.26 — Next.js 16.4.1, patched JS deps, Node 22 builds
Security — JavaScript advisories of October 2026
- Dashboard on Next.js 16.4.1 (GHSA-673q-mjm6-r5xr, CVE-2026-96889,
GHSA-p3m5-59mp-jv5r) and React 19.3.1. The repository declared Next 15
while production already ran Next 16; both now match. - Transitive floors via
overrides: body-parser 2.4.0 (CVE-2026-111181,
one compressed request crashes the process), proxy-addr 2.0.8
(GHSA-jqcg-44mw-7w3h, IP spoofing), undici 7.29+, sharp 0.35.5.
npm audit --omit=devgoes from 2 critical / 18 high to 0 / 8; the
remaining high ared3-colorpulled byreact-simple-maps. - The dashboard Docker image and CI build on Node 22. Node 20 is
end-of-life and did not receive the October 2026 Node.js security
release (CVE-2026-111497, the Brotli decoder RCE, and nine others).
AEGIS v1.7.25 — stops blocking its own operators, AI fallback and chat fixed
Fixed — AEGIS was blocking its own operators
- HTTP brute force now counts only requests that submit credentials to an
auth endpoint. Expired sessions polling the API from several browsers
behind one office NAT used to cross the threshold and get the office
blocked. SSH thresholds are unchanged. - Behavioural CVE rules that matched generic paths on request rhythm alone
are scoped to the product's real URLs (Dell RecoverPoint, ScreenConnect,
Kentico, Kestra, Cobalt Strike default URIs, Kubernetes API) or demoted to
low when the advisories name no URL. The RecoverPoint rule fired on any
/api/adminpanel. Validated by replaying a week of real traffic.
Fixed — dashboard and AI
- The IP-block 403 now carries CORS headers for allowed origins, and the
dashboard says the network is blocked instead of showing a CORS error. - The Ask-AI chat returned 404: its router was mounted without
/api/v1
since v1.1.0. - AI fallback: a gateway-specific model id was forwarded to the next
provider, which rejected it, so a down primary took the whole chain with
it. Each provider now gets its own model, and a total AI outage is logged
as one rate-limited ERROR.
AEGIS v1.7.24 — honeypot blocks authenticated, certifi pinned
Fixed — honeypot blocks were refused by the firewall agent
- The Pi honeypot never sent
X-AEGIS-FW-Auth, so since v1.7.17 every block
it asked for was rejected with 401. It now sends the shared secret
(AEGIS_FIREWALL_SECRET) plusforce, threat type, severity and duration,
and logs a rejection asREJECTED ... check AEGIS_FIREWALL_SECRET.
Changed
pi-deploy/README-honeypot.mddocuments the recommended layout: the decoy
on its own Pi, forwarding blocks to the gateway Pi's agent.
Security
- Require
certifi >= 2026.10.19in the backend and the firewall agent,
which drops the compromised eMudhra/emSign roots (GHSA-6q48-6c7w-9gw2).
AEGIS v1.7.23 — firewall agent in sync, guard covers https/http2
Fixed — confirmed blocks were deferred by the firewall agent
- The firewall agent requires evidence before blocking (an exploit signature
or a repeat sighting). AEGIS sent only the IP, so blocks that had already
passed guardrails were deferred as "unclassified". The responder, playbooks
and the DoS shield now send reason, threat type, severity andforce.
Changed — firewall agent in sync with production
- The evidence gate (
AEGIS_BLOCK_MIN_ATTEMPTS, default 2) and persisted
per-IP block reasons, previously only hot-patched on the device, are now in
firewall-agent/. The stale duplicatepi-deploy/aegis-firewall/main.py
is removed.
Security
- Brotli guard (CVE-2026-111497) now also covers
httpsandhttp2servers
and parsesContent-Encodingrobustly; newtest-node-brotli-guard.cjs
(53 checks) passes on Node 20.10, 20.18, 22.15 and 25.6. - The honeypot unit template takes
AEGIS_API_URL/AEGIS_API_KEYfrom a
root-onlyEnvironmentFileinstead of inline values readable by any user.
AEGIS v1.7.22 — Node.js Brotli RCE guard (CVE-2026-111497)
Added — virtual patch for Node.js CVE-2026-111497 (Brotli RCE)
- Node.js 22.x/24.x/26.x before 22.23.4/24.22.1/26.12.1 (and every EOL 20.x)
have an out-of-bounds write in the Brotli decoder that allows remote code
execution from crafted compressed data.deploy/guards/node-brotli-guard.cjs
protects Node processes until the runtime is upgraded. Load it with
NODE_OPTIONS="--require /path/to/node-brotli-guard.cjs":- Brotli decompression is refused (zlib sync/async/stream APIs and the
BrotliDecompressclass); streams fail cleanly instead of throwing, so
fetch()rejects without crashing the process. - Outbound requests stop asking for Brotli:
fetch()defaults to
gzip, deflateandbris stripped fromAccept-Encodingon
http(s).request/getandClientRequest.setHeader(axios, got, node-fetch
keep working against servers that support Brotli). - Incoming HTTP requests with
Content-Encoding: brare answered415
before any body parser runs. - Compression and gzip are untouched;
AEGIS_BROTLI_GUARD=offdisables it.
- Brotli decompression is refused (zlib sync/async/stream APIs and the
- Verified on Node 20.10/20.18 across 10 production Node apps (Next.js,
Express, cron workers): all stayed online, Brotli request bodies got 415.
AEGIS v1.7.21 — no more CPU bursts
v1.7.20 fixed the memory leak on endpoint uploads; the API still showed
30-45 s bursts at 100% CPU every few minutes. Two more causes, both fixed.
Fixed — chain evaluation reloaded the process index for every event
- The in-process host monitor emits ~30 process events a minute and each
one reloaded up to 5000 rows. A bounded per-agent process index is now
kept in memory, loaded once and refreshed on a TTL or a rate-limited miss.
300 events: 300 loads and 17.5 s before, 1 load and 0.07 s after.
Fixed — rewritten logs were replayed from the start
- An access logger that trims its file by rewriting it in place made the
tail replay megabytes of already-processed lines, flooding the event
queue. The tail now works on true byte offsets and resumes right after the
last processed line on any truncation or rotation. Text-modetell()
(an opaque cookie on multi-byte UTF-8) is no longer used for this check.
Result in production
- 20 minutes after deploy: no CPU bursts, memory flat at ~400 MB, zero
queue overflows, and a real log rewrite resumed at the right byte.
AEGIS v1.7.20 — no more memory leak under endpoint telemetry
Fixed — the API leaked memory and CPU under endpoint telemetry
- Every event in an EDR batch (up to 5000) rebuilt the process tree with a
query that loaded up to 5000 full rows and kept them in the request's
database session. With a busy endpoint the API grew from 0.5 GB to 2-5 GB
within minutes at 100% CPU and was restarted by its process manager over
200 times in a day. The process index is now built once per batch from a
column-only query and updated in memory; ancestry lookups never hit the
database. A 2000-event batch went from minutes to under a second in tests;
in production memory stays flat at ~400 MB.
Changed — the public-repo guard
- The pre-commit hook blocks agent and environment files by name (even with
git add -f), uses shape-only patterns, reads operator-specific patterns
from an untracked local file, and covers the full 100.64.0.0/10 range. A CI
job runs the same checks on the tracked tree, so a clone without the hook or
a--no-verifycommit still fails the build.
AEGIS v1.7.19 — secret-file probing detected, detection liveness
Added — secret-file probing is detected on every tailed app
- Scanners requesting
/.env,/.git/,/.aws/,/.ssh/,wp-config,
phpinfoand similar on apps behind the tunnel produced no incident: no rule
covered those paths for tailed logs, and the inline detector only runs in the
API middleware. In two days, ~270 such probes from five addresses went
unrecorded. New rulesigma_web_sensitive_file_probe(high) fires on three
or more such paths from one source within five minutes.
Added — detection can no longer fail silently
log_watcherand the correlation engine count lines read and processed,
events published and rules fired, with last-activity timestamps, on
GET /health/detectionand in/health.- A watchdog restarts the tail task if watched files grow but nothing is read
forAEGIS_TAIL_STALL_MINUTES(default 5). - In-place truncation (copytruncate) now rewinds the read offset.
AEGIS v1.7.18 — no more cloud blind spot
Security — attackers on Google Cloud and Azure were invisible
34.64.0.0/10(~4M Google Cloud addresses),35.190.0.0/17and
13.66.0.0/17were treated as safe on every detection path to avoid
crawler false positives, so any attacker renting a VM there was never
detected or blocked. Precise crawler ranges (Googlebot, Bing, Meta,
Twitter, Apple) stay unconditionally safe. A shared-cloud address is safe
only when it presents a crawler User-Agent and its forward-confirmed
reverse DNS ends in googlebot.com, google.com or search.msn.com (verified in
the background, cached). A spoofed Googlebot User-Agent from a cloud VM now
gets normal detection.- The firewall agent ignores broad
AEGIS_SAFE_IPSentries over these ranges.