Issue
- Resolve system crashes or freezes (kernel BUG or panic with "Missing ENDBR") caused by Indirect Branch Tracking (IBT) when running ESET Linux applications
- Disable Indirect Branch Tracking (IBT) on Linux distributions
Details
Click to expand
ESET Linux applications may be affected on systems where Intel Control-flow Enforcement Technology (CET) with Indirect Branch Tracking (IBT) is enabled in the Linux kernel. On certain Intel CPUs and Linux distributions (for example, Debian 13), this can result in a kernel BUG or panic, which appears to the user as a system crash or freeze.
Control-flow Enforcement Technology (CET) is a hardware-based security feature implemented on modern Intel CPUs to mitigate control-flow hijacking attacks. One of its components, Indirect Branch Tracking (IBT), enforces validation of indirect branches.
When Indirect Branch Tracking (IBT) is enabled:
- All valid targets of indirect branches must begin with a special instruction (
ENDBR64on x86-64 systems;ENDBR32on x86 systems) - These instructions act as landing pads for indirect calls and jumps
- If an indirect branch targets code that does not begin with an
ENDBRinstruction, the CPU raises a control-protection fault (#CP)
Linux kernels with Control-flow Enforcement Technology (CET) support enabled (for example, via CONFIG_X86_CET) enforce Indirect Branch Tracking (IBT) for both kernel code and loadable kernel modules. When ESET Linux applications are used in such environments, the kernel may encounter a control-protection fault during execution and terminate with a kernel BUG or panic.
This typically results in a system crash or freeze, with kernel log messages similar to:
Missing ENDBR: __x64_sys_close+0x9/0x80
kernel BUG at arch/x86/kernel/cet.c:102!
Support for Control-flow Enforcement Technology (CET) with Indirect Branch Tracking (IBT), including the required ENDBR instructions, is planned for future releases of ESET Linux applications.
Solution
Disable Indirect Branch Tracking (IBT) on Linux distributions
To disable Indirect Branch Tracking (IBT), add ibt=off to Kernel boot command line parameters through the GRUB configuration:
-
Open the GRUB configuration file (
/etc/default/grub). -
In the GRUB configuration file, locate the
GRUB_CMDLINE_LINUX_DEFAULTvariable and addibt=offto the existing kernel parameters. For example:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ibt=off" -
Rebuild the GRUB configuration.
-
Debian-based systems (Ubuntu, Linux Mint, Debian):
sudo update-grub -
Red Hat Enterprise Linux:
-
BIOS-based machines:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
UEFI-based machines:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
-
-
-
Reboot the system to apply the change.