Mobility APT Defensive Validation Backlog
Mobility APT Defensive Validation Backlog
Acceptance rule
Every test must produce: timestamp, topology/profile, source and destination identity, exact version/image digest, config hash, expected result, observed result, cleanup result, and evidence path. Do not call a control effective from a packet capture alone; correlate host, container, NF, and database state.
P0 — close first
| ID |
Defensive question |
Safe procedure |
Pass condition |
Evidence |
| APT-LAB-001 |
Is the running Open5GS image outside the CVE-2025-41067 affected range? |
Record digest/version, stage a supported fixed release, rerun existing non-destructive attach and SBI robustness tests. Do not reproduce destructive registry deletion on shared state. |
Fixed version runs baseline SA/4G flows; rollback image is known; NRF restart/registry alerts remain enabled. |
Image inspect, release/advisory, TP report, NRF logs, registry snapshot. |
| APT-LAB-002 |
Can only an authorized workload register or call an NF service? |
Preserve current insecure profile; add a hardened mTLS/OAuth or protected-mesh profile and run the existing unauthenticated registration test against both. |
Insecure control reproduces documented gap; hardened profile rejects unauthenticated source and accepts provisioned identity. |
Test JSON, cert/workload identity, HTTP status, NRF log, network policy. |
| APT-LAB-003 |
Can an arbitrary attached container reach or modify MongoDB? |
Use a benign ephemeral client with no credentials to perform a read-only connection check, then enable auth/segmentation and repeat. Use only synthetic data. |
Hardened profile refuses unauthenticated access; only named provisioning identity can write. |
Connection result, Mongo auth/audit, network policy, subscriber hash/diff. |
| APT-LAB-004 |
Can we prove image and config provenance before startup? |
Capture digests/SBOM and hashes for compose-mounted files; compare at preflight and fail on drift. |
Startup fails closed for unapproved digest/hash and reports exact changed artifact. |
Manifest, signature/attestation, preflight output, Git diff. |
| APT-LAB-005 |
Would a host or container privilege change be detected? |
Snapshot expected capabilities, mounts, users, namespaces, routes, and firewall; compare after normal lab lifecycle. |
Unexpected privileged/root/capability/network change generates a finding with container identity. |
docker inspect baseline/diff, daemon events, route/firewall diff. |
| ID |
Defensive question |
Safe procedure |
Pass condition |
Evidence |
| APT-LAB-010 |
Does ordinary UE registration ever select a null NAS algorithm? |
Run baseline attach under strict and compatibility profiles; inspect Security Mode negotiation. |
Strict profile never offers/selects null; compatibility exceptions are explicit and test-scoped. |
UE/AMF or UE/MME logs, NAS PCAP, config hash. |
| APT-LAB-011 |
Is subscriber identity protected when protected SUCI mode is enabled? |
Add a test HN keypair/profile using synthetic SUPI and compare evidence artifacts. |
Protected profile does not expose raw SUPI in the relevant pre-auth identity exchange; keys are scrubbed from published evidence. |
UE config hash, NAS trace, sanitizer report. |
| APT-LAB-012 |
Can an unapproved Diameter peer establish trust? |
Add a TLS/allowlisted lab profile and attempt a benign connection from a non-peer test namespace without sending operational commands. |
Non-peer is rejected and logged; approved peer identity is authenticated. |
Peer config, TLS identity, connection log, firewall decision. |
| APT-LAB-013 |
Are PFCP associations bound to expected SMF/UPF endpoints? |
Baseline association and session events; perform restart/failover only through normal lab controls. |
New endpoint or unplanned association is visible and correlated to a deployment event. |
SMF/UPF logs, network flow, Docker events. |
| APT-LAB-014 |
Can GTP-U packets be correlated to a valid session? |
Use the existing lab injection/correlation test with synthetic traffic and no external route. |
Packet without matching endpoint/TEID/session is dropped or unambiguously alerted; valid flow remains functional. |
PCAP, SMF/UPF session record, test report. |
| APT-LAB-015 |
Does LAN isolation fail closed? |
Stop/reload the isolation service during an isolated maintenance test and run approved reachability checks. |
No unintended external reachability; rule drift is detected before core startup. |
service journal, firewall snapshot, reachability matrix. |
| ID |
Campaign lesson |
Local validation |
| APT-LAB-020 |
LIMINAL PANDA changed Linux binaries, SSH startup, and iptables while using telecom-aware tunneling. |
Hash monitored host/container paths; alert on unexpected SSH/PAM/firewall changes and processes/listeners not in image SBOM. Do not hunt only exact IOC filenames. |
| APT-LAB-021 |
Soft Cell collected selected subscriber records after enterprise lateral movement. |
Generate synthetic subscriber queries and verify that small targeted reads/exports are attributable, not only bulk downloads. |
| APT-LAB-022 |
Salt Typhoon guidance emphasizes management isolation, AAA, configuration baselines, and encrypted administration. |
Baseline Docker/gateway administrative identities and config; alert on new source, privilege, management listener, or unexplained config commit. |
| APT-LAB-023 |
Sea Turtle demonstrated that external control of DNS can redirect trust. |
Pin/record image registry and dependency resolution, inspect Docker DNS/service-name changes, and ensure external DNS cannot silently alter an approved digest. |
| APT-LAB-024 |
KA-SAT showed legitimate management commands can cause destructive scale. |
Require a maintenance marker and two-step confirmation for bulk container/NF/subscriber teardown; alert on unplanned fan-out. |
| APT-LAB-025 |
3CX showed trusted software distribution can become initial access. |
Verify image digests/signatures, produce SBOMs, scan build inputs, and record the identity that promoted each lab image. |
Evidence bundle layout
evidence/<run-id>/
manifest.json # operator, UTC time, git commit, topology, scope
versions/ # image digests, package versions, SBOM
config-hashes/ # hashes only; secrets stay out of the bundle
host/ # Docker events, route/firewall and service state
nf-logs/ # AMF/SMF/NRF/UPF etc., time-normalized
protocol/ # scoped PCAP and decoded summaries
datastore/ # redacted before/after synthetic-record diff
assertions.json # expected versus observed result
cleanup.json # teardown and state-restoration proof
Detection queries to implement conceptually
- NF registration without deployment: NF registry create/update with no matching approved container digest, workload identity, or deployment event.
- Subscriber write without change authority: Mongo/UDR/HSS write with no seed/test run, WebUI session, or approved operator identity.
- Packet-plane peer drift: new PFCP/GTP/Diameter endpoint not present in the topology manifest.
- Control-plane availability precursor: NRF restart, registry-size collapse, or mass NF re-registration in a short window.
- Privilege drift: container gains privileged/root/new capability, new host mount, or attachment to both management and packet networks.
- Configuration masquerading as RF failure: attach/handover failure preceded by PLMN/TAC/core-address/ZMQ config hash change.
Exit criteria
The lab reaches a defensible “APT comparison ready” state when:
- Open5GS is on a fixed/supported version or the affected NRF is isolated with explicit compensating controls.
- There is a hardened SBI profile with authenticated workload identity.
- MongoDB requires authentication and is network-restricted.
- Every image and mounted config is digest/hash baselined.
- The evidence bundle correlates host, NF, protocol, and datastore events on one clock.
- Null NAS/SUCI modes exist only in named test profiles.
- Diameter/PFCP/GTP peers have an approved endpoint manifest and drift alert.