Three Criticals, One Assume-Compromise Posture
Three fires. Patching closes none of them cleanly. Two carry compromise windows that predate your patch. jscrambler first: the operator moved from preinstall hooks to import-time self-execution in 8.18.0 and 8.20.0. The reason is scanner evasion. The payload is a Rust infostealer after build-agent tokens, cloud keys and secrets. Socket flagged 8.14.0 in six minutes. Weekly dependency scans do not.
Joomla next. iCagenda (CVE-2026-48939, CVSS 10/10) is an unauthenticated file-upload RCE. Automated mass exploitation has run since June 15. That is a month of web-shell runway, and it runs alongside the Balbooa Forms anonymous-upload RCE. Zimbra's Classic Web Client adds a crafted-email RCE that fires on view.
| Threat | Fix | Why patching alone fails |
|---|---|---|
| jscrambler npm 8.14/8.18/8.20 | Pin 8.22.0 | Secrets already exfiltrated where installed |
| Joomla iCagenda / Balbooa | 4.0.8/3.9.15 · 2.4.1 | Month of exploitation = existing web shells |
| Zimbra Classic Web Client | Vendor update | Fast weaponization post-disclosure |
For jscrambler and Joomla, work from assume-compromise. Purge-and-pin the npm package. Rotate every credential reachable from the affected pipelines. That is the remediation. Patch Joomla, then hunt the upload directories for shells. The patch shuts the door. It does not evict a resident.
What to do
Grep all lockfiles, artifact caches and CI logs for jscrambler 8.14.0/8.18.0/8.20.0; pin 8.22.0 and rotate every pipeline-reachable credential (npm tokens, cloud keys, SSH) this week.
Patch Joomla iCagenda (4.0.8/3.9.15), Balbooa (2.4.1) and internet-facing Zimbra now, then hunt upload directories and mail stores for web shells.