Summary
Santa's file and JSON telemetry writers accumulate serialized events in a growable buffer. When an event did not fit, the buffer was grown to twice its current capacity, which is the right amount most of the time but not when the incoming event is itself larger than that. The subsequent copy then wrote past the end of the allocation.
The argument list of an executing process is attacker-controlled and is included in execution telemetry, so an unprivileged local user could produce an event large enough to trigger this by running a program with a sufficiently long argument list.
Growing a buffer by a fixed multiple is only correct if the multiple is checked against what is actually needed.
Impact
An unprivileged local user could cause a heap buffer overflow inside santad, which runs with root privileges as an Endpoint Security system extension. The size of the overwrite, and the data written, derive from input the user controls.
The demonstrated impact is memory corruption. That can destabilize the process responsible for enforcement, and enforcement is not reliable while its own memory is being corrupted.
Nobody has shown that the corruption can be driven further, into controlled execution inside the privileged extension. The severity below reflects the reasonable worst case for attacker-influenced memory corruption in a process running as root, which is the usual basis for scoring defects of this kind, rather than only what has been demonstrated.
Affected configurations
This affects the file and json values of EventLogType. Because file is the default, a deployment that has not set EventLogType at all is affected.
The syslog, null, and all protobuf values, including protobufstream, protobufstreamgzip, and protobufstreamzstd, are not affected.
What changes in 2026.7
Nothing observable. The buffer is grown to whichever is larger, twice its current capacity or the size actually required, so large events are written correctly instead of overflowing. There is no configuration change and no change to telemetry output.
The fix was contributed independently as #1070 and has been present in main since 15 July 2026. Deployments building from source after that commit already have it. No tagged release before 2026.7 contains it.
Affected versions
Mitigation
Upgrade to Santa 2026.7 or later, or build from main at or after #1070.
Deployments that cannot do either can avoid the affected code by setting EventLogType to any value other than file or json. The protobuf variants are the closest equivalent for structured telemetry. Treat this as a way to close the exposure rather than as a preference, since it changes the format your telemetry pipeline receives.
Credit
Reported by OpenAI Codex Security, Jamie Brim (@jamieb-oai).
The underlying defect was independently found and fixed by @tnek in #1070, which landed before the report arrived.
Summary
Santa's file and JSON telemetry writers accumulate serialized events in a growable buffer. When an event did not fit, the buffer was grown to twice its current capacity, which is the right amount most of the time but not when the incoming event is itself larger than that. The subsequent copy then wrote past the end of the allocation.
The argument list of an executing process is attacker-controlled and is included in execution telemetry, so an unprivileged local user could produce an event large enough to trigger this by running a program with a sufficiently long argument list.
Growing a buffer by a fixed multiple is only correct if the multiple is checked against what is actually needed.
Impact
An unprivileged local user could cause a heap buffer overflow inside
santad, which runs with root privileges as an Endpoint Security system extension. The size of the overwrite, and the data written, derive from input the user controls.The demonstrated impact is memory corruption. That can destabilize the process responsible for enforcement, and enforcement is not reliable while its own memory is being corrupted.
Nobody has shown that the corruption can be driven further, into controlled execution inside the privileged extension. The severity below reflects the reasonable worst case for attacker-influenced memory corruption in a process running as root, which is the usual basis for scoring defects of this kind, rather than only what has been demonstrated.
Affected configurations
This affects the
fileandjsonvalues ofEventLogType. Becausefileis the default, a deployment that has not setEventLogTypeat all is affected.The
syslog,null, and allprotobufvalues, includingprotobufstream,protobufstreamgzip, andprotobufstreamzstd, are not affected.What changes in 2026.7
Nothing observable. The buffer is grown to whichever is larger, twice its current capacity or the size actually required, so large events are written correctly instead of overflowing. There is no configuration change and no change to telemetry output.
The fix was contributed independently as #1070 and has been present in
mainsince 15 July 2026. Deployments building from source after that commit already have it. No tagged release before2026.7contains it.Affected versions
<= 2026.6, whenEventLogTypeisfileorjson2026.7, and inmainsince #1070CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:HMitigation
Upgrade to Santa
2026.7or later, or build frommainat or after #1070.Deployments that cannot do either can avoid the affected code by setting
EventLogTypeto any value other thanfileorjson. Theprotobufvariants are the closest equivalent for structured telemetry. Treat this as a way to close the exposure rather than as a preference, since it changes the format your telemetry pipeline receives.Credit
Reported by OpenAI Codex Security, Jamie Brim (@jamieb-oai).
The underlying defect was independently found and fixed by @tnek in #1070, which landed before the report arrived.