≡ Menu


FreeBSD Kernel Critical Update: arc4random predictable sequence vulnerability

FreeBSD today released a core (kernel) patched to plug "arc4random predictable sequence vulnerability" security hole in its operating systems version 6.x and 7.x stable release. When the arc4random random number generator is initialized, there may be inadequate entropy to meet the needs of kernel systems which rely on arc4random; and it may take up to 5 minutes before arc4random is reseeded with secure entropy from the Yarrow random number generator. All security-related kernel subsystems that rely on a quality random number generator are subject to a wide range of possible attacks. This update has been rated as having important security impact.

More about arc4random

arc4random(9) is a generic-purpose random number generator based on the key stream generator of the RC4 cipher. It is expected to be cryptographically strong, and used throughout the FreeBSD kernel for a variety of purposes, some of which rely on its cryptographic strength. arc4random(9) is periodically reseeded with entropy from the FreeBSD kernel's Yarrow random number generator, which gathers entropy from a variety of sources including hardware interrupts. During the boot process, additional entropy is provided to the Yarrow random number generator from userland, helping to ensure that adequate entropy is present for cryptographic purposes.


All security-related kernel subsystems that rely on a quality random number generator are subject to a wide range of possible attacks for the 300 seconds after boot or until 64k of random data is consumed.

How do I patch my FreeBSD system?

Upgrade your vulnerable system to 6-STABLE, or 7-STABLE, or to the RELENG_7_0, or RELENG_6_3 security branch using csup command. This will fix the problem.

How to patch current system?

The following patches have been verified to apply to FreeBSD 6.3 and 7.0 systems.

Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility.

Download FreeBSD 7.x patch

# cd /tmp
# fetch http://security.FreeBSD.org/patches/SA-08:11/arc4random.patch
# fetch http://security.FreeBSD.org/patches/SA-08:11/arc4random.patch.asc

Verify patch, enter:
# gpg --verify arc4random.patch.asc arc4random.patch

To apply the patch, enter:
# cd /usr/src
# patch /tmp/arc4random.patch

Download FreeBSD 6.x patch

# cd /tmp
# fetch http://security.FreeBSD.org/patches/SA-08:11/arc4random6x.patch
# fetch http://security.FreeBSD.org/patches/SA-08:11/arc4random6x.patch.asc

Verify patch, enter:
# gpg --verify arc4random6x.patch.asc arc4random6x.patch
To apply the patch, enter:
# cd /usr/src
# patch /tmp/arc4random6x.patch

Recompile your kernel

Now recompile your kernel:
# make kernel KERNCONF=GENERIC
# make installkernel KERNCONF=GENERIC

Replace GENERIC with your actual kernel name. Finally, reboot the system:
# reboot
Make sure everything is working fine, enter:
# uname -a
# tail -f /var/log/messages
# tail -f /path/to/other/log/files
# sockstat

Please see FreeBSD handbook for more information.