Millions of Gigabyte motherboards appear to be backdoored

“I know how I would do this intentionally and it would look exactly like this. You literally are downloading something from the internet and running it with the highest privileges on the system. It's easy to say 'oops! I didn't know..."

Millions of Gigabyte motherboards appear to be backdoored

Millions of Gigabyte motherboards inside servers and desktops shipped globally may be backdoored. Several hundred different product models from the Taiwanese multinational have been identified dropping an executable Windows binary that is embedded inside of its UEFI firmware. This launches during system startup, before downloading and executing additional payloads insecurely from the internet – a major risk for users that exposes them to easy man-in-the-middle attacks from any adversary.

The potential Gigabyte backdoor appears to be “implementing intentional functionality and would require a firmware update to completely remove it from affected systems” say security researchers at firmware and software supply chain security specialist Eclypsium, who spotted the troubling Gigabyte firmware behaviour via heuristic detections that they regularly run on the firmware of over 20 original equipment manufacturers (OEMs).

The backdoor alert comes after the Gigabyte Server Manager was caught this year allowing a remote attacker using an XSS attack to gain full root/SYSTEM permissions and after it suffered back-to-back ransomware attacks in 2021 that resulted in significant leaks of confidential data. Four Gigabyte vulnerabilities allocated CVEs in 2018 were not accompanied by a security advisory from the company until May 2020 meanwhile. Those bugs (exploited in the wild) were because Gigabyte drivers grant user-mode apps read/write access to memory. (Read a tragi-comic disclosure timeline here to get a sense of how well Gigabyte handled disclosure.)

A Gigabyte backdoor? Or just really bad QA?

A Gigabyte backdoor? Or just really bad QA?
Eclypsium VP John Loucaides: "It’s easy to say ‘oops! I didn't know I was supposed to do that"

Eclypsium VP John Loucaides told The Stack: “This is about as bad as you imagine. If you look at all of the implants that have been in BIOS ever discovered, the set of things that they do is very, very similar to what we saw here, so it was something that worried us substantially…”

The Gigabyte firmware behaviour "uses the same techniques as other OEM backdoor-like features like Computrace backdoor (a.k.a. LoJack DoubleAgent) abused by threat actors and even firmware implants such as Sednit LoJax, MosaicRegressor, Vector-EDK", Eclypsium said in a blog.

Just, refresh me: what's a motherboard?

Motherboards are the main circuit board in a computer, connecting all critical systems and allowing them to communicate with each other. Most now use UEFI firmware to initialise the hardware and load the operating system. UEFI rootkits meanwhile are a cybersecurity nightmare. They execute before the OS, allowing them to “subvert” the OS and security controls running higher up the stack. Since most UEFI code exists on the motherboard instead of storage drives, threats persist even if drives are wiped and the OS is reinstalled. Nasty.

That level of concern saw Eclypsium bring its disclosure forward faster than an industry standard 90-day timeframe after reaching Gigabyte.

The company responded to Eclypsium inside of a week and appears to have taken action on its side, but those affected – a figure given that Gigabyte shipped approximately 1,000 motherboards per hour in 2022, is likely to be in the millions – will need to take their own mitigatory action.

(The Taiwanese multinational did not respond to a request for comment from The Stack made two days before we published. As a result it was not immediately clear if a firmware update could be applied to all affected products. Eclypsium's recommended mitigations are listed at bottom.)


OK, so what's happening exactly?

Eclypsium says its platform's heuristics flagged the behaviour. 

Gigabyte backdoor: Stage 1

The issue starts with a Windows Native Binary executable* embedded inside of UEFI firmware binary in a UEFI firmware volume with the following GUID: AEB1671D-019C-4B3B-BA-00-35-A2-E6-28-04-36.

*8ccbee6f7858ac6b92ce23594c9e2563ebcef59414b5ac13ebebde0c715971b2.bin

This Windows executable is embedded into UEFI firmware and written to disk by firmware as part of the system boot process. During the Driver Execution Environment (DXE) phase of the UEFI firmware boot process, the “WpbtDxe.efi” firmware module uses the above GUID to load  an embedded Windows executable file into memory and installs it into a WPBT ACPI table which will later be loaded and executed by the Windows Session Manager Subsystem (smss.exe) upon Windows startup.

See also: Unique new UEFI firmware attack dubbed "MoonBounce" raises questions

This “WpbtDxe.efi” module checks if the "APP Center Download & Install" feature has been enabled in the BIOS/UEFI Setup before installing the executable into the WPBT ACPI table, which then uses the Windows Native API to write the contents of an embedded executable to the file system at  %SystemRoot%\system32\GigabyteUpdateService.exe

Gigabyte backdoor: Stage 2

The dropped Windows executable is a .NET application that downloads and runs executable payloads from one of the following locations, depending on how it’s been configured (note that the top is http).

The full list of affected products. 

A520M-S2H-rev-1x

A620M-GAMING-X-AX-rev-10

A620M-GAMING-X-rev-10

B360M-DS3H-rev-10

B365-HD3-rev-10

B365M-DS3H-rev-10

B450-AORUS-Elite-V2-rev-1x

B450-AORUS-M-rev-1x

B450-Gaming-X-rev-1x

B450M-AORUS-ELITE-rev-1x

B450M-DS3H-rev-1x

B450M-DS3H-V2-rev-1x

B450M-DS3H-WIFI-rev-1x

B450M-GAMING-rev-1x

B450M-H-rev-1x

B450M-K-rev-10

B450M-S2H-rev-1x

B460-AORUS-PRO-AC-rev-10

B460-HD3-rev-10

B460M-AORUS-PRO-rev-10

B460M-D2V-rev-10

B460M-D3H-rev-10

B460M-DS3H-AC-rev-1x

B460M-DS3H-rev-10

B460M-GAMING-HD-rev-10

B460M-POWER-rev-10

B550-AORUS-ELITE-AX-rev-10

B550-AORUS-ELITE-AX-V2-rev-12

B550-AORUS-ELITE-AX-V2-rev-12-13

B550-AORUS-ELITE-rev-10

B550-AORUS-ELITE-V2-rev-12


B550-GAMING-X-V2-rev-10-11-12

B550-GAMING-X-V2-rev-13

B550-GAMING-X-V2-rev-14

B550-Gaming-X-V2-rev-1x

B550-UD-AC-rev-10-11

B550-UD-AC-rev-12

B550I-AORUS-PRO-AX-rev-10

B550I-AORUS-PRO-AX-rev-11

B550I-AORUS-PRO-AX-rev-12

B550M-AORUS-ELITE-AX-rev-13

B550M-AORUS-ELITE-rev-10-11-12

B550M-AORUS-ELITE-rev-13

B550M-AORUS-ELITE-rev-1x

B550M-AORUS-PRO-AX-rev-10

B550M-AORUS-PRO-AX-rev-11

B550M-AORUS-PRO-P-rev-10

B550M-AORUS-PRO-P-rev-11

B550M-AORUS-PRO-P-rev-12

B550M-AORUS-PRO-rev-10

B550M-DS3H-AC-rev-10-11-12-13

B550M-DS3H-AC-rev-10-11-12-13-14

B550M-DS3H-AC-rev-14

B550M-DS3H-AC-rev-15-16

B550M-DS3H-AC-rev-1x

B550M-DS3H-rev-10-11-12-13

B550M-DS3H-rev-14

B550M-DS3H-rev-15

B550M-DS3H-rev-1x

B550M-GAMING-rev-1x

B550M-K-rev-10

B550M-S2H-rev-1x


B560-AORUS-PRO-AX-rev-10

B560-HD3-rev-1x

B560I-AORUS-PRO-AX-rev-10

B560M-AORUS-ELITE-rev-1x

B560M-AORUS-PRO-AX-rev-1x

B560M-AORUS-PRO-rev-1x

B560M-D2V-rev-1x

B560M-D3H-rev-1x

B560M-DS3H-AC-rev-1x

B560M-DS3H-PLUS-rev-10

B560M-DS3H-V2-rev-10

B560M-GAMING-HD-rev-1x

B560M-H-rev-1x

B560M-H-V2-rev-10

B560M-POWER-rev-1x

B650-AERO-G-rev-10

B650-AORUS-ELITE-AX-rev-1x

B650-AORUS-ELITE-rev-10

B650-AORUS-PRO-AX-rev-1x

B650-GAMING-X-AX-rev-10-11

B650-GAMING-X-AX-rev-1x

B650-GAMING-X-rev-10

B650-GAMING-X-rev-10-11

B650E-AORUS-MASTER-rev-10

B650E-AORUS-TACHYON-rev-10

B650I-AORUS-ULTRA-rev-10

B650M-AORUS-ELITE-AX-rev-1x

B650M-AORUS-ELITE-rev-10

B650M-AORUS-PRO-AX-rev-1x

B650M-C-rev-10

B650M-DS3H-rev-10

B650M-GAMING-X-AX-rev-1x

B650M-K-rev-10

B660-AORUS-ELITE-AX-DDR4-rev-10

B660-AORUS-ELITE-DDR4-rev-10

B660-AORUS-MASTER-DDR4-rev-10

B660-AORUS-MASTER-DDR4-rev-1x

B660-AORUS-MASTER-rev-1x

B660-DS3H-AC-DDR4-rev-10

B660-DS3H-AC-DDR4-rev-10-12

B660-DS3H-AC-DDR4-rev-11

B660-DS3H-AC-rev-10

B660-DS3H-AX-DDR4-rev-10

B660-DS3H-AX-DDR4-rev-10-11

B660-DS3H-DDR4-rev-10

B660-DS3H-DDR4-rev-10-11

B660-GAMING-X-AX-DDR4-rev-10

B660-GAMING-X-DDR4-rev-10

B660-GAMING-X-rev-10

B660I-AORUS-PRO-DDR4-rev-1x

B660M-AORUS-ELITE-AX-DDR4-rev-10

B660M-AORUS-ELITE-AX-DDR4-rev-1x

B660M-AORUS-ELITE-DDR4-rev-10

B660M-AORUS-ELITE-DDR4-rev-1x

B660M-AORUS-PRO-AX-DDR4-rev-1x

B660M-AORUS-PRO-AX-rev-1x

B660M-AORUS-PRO-DDR4-rev-10

B660M-AORUS-PRO-rev-10

B660M-D2H-DDR4-rev-10

B660M-D3H-DDR4-rev-10

B660M-DS3H-AX-DDR4-rev-1x

B660M-DS3H-DDR4-rev-10

B660M-GAMING-AC-DDR4-rev-10

B660M-GAMING-AC-DDR4-rev-1x

B660M-GAMING-AC-rev-10

B660M-GAMING-DDR4-rev-10

B660M-GAMING-X-AX-DDR4-rev-1x

B660M-GAMING-X-AX-rev-10

B660M-GAMING-X-DDR4-rev-10

B660M-GAMING-X-DDR4-rev-1x

B660M-GAMING-X-rev-10

B660M-POWER-DDR4-rev-10

B760M-POWER-rev-10

GA-B560M-D3P-rev-10

H510M-K-rev-10

H510M-K-rev-11

H510M-S2-rev-10-11-12

H510M-S2-rev-13

H510M-S2H-rev-10

H510M-S2H-V2-rev-10

H510M-S2H-V2-rev-11

H510M-S2H-V2-rev-13

H510M-S2P-rev-10

H510M-S2P-rev-10-12

H610I-DDR4-rev-10

H610M-H-DDR4-rev-10

H610M-H-DDR4-rev-11

H610M-H-DDR4-rev-11-13

H610M-H-DDR4-rev-12

H610M-H-rev-10

H610M-H-V2-DDR4-rev-10

H610M-HD3P-rev-10

H610M-HD3P-rev-20

H610M-K-DDR4-rev-10

H610M-S2-DDR4-rev-10

H610M-S2-DDR4-rev-11

H610M-S2-DDR4-rev-11-13

H610M-S2-DDR4-rev-12

H610M-S2-rev-10

H610M-S2-V2-DDR4-rev-10

H610M-S2H-DDR4-rev-10

H610M-S2H-DDR4-rev-11

H610M-S2H-DDR4-rev-11-13

H610M-S2H-DDR4-rev-12

H610M-S2H-rev-10

H610M-S2H-V2-DDR4-rev-10

N4120I-H-rev-10

N5105I-H-rev-10

Q670M-D3H-DDR4-rev-10

W480M-VISION-W-rev-10

X570S-AORUS-ELITE-AX-rev-11

X570S-AORUS-ELITE-rev-10

X570S-AORUS-MASTER-rev-10

X570S-AORUS-PRO-AX-rev-10

X570S-AORUS-PRO-AX-rev-11

X570S-GAMING-X-rev-10

X570S-UD-rev-10

X570SI-AORUS-PRO-AX-rev-10

X570SI-AORUS-PRO-AX-rev-11

X670-AORUS-ELITE-AX-rev-10

X670-AORUS-ELITE-AX-rev-11

X670-GAMING-X-AX-rev-10

X670E-AORUS-MASTER-rev-10

X670E-AORUS-XTREME-rev-10

Z590-AORUS-ELITE-AX-rev-10

Z590-AORUS-ELITE-rev-10

Z590-AORUS-MASTER-rev-10

Z590-AORUS-PRO-AX-rev-10

Z590-AORUS-TACHYON-rev-10

Z590-AORUS-ULTRA-rev-10

Z590-D-rev-10

Z590-GAMING-X-rev-1x

Z590-UD-AC-rev-1x

Z590-UD-rev-10

Z590I-AORUS-ULTRA-rev-10

Z690-AERO-D-rev-10

Z690-AERO-D-rev-1x

Z690-AERO-G-DDR4-rev-10

Z690-AERO-G-DDR4-rev-1x

Z690-AERO-G-rev-10

Z690-AERO-G-rev-1x

Z690-AORUS-ELITE-AX-DDR4-rev-10

Z690-AORUS-ELITE-AX-DDR4-rev-1x

Z690-AORUS-ELITE-AX-DDR4-V2-rev-10

Z690-AORUS-ELITE-AX-rev-10

Z690-AORUS-ELITE-AX-rev-14

Z690-AORUS-ELITE-AX-rev-1x

Z690-AORUS-ELITE-DDR4-rev-10

Z690-AORUS-ELITE-DDR4-rev-1x

Z690-AORUS-ELITE-DDR4-V2-rev-10

Z690-AORUS-ELITE-rev-10

Z690-AORUS-ELITE-STEALTH-rev-10

Z690-AORUS-MASTER-rev-10

Z690-AORUS-MASTER-rev-1x

Z690-AORUS-PRO-DDR4-rev-10

Z690-AORUS-PRO-DDR4-rev-1x

Z690-AORUS-PRO-rev-10

Z690-AORUS-PRO-rev-1x

Z690-AORUS-TACHYON-rev-10

Z690-AORUS-ULTRA-rev-10

Z690-AORUS-ULTRA-rev-1x

Z690-AORUS-XTREME-rev-10

Z690-AORUS-XTREME-WATERFORCE-rev-10

Z690-GAMING-X-DDR4-rev-10

Z690-GAMING-X-DDR4-rev-11

Z690-GAMING-X-DDR4-V2-rev-10

Z690-GAMING-X-rev-10

Z690-GAMING-X-rev-10-11

Z690-UD-AC-rev-10

Z690-UD-AX-DDR4-rev-10

Z690-UD-AX-DDR4-rev-1x

Z690-UD-AX-DDR4-V2-rev-10

Z690-UD-AX-rev-10

Z690-UD-AX-rev-1x

Z690-UD-DDR4-rev-10

Z690-UD-DDR4-rev-1x

Z690-UD-DDR4-V2-rev-10

Z690-UD-rev-10

Z690-UD-rev-1x

Z690I-AORUS-ULTRA-DDR4-rev-10

Z690I-AORUS-ULTRA-LITE-DDR4-rev-10

Z690I-AORUS-ULTRA-LITE-rev-10

Z690I-AORUS-ULTRA-PLUS-DDR4-rev-10

Z690I-AORUS-ULTRA-PLUS-rev-10

Z690I-AORUS-ULTRA-rev-10

Z690M-AORUS-ELITE-AX-DDR4-rev-10

Z690M-AORUS-ELITE-AX-DDR4-rev-1x

Z690M-AORUS-ELITE-DDR4-rev-10

Z690M-DS3H-DDR4-rev-10

Z790-AERO-G-rev-10

Z790-AORUS-ELITE-AX-DDR4-rev-10

Z790-AORUS-ELITE-AX-rev-10

Z790-AORUS-ELITE-AX-rev-11

As Eclypsium notes: “Plain HTTP should never be used for updating privileged code as it is easily compromised via Machine-in-the-middle (MITM) attacks. However, we noticed that even when using the HTTPS-enabled options, the remote server certificate validation is not implemented correctly. Therefore, MITM is possible in that case also... any threat actor can use this to persistently infect vulnerable systems either via MITM or...compromised router, compromised device on the same network segment, DNS poisoning, or other network manipulation."

(This said, Gigabyte does have documentation on its website for this feature. It is conceivable that the behaviour is legitimate; i.e. it drops the executable Windows binary to help it pull updates in future and someone forgot to secure how then does that latter step. Hanlon's Razor may apply.)

Asked by The Stack if the security issue was conceivably the result of a severe developer error that went unseen by Gigabyte, Loucaides – previously a technical team lead for the US federal government and then on the product security incident response team at Intel – said: “I know exactly how I would do this intentionally and it would look exactly like this.

"It’s easy to say ‘oops! I didn't know I was supposed to do that!’ but this is the sort of code that you should have been paying a lot more attention to. You literally are downloading something from the internet and running it with the highest privileges on the system" he emphasised on a May 30 call.

"I don't know, maybe that's the part that I'd look at first?”

He added: "Even in the best case scenario, if Gigabyte responds perfectly and does everything right, from here on out, realistically most people probably aren't installing that update; as a result, these things are going to be vulnerable until people stop using them..."

UPDATED with further input from John Loucaides following some questions from The Stack on the remote server certificate validation failures and the signature verification or otherwise of the executable. Answers below: "In HTTPS, you need to validate the certificate as well as the matching domain against what the server actually sent. The code fails to implement these checks. Therefore, any certificate can be used to complete the TLS session and allow the download. This is one of the specific items that GB fixed in their update...

"The MS AuthentiCode signature on most EXE files simply allows windows to run it without popping up something, and anyone can easily get something signed. That said, the kind of attacks we are referring to here are "living off the land" attacks where an existing admin tool gets reused in a capacity like this. In that case, it's already signed and the GB feature is abused to download and cause it to run early in boot and with privileges. When we say "normally downloaded" we mean the official Gigabyte files from their website.. as opposed to a malicious file that you might download when spoofing it, which is permitted by the above bug.
This is the second fix that GB implemented. They're checking for their particular signature on the downloaded file..."

Help! This sounds like a car crash. What should I do?

Eclypsium recommends that admins inspect and disable the "APP Center Download & Install" feature in UEFI/BIOS Setup on Gigabyte systems and set a BIOS password to deter malicious changes.Administrators can also block the following URLs: