Description
On Ubuntu, Bluetooth is handled by bluetoothd from the bluez package, run by
bluetooth.service. The package is installed on desktops and absent from server and cloud
images; when it is installed, the service starts as soon as an adapter is present. This
control requires the service to be masked, or bluez to be absent.
Rationale
Bluetooth stacks have had remotely exploitable flaws reachable without pairing (BlueBorne, BleedingTooth). A server never needs Bluetooth, and a hardened workstation should not expose a radio interface that can be reached from a nearby room or car park.
Impact
Bluetooth keyboards, mice, headsets and file transfer stop working.
Audit
Run systemctl is-enabled bluetooth.service. It must print masked, or fail because the unit
does not exist (bluez not installed).
Automated: every check must pass. Scanners report each check by its id.
service
State of bluetooth.service.
unit: bluetooth.service
state: masked
Remediation
Run systemctl mask --now bluetooth.service, or remove the package with apt purge bluez when
nothing depends on it.
| Restart | none |
| Disruption | low |
Rollback
Run systemctl unmask bluetooth.service and systemctl start bluetooth.service.
mask
Generated from check service: the engine writes the fix for every output, it sets the expected value and the check runs again after.
Each release turns these fixes into remediate.sh and an Ansible role per profile: dry run by default, a fix runs only when its check fails.
References
- bluetoothd(8), Ubuntu manual pages Canonical, vendor-doc, accessed 2026-10-19
- systemctl(1), Ubuntu manual pages Canonical, vendor-doc, accessed 2026-10-19
Mappings
| Framework | ID | Relation |
|---|---|---|
| NIST SP 800-53 Rev. 55.1.1 | AC-18 | related |
How this control relates to the other framework's: equivalent, stricter, looser, partial or related.
Threats mitigated
People and lifecycle
| Authors |
|
| Verified | 2026-10-19 by Sn0wAlice on 20.04, Proxmox VM, Ubuntu 20.04 cloud image, kernel 5.4.0-216-generic, BIOS boot. Server image without bluez, check passes (unit not found). |
| Verified | 2026-10-19 by Sn0wAlice on 22.04, Proxmox VM, Ubuntu 22.04 cloud image, kernel 5.15.0-198-generic, BIOS boot. Server image without bluez, check passes (unit not found). |
| Verified | 2026-10-19 by Sn0wAlice on 24.04, Proxmox VM, Ubuntu 24.04 cloud image, kernel 6.8.0-147-generic, BIOS boot. Server image without bluez, check passes (unit not found). |
| Verified | 2026-10-19 by Sn0wAlice on 26.04, Proxmox VM, Ubuntu 26.04 cloud image, kernel 7.0.0-38-generic, BIOS boot. Passes without bluez; with bluez installed the service is reported enabled, then masked by the generated fix. |
| Introduced in | v0.1.0 |
| Created, updated | 2026-10-19, 2026-10-19 |
| Translations | fr |