Security Incident Postmortem: CI MacOS Host Attack

In the spirit of transparency as our core value we are disclosing the internal infrastructure team postmortem for this event to show our commitment to security.

Summary

On 2026/09/04 four Jenkins CI hosts were found to be compromised using CVE-2026-65400 in order to run a Monero miner process.

The CVE allowed for authentication to Screen Sharing without valid credentials via an open VNC port. The investigation revealed the hosts were compromised on 2026-08-08. The only changes found on the hosts were related to the miner binary, SSH access, and process persistence via Launchd config files.

Investigation has found no evidence of tampering with Status build tooling. No Status official releases were built on the hosts between 2026-08-08 and 2026-09-04. Last stable release was 2.38.2 from 2026-07-21, which is definitely not affected.

Timeline (UTC)

  • 05:00 - Infra engineer detects unusually high CPU load on macm1-01 host.
  • 05:11 - CI hosts taken offline and isolated for investigation.
  • 05:20 - Presence of /private/var/root/.config/sysmond process discovered.
  • 06:24 - Most probable source identified as CVE-2026-65400 affecting macOS 26.4.1
  • 07:07 - Status Program Lead is informed about situation and need to delay any releases.
  • 07:29 - Infra engineers begin reinstalling 3 our of 4 affected CI hosts.
  • 08:32 - Initial investigation shows no changes to build tooling.
  • 09:30 - Adjustments to firewall rules are made to patch VNC access.
  • 12:48 - Consul agent secrets identified as potentially compromised.
  • 14:03 - Rotation of all affected Consul API tokens completed.

Details

Investigation

All four affected hosts were found to exhibit persistent higher CPU usage, but not so high that it triggered alerts:

The process in question was an instance of /private/var/root/.config/sysmond:

 > ps aux | grep airportd
root               419 397.5 12.8 444661696 2149984   ??  Rs   24Aug26 54701:07.50 com.apple.airportd -o auto.c3pool.org:443 -u 4AUZ9XNsffcPn13Yjk5yWAaZg8x5Fgu9cL9kWwDCnmACUFLuwrLg41WU31qiKfmo9ee62mVbwG9F5G82Ko8vck8nCtxdicj -p x -t 4 --randomx-no-rdmsr --no-color --log-file=/var/root/.config/sysmond.log

Ran via Launchd plist definition under /Library/LaunchDaemons/com.xmr.miner.plist and obscured using exec -a com.apple.airportd to masquerade the miner process as legitimate Apple process com.apple.airportd.

Processes were checked for open file and socket access and stopped afterwards.

sysmond  34238  cwd       DIR               1,13         704                   2 /
sysmond  34238  txt       REG               1,13       72744              154105 /Library/Preferences/Logging/.plist-cache.lazt2wCx
sysmond  34238  txt       REG               1,13     7349568            92832558 /private/var/root/.config/sysmond
sysmond  34238    1u      REG               1,13    22730455            92832561 /private/var/root/.config/sysmond.log
sysmond  34238    2u      REG               1,13    22730455            92832561 /private/var/root/.config/sysmond.log
sysmond  34238    9w      REG               1,13    22730455            92832561 /private/var/root/.config/sysmond.log
sysmond  34238   11u     unix  0x2241668d1532c02         0t0                     ->0x990d4d7b9550d240
sysmond  34238   13u     IPv4 0xa79db76b14b56165         0t0                 TCP 185.181.230.75:62968->57.129.119.218:443 (ESTABLISHED)
sysmond  34238   14u    systm 0xcc9246056e0cd624         0t0                     [ctl com.apple.netsrc id 10 unit 51]
sysmond  36631  txt       REG               1,13      175712 1152921500312575032 /usr/libexec/sysmond
sysmond  34238  txt       REG               1,13     2357376 1152921500312572606 /usr/lib/dyld
sysmond  36631  txt       REG               1,13     2357376 1152921500312572606 /usr/lib/dyld

No access to files beyond its own logs, config file, standard dynamic linker, and network connection was found.

Impact

The release CI host affected was investigated for changes closely. Both System Integrity protection and Authenticated Root was found to be enabled:

 > csrutil status  
System Integrity Protection status: enabled.

 > csrutil authenticated-root status 
Authenticated Root status: enabled

And root volume was mounted from a sealed snapshot disk3s1s1:

 > diskutil apfs list                                       
...
|   |   APFS Volume Disk (Role):   disk3s1 (System)
|   |   Mount Point:               /System/Volumes/Update/mnt1
|   |   Capacity Consumed:         17247371264 B (17.2 GB)
|   |   Sealed:                    Broken
...
|   |   Snapshot Disk:             disk3s1s1
|   |   Snapshot Mount Point:      /
|   |   Snapshot Sealed:           Yes

The presence of /System/Volumes/Update/mnt mount is explained by macOS update service:

 % pgrep -alf softwareupdated
394 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated

Build Tooling

Most of our build tools are installed via nix-darwin and /run/current-system was compared against an uncompromised CI machine where no differences were found:

attacked-host > nix path-info --recursive /run/current-system | sort | md5sum
7209fe997a7c61bf9ee32e2a977add13  -
uncompromised-host > nix path-info --recursive /run/current-system | sort | md5sum
7209fe997a7c61bf9ee32e2a977add13  -

Checks against the contents of /nix/store entries also showed no changes.

Similar comparison was done for our Qt 6.11.0 installation:

 > sudo find $QTDIR -type f -exec shasum -a 256 {} + | LC_ALL=C sort | md5sum  
c7f9bda0926bab8259d923f79a885cdf  -

And showed no differences.

Checks of other locations like Homebrew installation folder - not used in Status builds - also showed no tampering.

Full hashes of contents the hosts being compared are available under files/20260904_ci_macos_attack.

 > cd files/20260904_ci_macos_attack/macm2-01-release
 > find . -type f
./logs/system_profile.log
./logs/ps_auxww.log
./logs/launchctl_print_system.log
./logs/kmutil_showloaded.log
./logs/system_integrity.log
./logs/lsof_nP.log
./hashes/qt.md5
./hashes/launchd.md5
./hashes/nix.md5
./hashes/nbs.md5

Affected Builds

Although no build tooling tampering has being found and no official stable releases came out in the intervening time some builds are considered suspect.

While the macOS CI hosts were compromised there were five release candidate macOS and iOS builds - from 2.39.0-rc.1 to 2.39.0-rc.5 - which have been deleted from GitHub and our storage as potentially tampered.

The full list of potentially affected builds is in files/20260904_ci_macos_attack/affected_release_candidates.list.

Identified Errors

  • Running outdated by 5 months macOS Tahoe 26.4.1 release permitted the exploit.
  • Firewall configuration allowed non-VPN access to VNC Remote Desktop port.
  • Lack of intrusion detection software deployed on macOS CI hosts delayed detection.

Conclusions

  • Firewall adjustment to prevent VNC access beyond initial host bootstrapping phase.
  • Implementation of a more sophisticated VPN setup that requires OpenID SSO authentication.
  • Use a virtualisation solution to avoid running Jenkins agent on Bare Metal.
  • More narrow scoping of Consul API tokens deployed to Consul agents.
  • Deployment of Wazuh Agent to all CI hosts for intrusion detection.
  • More regular upgrade schedule to be implemented for CI hosts.