2.25-r0📖 ~4 min read • Source: Alpine secdb entry — alpine 2.25-r0
Related CVEs: CVE-2021-38370 CVE-2020-14929
Upstream summary: Alpine community repository for vedge ships alpine 2.25-r0 which addresses CVE-2021-38370.
Table of contents
Symptom & Impact
On Alpine Linux edge hosts that have alpine installed, operators see behaviour consistent with Alpine secdb entry — alpine 2.25-r0: apk audit --system flags the package, OpenRC services that link against alpine log errors to /var/log/messages, and — for security-rated fixes — the host remains exposed to the CVE set above. Because Alpine is musl-based and ships in many container images, the same vulnerable build often propagates into every layer that FROM alpine:edge downstream.
Environment & Reproduction
Reproduction targets Alpine Linux edge. Confirm release and the installed package:
cat /etc/alpine-release
cat /etc/os-release
apk info -v alpine
apk policy alpine
apk version | grep -w alpine || true
Trigger the workflow that exposes alpine — multiple vulnerabilities (2 CVEs) — patch and remediation guide while collecting:
sudo tail -200 /var/log/messages # busybox syslog / syslog-ng
sudo dmesg | tail -200
sudo rc-service alpine status 2>/dev/null || true
sudo rc-status
sudo apk audit --system
Root Cause Analysis
Root cause is recorded in Alpine secdb entry — alpine 2.25-r0. Alpine maintainers shipped the fix in 2.25-r0 for Alpine Linux edge; running an older build leaves the host exposed. Correlate apk transactions with the kernel ring buffer and OpenRC logs:
sudo tail -200 /var/log/apk.log
apk info -v alpine
apk info -L alpine | head
sudo dmesg --ctime | tail -100
ls -lt /var/log/rc.log 2>/dev/null && sudo tail -100 /var/log/rc.log
Quick Triage
Run these on Alpine Linux edge to capture the current state of alpine:
apk info -v alpine # installed version
apk policy alpine # repository / pin info
apk version -l '<' # all packages with newer candidates
sudo apk audit --system
apk info -L alpine | head # files shipped by alpine
sudo rc-status # OpenRC runtime state
sudo rc-update show # services per runlevel
sudo iptables -L -n -v --line-numbers 2>/dev/null | head -40
sudo nft list ruleset 2>/dev/null | head -40
# If alpine ships an OpenRC service (init name may differ from pkg name,
# e.g. nginx, postgresql, php-fpm83):
ls /etc/init.d/ | grep -i alpine | head
Step-by-Step Diagnosis
-
List OpenRC services and any failed ones.
sudo rc-status sudo rc-status --crashed -
Inspect logs for
alpine.sudo grep -i alpine /var/log/messages | tail -200 sudo dmesg | tail -200 -
Inspect firewall posture (Alpine ships iptables/nftables or the awall front-end).
sudo iptables -L -n -v --line-numbers sudo nft list ruleset sudo awall list 2>/dev/null || true -
Verify
alpineintegrity and reinstall if files are altered.sudo apk verify alpine sudo apk fix alpine -
Confirm the current vs. available version for
alpine.apk version | grep -w alpine || true apk policy alpine -
Correlate findings with
/var/log/apk.logand Alpine secdb entry — alpine 2.25-r0 to pin the change that introduced alpine — multiple vulnerabilities (2 CVEs) — patch and remediation guide.
Solution – Primary Fix
Apply the corrective apk transaction referenced by Alpine secdb entry — alpine 2.25-r0, then restart affected OpenRC services:
sudo apk update
sudo apk upgrade --available --no-cache # apply all repository updates
# Or target a single package:
sudo apk add --upgrade alpine
apk info -v alpine # confirm new version
sudo rc-service alpine restart 2>/dev/null || true
sudo rc-update add alpine default 2>/dev/null || true
sudo rc-service alpine status 2>/dev/null || true
For kernel / musl / openssl updates a reboot is required (Alpine has no live-patching equivalent of kpatch):
apk info -v linux-lts linux-virt 2>/dev/null
sudo sync && sudo reboot
# On Alpine diskless / lbu installations, commit the change first:
sudo lbu status
sudo lbu commit -d
Need help rolling this patch across an Alpine fleet? Our IT Solutions & Services team manages Alpine Linux container fleets and bare-metal edge installs with apk-based CI patching pipelines. Get in touch for a free consultation.
Solution – Alternative Approaches
If the primary patch is not viable, choose from these:
-
Roll back to a known-good version by installing a pinned version from
/etc/apk/cache:ls /etc/apk/cache/ | head sudo apk add alpine=2.25-r0 # downgrade / pin to a specific version sudo apk fix -
Hold the package so apk cannot upgrade it during the next
apk upgrade:echo 'alpine' | sudo tee -a /etc/apk/world # To pin a version, edit /etc/apk/world to read: alpine=2.25-r0 sudo apk fix -
Pull the fix from
edgewhile staying on a stable release (tagged repo):echo '@edge https://dl-cdn.alpinelinux.org/alpine/edge/main' | sudo tee -a /etc/apk/repositories sudo apk add alpine@edge -
Use awall to ring-fence the affected service while you patch:
sudo apk add awall sudo awall list sudo awall enable <policy> sudo awall activate -
Take an lbu snapshot of
/etcbefore kernel / musl upgrades (Alpine diskless mode):sudo lbu status sudo lbu package /var/backups/alpine-pre-upgrade.apkovl.tar.gz # Revert later by booting from media and restoring the apkovl tarball. -
For container deployments, rebuild the image from a patched base:
docker run --rm alpine:edge apk version | grep -w alpine || true # In your Dockerfile, force a refresh: RUN apk add --no-cache --upgrade alpine
Verification & Acceptance Criteria
All of these should pass after the fix:
apk info -v alpine # expected fixed version
sudo apk audit --system # the package no longer flagged
sudo apk verify alpine
sudo rc-service alpine status 2>/dev/null || true
sudo grep -iE 'error|fail' /var/log/messages | grep -i alpine | tail -50 || echo OK
sudo iptables -L -n -v | head -20
sudo nft list ruleset | head -20
The original reproduction for alpine — multiple vulnerabilities (2 CVEs) — patch and remediation guide must not trigger across two consecutive runs.
Rollback Plan
Capture state before any change:
apk info -v > /root/apk-pre.txt
sudo cp /etc/apk/world /root/world-pre
sudo cp -a /var/log/apk.log /root/apk.log-pre 2>/dev/null || true
# On lbu / diskless installs, snapshot the apkovl:
sudo lbu package /var/backups/alpine-pre-upgrade.apkovl.tar.gz
To revert if the patch is bad:
# Reinstall the previous version from /etc/apk/cache (must be mounted):
ls /etc/apk/cache/ | head
sudo apk add alpine=<previous-version>
sudo rc-service alpine restart 2>/dev/null || true
# Or restore the saved apkovl on diskless:
sudo tar -xzf /var/backups/alpine-pre-upgrade.apkovl.tar.gz -C /
sudo reboot
Prevention & Hardening
Reduce the chance of this recurring on Alpine Linux edge:
-
Run
apk audit --systemon a schedule and fail builds on new findings:# /etc/periodic/daily/apk-audit #!/bin/sh apk update -q && apk audit --system > /var/log/apk-audit.log -
Mount
/etc/apk/cacheso previous versions are always available for rollback:sudo mkdir -p /etc/apk/cache sudo setup-apkcache /etc/apk/cache -
Subscribe to alpine-security and watch security.alpinelinux.org for new CVE entries.
-
Mirror the Alpine repository locally for controlled rollouts:
sudo apk add rsync rsync -av --delete rsync://rsync.alpinelinux.org/alpine/v3.20/main/ /srv/mirror/v3.20/main/ rsync -av --delete rsync://rsync.alpinelinux.org/alpine/v3.20/community/ /srv/mirror/v3.20/community/ -
Pin sensitive packages in
/etc/apk/worldwith explicit versions so apk cannot silently bump them. -
Alpine does not enable mandatory-access-control frameworks (such as AppArmor) by default; consult [grsecurity/PaX] or [seccomp profile] in container deployments and apply CIS-style hardening for Alpine Linux edge (disable unused OpenRC services, set
rc_logger=YESin/etc/rc.conf, mount/tmpwithnosuid,nodev). -
For container fleets, scan images in CI:
docker run --rm alpine:edge apk version trivy image --severity HIGH,CRITICAL myrepo/app:tag
Related Errors & Cross-Refs
Issues that commonly surface alongside alpine — multiple vulnerabilities (2 CVEs) — patch and remediation guide: apk lock contention (/var/lib/apk/lock), OpenRC dependency cycles, busybox applet quirks vs. coreutils, and musl-vs-glibc behavioural differences. Useful triage:
sudo apk fix
sudo rc-status --crashed
ls /var/lib/apk/lock 2>/dev/null
sudo grep -i busybox /var/log/messages | tail
cat /proc/sys/kernel/tainted
View all alpine-edge tutorials on the Tutorials Hub →
Browse all common problems & solutions on the Tutorials Hub.
References & Further Reading
Primary reference: Alpine secdb entry — alpine 2.25-r0. Manual pages useful on Alpine Linux edge:
apk --help
man apk
man rc-service
man rc-update
man rc-status
man iptables
man nft
man awall
man lbu
Other resources: wiki.alpinelinux.org, security.alpinelinux.org, pkgs.alpinelinux.org, and per-package notes in /usr/share/doc/alpine/ for components implicated in alpine — multiple vulnerabilities (2 CVEs) — patch and remediation guide.