BSDSec

deadsimple BSD Security Advisories and Announcements

FreeBSD Errata Notice FreeBSD-EN-25:12.efi

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

=============================================================================
FreeBSD-EN-25:12.efi                                            Errata Notice
                                                          The FreeBSD Project

Topic:          bsdinstall(8) not copying the correct loader on systems with
                IA32 UEFI firmware.

Category:       core
Module:         efi
Announced:      2025-08-08
Affects:        FreeBSD 14.3
Corrected:      2025-06-16 23:07:25 UTC (stable/14, 14.3-STABLE)
                2025-08-08 00:39:02 UTC (releng/14.3, 14.3-RELEASE-p2)

For general information regarding FreeBSD Errata Notices and Security
Advisories, including descriptions of the fields above, security
branches, and the following sections, please visit
<URL:https://security.FreeBSD.org/>.

I.   Background

bsdinstall(8) checks the machdep.efi_arch sysctl and depending on its value,
it either copies loader.efi or loader_ia32.efi.

II.  Problem Description

The commit that added the machdep.efi_arch sysctl was not MFCed in time for
releng/14.3, however, the commit that added support for loader_ia32.efi in
bsdinstall(8) was.  The result is that bsdinstall(8) always copies loader.efi.

III. Impact

bsdinstall(8) copying loader.efi regardless of the firmware's architecture
results in an unbootable system after install for systems which expect a
32-bit UEFI loader.

IV.  Workaround

loader_ia32.efi can be manually copied to /boot/efi/efi/boot/bootia32.efi
where the EFI boot partition is mounted at /boot/efi.

Systems which have 64-bit UEFI firmware are unaffected.  Non x86 systems are
likewise unaffected.

V.   Solution

Upgrade your system to a supported FreeBSD stable or release / security
branch (releng) dated after the correction date and reboot the system.

Perform one of the following:

1) To update your system via a binary patch:

Systems running a RELEASE version of FreeBSD on the amd64 or arm64 platforms,
or the i386 platform on FreeBSD 13, can be updated via the freebsd-update(8)
utility:

# freebsd-update fetch
# freebsd-update install
# reboot

2) To update your system via a source code patch:

The following patches have been verified to apply to the applicable
FreeBSD release branches.

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

# fetch https://security.FreeBSD.org/patches/EN-25:12/efi.patch
# fetch https://security.FreeBSD.org/patches/EN-25:12/efi.patch.asc
# gpg --verify efi.patch.asc

b) Apply the patch.  Execute the following commands as root:

# cd /usr/src
# patch < /path/to/patch

c) Recompile your kernel as described in
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
system.

VI.  Correction details

This issue is corrected as of the corresponding Git commit hash in the
following stable and release branches:

Branch/path                             Hash                     Revision
- -------------------------------------------------------------------------
stable/14/                              0e8890a425bc    stable/14-n271710
releng/14.3/                            ce4fe4c4bfcd  releng/14.3-n271435
- -------------------------------------------------------------------------

Run the following command to see which files were modified by a
particular commit:

# git show --stat <commit hash>

Or visit the following URL, replacing NNNNNN with the hash:

<URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN>

To determine the commit count in a working tree (for comparison against
nNNNNNN in the table above), run:

# git rev-list --count --first-parent HEAD

VII. References

The latest revision of this advisory is available at
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-25:12.efi.asc>
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEthUnfoEIffdcgYM7bljekB8AGu8FAmiVShUACgkQbljekB8A
Gu/B+xAAy3AcOLVmDr4YNs0PXwENZ5Xqg00TYgSXSRl/iA+wk4h7XFcaytdVUgk5
nX0dLZGTyZoQpmdiX8HsVht95XONfdhwoPxUtWFTY9SWBYh859IjFHTpr8E/MXHH
lAmbs7H0W/lw4Fqm6xs6+esXitaBE2Q3rgl0LFI0BbEfHdGiNz/qWYXR2U+qVAPY
5aiC9tcvRU3pNLLN7XGIophVjL10k1iuwzQeKGDopzBx7qVFklRSDb1oe1BawDYh
jkn+mqzpkgqEIVdgsZSKGO5lpEMCtDwgyA7uIik/QE525oNVpsWfJ/aHbDapB+1P
pFYH/yWpI/eT3DVMnTiNhCBkBcm0pCWJZlLTKcLU19fm8wMxq01H5FqqueBLrh39
LztN/xnmdpAoG1AytICoV86gbRy4fnCbbbhLOLWhPVfc6q2UyJUHa1LjR3LtSeNG
0f+evVM81IfG0Niynqcy/DEIem0aamFUJhqU6aJISj+aVGd9PRp2JhVllbkiR7H/
xd3dnEHtLt6wCJh1PlK+3Sa2WuSDDRWo1WCmx1xvUI+5VWl4HL8f+YoQl8aOu0DR
XnpxyAqD+4uTXiQOhf+9HuteoTq9aePbUef5qkSQXXxOtohUL6xvq62Zb1HU6Jbs
ZpGd15oa4o4yJXTu1lEE/D/dSZhtX2rACh+GzEW9vt6lIUZENe0=7zQB
-----END PGP SIGNATURE-----