π ~4 min read β’ Source: Arch ASA ASA-201802-12
Related CVEs: CVE-2018-7254 CVE-2018-7253 CVE-2018-6767 CVE-2020-35738
Upstream summary: Type: arbitrary code execution. Status: Fixed. Affected: 4.80.0-1. Fixed in: 5.1.0-2. Group: AVG-631.
Table of contents
Symptom & Impact
On Arch Linux hosts that have wavpack installed, operators report behaviour consistent with Arch ASA ASA-201802-12: pacman flags the package as out of date, affected services fail to restart cleanly under systemctl, and β for security-rated advisories β the host is exposed to the vulnerability set above. Impact ranges from a single service-restart loop to wider availability incidents whenever wavpack sits on the serving path.
Environment & Reproduction
Reproduction targets Arch Linux. Because Arch is a rolling release, the fix may already be staged in the official repos β always run sudo pacman -Syu first before declaring the host vulnerable. Confirm release and the installed package:
cat /etc/arch-release
cat /etc/os-release
pacman -Qi wavpack
pacman -Si wavpack # repo (latest) version
pactree wavpack | head -40 # reverse/forward deps
Trigger the workflow that exposes wavpack β multiple vulnerabilities (4 CVEs) β patch and remediation guide while collecting:
sudo journalctl -u wavpack -b --no-pager | tail -200
sudo journalctl -xe --no-pager | tail -200
sudo tail -200 /var/log/pacman.log
# Optional evidence bundle for support:
sudo journalctl --since today --no-pager > /tmp/journal.txt
Root Cause Analysis
Root cause is documented in Arch ASA ASA-201802-12. Arch packagers ship the fix in the official repos as soon as the upstream tarball is rebuilt; running an outdated mirror or a stale local sync leaves the host exposed. Correlate pacman activity with system logs:
grep -E 'installed|upgraded|removed' /var/log/pacman.log | tail
grep -i wavpack /var/log/pacman.log | tail
pacman -Qu # locally available updates
sudo journalctl -p err -b --no-pager | tail -100
cat /proc/sys/kernel/tainted # non-zero = tainted kernel / out-of-tree modules
Quick Triage
Run these on Arch Linux to capture the current state of wavpack:
pacman -Qi wavpack # installed version + deps
pacman -Qkk wavpack # verify shipped files (size/mtime/checksum)
checkupdates # safe update check (pacman-contrib)
pacman -Qu # pending updates from local DB
systemctl --failed --no-pager
sudo nft list ruleset | head -50 # active firewall (nftables backend)
# If wavpack ships a systemd unit (unit name may differ from pkg name, e.g.
# bindβnamed, postgresqlβpostgresql, nginxβnginx):
systemctl list-unit-files | grep -i wavpack | head
Step-by-Step Diagnosis
-
List failed systemd units.
systemctl --failed --no-pager -
Tail the journal for
wavpackand the system bus.sudo journalctl -u wavpack -f --no-pager sudo journalctl -xe -f --no-pager -
Inspect firewall posture (Arch defaults to nftables; iptables-nft and ufw are also available).
sudo nft list ruleset sudo iptables -S 2>/dev/null | head -50 sudo ufw status verbose 2>/dev/null || true -
Check that the host is fully synced β the fix may already be live in the repos.
sudo pacman -Syy # refresh repo DBs only checkupdates # show pending updates without touching system pacman -Si wavpack | grep -E 'Version|Repository' -
Verify
wavpackintegrity and reinstall if any file is altered.sudo pacman -Qkk wavpack # Deeper file-level check (pacutils): sudo pacman -S --needed pacutils sudo paccheck --md5sum --quiet wavpack sudo pacman -S wavpack # reinstall current version -
Correlate findings with
/var/log/pacman.logand Arch ASA ASA-201802-12 to pin the change that introduced wavpack β multiple vulnerabilities (4 CVEs) β patch and remediation guide.
Solution – Primary Fix
Apply the corrective pacman transaction referenced by Arch ASA ASA-201802-12, then reload affected systemd units. Arch does not support partial upgrades β always do a full system sync, never pacman -Sy wavpack on its own:
sudo pacman -Syu # full system upgrade (REQUIRED on Arch)
# Or pull the specific package as part of the same transaction:
sudo pacman -Syu wavpack
sudo systemctl daemon-reload
# Unit name may differ from pkg name; check first:
systemctl list-unit-files | grep -i wavpack | head
sudo systemctl restart wavpack
pacman -Qi wavpack | grep -E 'Version|Install Date' # confirm new version
systemctl is-active wavpack 2>/dev/null # confirm running (if a unit exists)
For kernel / glibc / systemd / openssl upgrades a reboot is required (Arch has no live-patch story in base):
# Check whether services or the kernel need a restart (pacman-contrib):
sudo pacman -S --needed pacman-contrib
checkservices 2>/dev/null || true
needrestart 2>/dev/null || true # from the optional needrestart pkg
sudo systemctl reboot # or: sudo shutdown -r now
AUR caveat: packages installed from the AUR are not covered by Arch Security Advisories. Rebuild them against the new repo libs immediately after the system sync:
# AUR packages aren't covered by ASAs; rebuild via paru/yay:
paru -Syu --aur # paru is not part of base; install it from AUR first
# Or with yay:
yay -Syu --aur
Need help rolling this patch across an Arch fleet? Our IT Solutions & Services team supports Arch Linux workstations and container builds with rolling-release patching playbooks. Get in touch for a free consultation.
Solution – Alternative Approaches
If the primary patch is not viable, choose from these:
-
Roll back to an earlier package build from the local cache:
ls /var/cache/pacman/pkg/ | grep ^wavpack- | tail sudo pacman -U /var/cache/pacman/pkg/wavpack-<old-version>.pkg.tar.zst -
Pin the host to a specific snapshot from the Arch Linux Archive to reproduce a known-good state:
# /etc/pacman.d/mirrorlist (replace all Server lines with): Server = https://archive.archlinux.org/repos/2024/05/01/$repo/os/$arch sudo pacman -Syyuu # downgrade the whole system to that date -
Hold the package temporarily by adding it to
IgnorePkgin/etc/pacman.conf:# /etc/pacman.conf: IgnorePkg = wavpack # Lift the hold by removing the line, then run sudo pacman -Syu -
Enable AppArmor for an extra confinement layer (optional, not enabled by default on Arch):
sudo pacman -S apparmor sudo systemctl enable --now apparmor sudo aa-status -
Take a Btrfs / LVM snapshot before kernel / glibc upgrades for fast rollback:
# Btrfs: sudo btrfs subvolume snapshot / /.snapshots/preupgrade # LVM: sudo lvs sudo lvcreate -s -n preupgrade -L 4G /dev/<vg>/<lv> -
Run the affected service inside a hardened systemd-nspawn or Podman container until the host is patched.
Verification & Acceptance Criteria
All of these should pass after the fix:
pacman -Qi wavpack | grep Version # expected fixed version
pacman -Qkk wavpack # no file changes reported
checkupdates # no further updates pending for the listed CVE packages
systemctl is-active wavpack 2>/dev/null
sudo journalctl -u wavpack --since "5 minutes ago" --no-pager | grep -iE "error|fail" || echo OK
sudo nft list ruleset | head
sudo aa-status 2>/dev/null || echo 'AppArmor not in use'
The original reproduction for wavpack β multiple vulnerabilities (4 CVEs) β patch and remediation guide must not trigger across two consecutive runs.
Rollback Plan
Capture state before any change:
pacman -Qqe > /root/pkglist-pre.txt
sudo cp /var/log/pacman.log /root/pacman.log.pre
# Optional Btrfs/LVM snapshot:
sudo btrfs subvolume snapshot / /.snapshots/preupgrade
sudo lvcreate -s -n preupgrade -L 4G /dev/<vg>/<lv>
To revert if the patch is bad:
# Reinstall the previous build from the local cache:
sudo pacman -U /var/cache/pacman/pkg/wavpack-<old-version>.pkg.tar.zst
# Or pin the whole system to a snapshot in the Arch Linux Archive:
# /etc/pacman.d/mirrorlist:
# Server = https://archive.archlinux.org/repos/2024/05/01/$repo/os/$arch
sudo pacman -Syyuu
sudo systemctl daemon-reload
sudo systemctl restart wavpack
# Or merge the Btrfs / LVM snapshot and reboot:
sudo lvconvert --merge /dev/<vg>/preupgrade && sudo systemctl reboot
Prevention & Hardening
Reduce the chance of this recurring on Arch Linux:
-
Install
pacman-contriband runcheckupdateson a timer so security errata land within hours, not weeks:sudo pacman -S --needed pacman-contrib # Then run checkupdates from a systemd timer or cron: checkupdates && sudo pacman -Syu -
Subscribe to arch-security and watch the Arch Linux security tracker for upstream changes.
-
Run a local mirror for controlled rollouts:
sudo pacman -S --needed rsync rsync -azH --delete rsync://mirrors.kernel.org/archlinux/ /srv/mirror/archlinux/ # Point /etc/pacman.d/mirrorlist on clients at the local mirror. -
Hold sensitive packages via
IgnorePkgin/etc/pacman.confonly when you have a roll-forward plan β do not leave them held indefinitely or you defeat the rolling-release model. -
Monitor file integrity with AIDE:
sudo pacman -S aide sudo aide --init && sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz sudo aide --check -
Enable AppArmor for confinement of network-facing daemons (Arch has no SELinux by default):
sudo pacman -S apparmor sudo systemctl enable --now apparmor sudo aa-status -
Audit AUR helpers and rebuild AUR packages whenever a major repo lib changes (glibc, openssl, icu, etc.).
-
Apply the Arch Linux Security wiki hardening guide and remove unused packages with
pacman -Qtdq.
Related Errors & Cross-Refs
Issues that commonly surface alongside wavpack β multiple vulnerabilities (4 CVEs) β patch and remediation guide: pacman database lock contention, systemd unit ordering cycles, nftables rule drift, partial-upgrade breakage, and kernel taint flags. Useful triage:
sudo pacman -Dk # sanity-check the local pacman DB
systemd-analyze critical-chain
sudo journalctl -p warning -b --no-pager | tail
sudo nft list ruleset
cat /proc/sys/kernel/tainted
checkupdates
View all arch-linux tutorials on the Tutorials Hub →
Browse all common problems & solutions on the Tutorials Hub.
References & Further Reading
Primary reference: Arch ASA ASA-201802-12. Manual pages useful on Arch Linux:
man pacman
man pacman.conf
man systemctl
man journalctl
man nft
man checkupdates
man paccheck
man aa-status
Other resources: wiki.archlinux.org, Arch security tracker, Arch Linux Archive, and per-package notes in /usr/share/doc/wavpack/ for components implicated in wavpack β multiple vulnerabilities (4 CVEs) β patch and remediation guide.