Skip to content

Add private ABI-aware process VM access probes - #427

Draft
Aegrah wants to merge 1 commit into
mainfrom
process-vm-access-core
Draft

Aegrah wants to merge 1 commit into
mainfrom
process-vm-access-core

Conversation

@Aegrah

@Aegrah Aegrah commented Sep 16, 2026 •

Copy link
Copy Markdown

Part 1 of 3, bottom-up: private probes → public event and tests → Go bindings.

Summary

Supersedes #416. Collect process_vm_readv/writev syscall results through ABI-aware raw entry/exit hooks, enriched with the task resolved by mm_access before credential/dumpability checks. This retains early failures that an LSM-only observation would miss. Parent/child accesses remain visible; resolved same-group accesses are suppressed.

This first layer is private. Correlation uses a gated bounded per-thread map with lifetime validation, exit cleanup and insertion-failure accounting. User-vector reads are bounded snapshots, never authoritative accessed ranges. The following layer exposes the event and regression tests.

Issue: https://github.com/elastic/endpoint-dev/issues/21204

Validation

Preflight: 20260916-pva-v2-release-final. Fleet acceptance: 20260916T172021Z-process-vm-access, accepted build endpoint-9.4.2-5564d77d41a8132d (Stack/Agent/Endpoint 9.4.2). Main integration was validated separately. Full persona-volume gate explicitly waived by the user; no production-volume claim.

The complete stack passes native x64/ARM64 tests, forced eBPF kprobe attachment, RHEL 8 and exact Rocky 9.3 with CI bytecode. ia32 is exercised; x32 is explicitly skipped where unavailable, and AArch32 runtime coverage is not claimed. Legacy kprobe capture remains unsupported.

Companions: elastic/endpoint-package#800 · https://github.com/elastic/endpoint-dev/pull/22027

Correlate raw syscall entry and exit with mm_access target enrichment. Preserve unresolved attempts, flags and signed results; snapshot at most eight local and remote vectors with explicit completeness and overflow status. Use a feature-gated bounded map, count insertion failures and clean every exiting thread. Public collection remains disabled in this core change.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant