Description
Three Ubuntu tools can send information about the system to Canonical:
popularity-contestsends, once a week, the list of installed packages and when they were last used, whenPARTICIPATE="yes"is set in/etc/popularity-contest.conf. It is installed by default on 20.04, through theubuntu-standardmetapackage;ubuntu-report(up to 24.04) sends the hardware, release, locale and screen details collected at the first login of Ubuntu Desktop, when the user accepts;ubuntu-insights(from 26.04) replaces it: it collects hardware and usage reports every week and uploads them when the user consented; when the user refused, it still sends an opt-out notice.
The control requires PARTICIPATE="no" when popularity-contest is installed, and
ubuntu-report and ubuntu-insights to be absent.
popularity-contest is kept installed on 20.04 because removing it also removes the
ubuntu-standard metapackage; with PARTICIPATE="no" its weekly job sends nothing. The fix
also sets the debconf answer to false, so that a reconfiguration of the package keeps the
setting. ubuntu-insights system-opt-out stops collection for every user without removing the
package, but leaves the decision on each machine: removal is easier to audit. Crash reports
(apport, whoopsie) are handled by CB-UBU-BOOT-015, and the network message of the day by
CB-UBU-AUTH-030.
Rationale
The package list describes the software stack and its versions, which is useful to an attacker and is part of the organization's information system description. The hardware and usage reports go to a third party without a contract or an assessment under the GDPR. The decision belongs to the organization, not to whoever answers the first-login question.
Impact
Canonical no longer receives statistics from the system; nothing changes for its users. Removing
ubuntu-report and ubuntu-insights does not remove the desktop metapackages, which only
recommend them.
Setting
| Location | /etc/popularity-contest.conf; packages ubuntu-report, ubuntu-insights |
| Default | Empty file (20.04 cloud image) or PARTICIPATE="no"; ubuntu-report or ubuntu-insights installed on desktops |
| Recommended | PARTICIPATE="no"; ubuntu-report and ubuntu-insights absent |
Audit
- If popularity-contest is installed (
dpkg-query -W popularity-contest),grep PARTICIPATE /etc/popularity-contest.confmust showPARTICIPATE="no". dpkg-query -W -f='${Status}\n' ubuntu-report ubuntu-insightsmust not printinstall ok installed.
Automated: every check must pass. Scanners report each check by its id.
popcon
popularity-contest is absent or set to PARTICIPATE="no".
script: |
if ! dpkg-query -W -f='${Status}' popularity-contest 2>/dev/null | grep -q 'ok installed'; then
echo "popularity-contest not installed"
exit 0
fi
v=$(sed -n 's/^[[:space:]]*PARTICIPATE[[:space:]]*=[[:space:]]*//p' /etc/popularity-contest.conf 2>/dev/null | tail -n 1 | tr -d "\"'")
echo "PARTICIPATE=${v:-<not set>}"
[ "$v" = no ]
ubuntu-report
Ubuntu hardware and usage report tool.
name: ubuntu-report
state: absent
ubuntu-insights
Ubuntu Insights report tool.
name: ubuntu-insights
state: absent
Remediation
- popularity-contest: set
PARTICIPATE="no"in/etc/popularity-contest.conf, or rundpkg-reconfigure popularity-contestand answer no. - Run
apt purge ubuntu-report ubuntu-insights.
| Restart | none |
| Disruption | none |
Rollback
Run dpkg-reconfigure popularity-contest and answer yes, or reinstall ubuntu-report or
ubuntu-insights with apt install.
popcon
f=/etc/popularity-contest.conf
dpkg-query -W -f='${Status}' popularity-contest 2>/dev/null | grep -q 'ok installed' || exit 0
grep -qx 'PARTICIPATE="no"' "$f" 2>/dev/null && exit 0
echo 'popularity-contest popularity-contest/participate boolean false' | debconf-set-selections
cb_backup "$f"
if grep -q '^[[:space:]]*PARTICIPATE[[:space:]]*=' "$f" 2>/dev/null; then
sed -i 's/^[[:space:]]*PARTICIPATE[[:space:]]*=.*/PARTICIPATE="no"/' "$f"
else
printf 'PARTICIPATE="no"\n' >>"$f"
fi
ubuntu-report
Generated from check ubuntu-report: the engine writes the fix for every output, it sets the expected value and the check runs again after.
ubuntu-insights
Generated from check ubuntu-insights: the engine writes the fix for every output, it sets the expected value and the check runs again after.
Handwritten code reads parameters from CB_<NAME> environment variables. 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
- popularity-contest(8), Ubuntu manual pages Canonical, vendor-doc, accessed 2026-10-19
- Ubuntu popularity contest Canonical, vendor-doc, accessed 2026-10-19
- ubuntu-report source repository Canonical, tool, accessed 2026-10-19
- ubuntu-insights source repository Canonical, tool, accessed 2026-10-19
- ANSSI-BP-028 v2.0 - Recommandations de configuration d'un système GNU/Linux (R58) ANSSI, guide, accessed 2026-10-19
Mappings
| Framework | ID | Relation | Note |
|---|---|---|---|
| ANSSI-BP-028 - Recommandations de configuration d'un système GNU/Linux2.0 | R58 | partial | R58 asks to install only the packages that are strictly needed; this control covers the reporting tools. |
| NIST SP 800-53 Rev. 55.1.1 | CM-7 | related | |
| NIST SP 800-53 Rev. 55.1.1 | PT-2 | related |
How this control relates to the other framework's: equivalent, stricter, looser, partial or related.
Threats mitigated
| Taxonomy | ID |
|---|---|
| Common Weakness Enumeration | CWE-359 |
Related controls
- related
CB-UBU-BOOT-015Disable automatic crash reporting (apport, whoopsie)
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. Stock image fails (popularity-contest installed, empty configuration); fix sets PARTICIPATE='no' and the debconf answer; PARTICIPATE=yes detected and fixed; audit passes after reboot. |
| Verified | 2026-10-19 by Sn0wAlice on 22.04, Proxmox VM, Ubuntu 22.04 cloud image, kernel 5.15.0-198-generic. Stock image passes (no reporting tool); popularity-contest installed with PARTICIPATE=yes fails, fix sets PARTICIPATE=no and the debconf answer; audit passes after reboot. |
| Verified | 2026-10-19 by Sn0wAlice on 24.04, Proxmox VM, Ubuntu 24.04 cloud image, kernel 6.8.0-147-generic. Stock image passes (no reporting tool); PARTICIPATE=yes and ubuntu-report installed both fail, fix sets PARTICIPATE=no and purges ubuntu-report; audit passes after reboot. |
| Verified | 2026-10-19 by Sn0wAlice on 26.04, Proxmox VM, Ubuntu 26.04 cloud image, kernel 7.0.0-38-generic. Stock image passes (no reporting tool); popularity-contest installed with PARTICIPATE=yes fails, fix sets PARTICIPATE=no and the debconf answer; audit passes after reboot. |
| Introduced in | v0.1.0 |
| Created, updated | 2026-10-19, 2026-10-19 |
| Translations | fr |