Post

Lxd Priv Esc Writeup

Lxd Priv Esc Writeup

“Write-up: LXD Privilege Escalation — Theory, Risks & Defenses (Safe)”

date: 2025-10-20 14:00:00 +0700

categories: [Security, Writeup]

tags: [lxd, privilege-escalation, hardening, linux, defense]


Hello Jekyll

Author: biusa_mrdarkroot

Short summary:

This write-up explains the theory behind a known LXD-based privilege escalation class, describes risks and indicators of abuse, and — most importantly — gives practical defensive controls and detection methods. It is intentionally non-actionable for offensive use. The content is suitable for system owners, defenders, and authorized testers who need to understand, detect, and mitigate this threat.


Theory (high-level)

  • Attack surface: LXD exposes container management capabilities. Users in the lxd group (or with access to the LXD socket) can create and configure containers and attach host resources (devices, mounts).

  • Precondition: The attacker must be a member of the lxd group (or otherwise able to control the LXD daemon).

  • Core idea: If a container is configured to mount host paths (for example the host root /) into the container, a privileged shell inside the container can modify files on the mounted host filesystem. That can be used to add backdoor accounts, change binaries, or set SUID bits to gain host root.

  • Why this is dangerous: LXD membership effectively grants near-root control over the host if host paths or devices are exposed to containers. This makes lxd group membership equivalent to an administrative role for the host.

Important: This document does not provide step-by-step exploit commands. It focuses on theory, detection, mitigation, and safe testing practices.


Real-world impact

  • Full host compromise (arbitrary code execution as root).

  • Persistent backdoors and credential theft.

  • Lateral movement and data exfiltration in multi-tenant or developer hosts.

  • Cloud or CI/CD runners exposing LXD may allow tenants to escalate to host-level compromise.


Detection & Indicators of Abuse

Monitor for suspicious LXD and filesystem activity:

  • LXD activity

    • Unexpected container creation by non-admin users.

    • Containers configured with disk devices that reference host paths such as / or /etc.

    • New containers that run shells or privileged services.

  • Filesystem and permission changes

    • Unexpected modifications to /etc/passwd, /etc/shadow, systemd unit files, or binaries under /bin and /usr/bin.

    • New SUID/SGID binaries added to the host.

    • Unusual chmod or chown operations on system files.

  • Process and audit signals

    • Containers spawning processes that access host-mounted paths.

    • Auditd logs showing mount operations, file modifies on sensitive paths, or permission changes.

  • Suggested alerts

    • Alert when a container is created with a disk device whose source is a host path outside expected directories.

    • Alert on creation of SUID files or modification of /etc/shadow.

    • Alert if users added to the lxd group.


Mitigations & Hardening (practical, defensive)

Treat lxd membership as sensitive — apply defense-in-depth:

  1. Restrict who can manage LXD

    • Limit lxd group membership; use centralized processes for granting access.

    • Avoid adding service accounts or developers directly to lxd.

  2. Harden LXD socket and API

    • Restrict filesystem permissions on the LXD unix socket.

    • When exposing LXD remotely, require TLS client certificates and strong ACLs.

  3. Use strict LXD profiles

    • Create restricted profiles that do not allow arbitrary disk devices or raw.lxc overrides.

    • Only permit the minimal capabilities required by workloads.

  4. Deny host path mounts by default

    • Do not permit disk devices that mount arbitrary host paths such as /, /etc, or /var.

    • Use readonly mounts where a host path is necessary and audit approvals.

  5. Capability and seccomp restrictions

    • Restrict powerful capabilities like CAP_SYS_ADMIN.

    • Apply seccomp filters and AppArmor/SELinux confinement where possible.

  6. Patch and update

    • Keep LXD and host kernels patched to reduce known escape vectors.
  7. Operational controls

    • Use IaC / automation for container creation in production (prevent ad-hoc local container creation).

    • Enforce change control, logging, and approvals for adding new disk devices.

  8. Monitoring & response

    • Use auditd rules and file integrity monitoring (FIM) to detect mounts and binary changes.

    • Maintain and monitor logs for LXD operations; centralize container event logging.

  9. Isolation for multi-tenant use

    • Avoid running user-controlled containers on shared hosts. Prefer per-tenant VMs or strict isolation.
  10. Recovery & cleanup

    • Have rollback procedures: snapshots, automated rebuilds, and incident playbooks for suspected compromise.

Defensive commands & checks (safe examples)

Use these as defensive checks — not exploit steps:

  • Check current lxd group membership:
1
2
3
getent group lxd

  • List running containers and review device configs (look for disk entries referencing host paths):
1
2
3
4
5
lxc list

lxc config show <container-name>

  • Search for SUID binaries (suspicious if newly created):
1
2
3
find / -perm /4000 -type f -exec ls -l {} \; 2>/dev/null | sort

  • Monitor filesystem events on sensitive directories (example with inotifywait):
1
2
3
inotifywait -m /etc /usr/bin /bin -e modify,create,delete

  • Add audit rule to track mount syscalls (requires auditd and appropriate policy):
1
2
3
auditctl -a exit,always -F arch=b64 -S mount -k mount_ops


Safe lab testing guidance (authorized only)

If you own the system or have explicit written authorization:

  • Test only in isolated lab VMs or disposable hosts (snapshots, images).

  • Focus tests on detection efficacy and recordability (can monitoring detect a simulated dangerous configuration?).

  • Document all steps and revert changes immediately after testing.

  • Never perform these actions on production or any system you do not own.


Resources & further reading

  • Official LXD documentation — administration and security guidance.

  • CIS Benchmarks and host hardening guides.

  • Auditd and file integrity monitoring documentation.


Final notes

  • Access to LXD (via lxd group or socket) should be treated as highly sensitive — similar to administrative host access.

  • This write-up intentionally avoids providing exploit instructions. If you want, I can:

    • Generate a one-page executive summary for managers, or

    • Save this document as a Jekyll-formatted Markdown file for your blog (ready to commit).

This post is licensed under CC BY 4.0 by the author.