Backdoor in Zyxel Products
eyecontrol.nl
eyecontrol.nl
Also translated as:
In the name of "improving security" we created a backdoor, which is known throughout the entire industry as "removing all security". We are very sorry we were caught so easily.
It does not take much to understand this was a terrible idea. Or that there are so many better ways to build and deploy automatic updates. You absolutely do not need to be able to control a machine remotely to deploy automatic updates. But counting the ways they went wrong building this update system makes it extremely hard to believe that was the intent.
> After a thorough investigation, we’ve identified the vulnerable products that are within their warranty and support period and are releasing firmware patches to address the issue, as shown in the table below.
That they went to the effort of identifying their minimal viable liability and all released patches for that, makes it even more disingenuous.
This is a company whose business is supposed to be about enhancing security. They should know better.
Sorry, but how did you figure it out? Can we hide it better next time?
Except they don't.
Having owned a Zyxel NAS (comically named "NSA" back then), i can tell you their firmware, updates and support are even worse than you can imagine.
After this NAS, i vowed to never ever buy or touch any kind of Zyxel hardware again.
Huh? How are you supposed to deploy the update then, or make it effective? I think the definition of "remotely control" differs somewhat from mine.
I could agree that you don't need to uniquely address a remote machine to deploy updates, but having control over the machine (if only for a moment) is the purpose of the update process.
The machine _itself_ can check for updates, and issue _only_ those commands that are _necessary_. You don't need complete control over a machine for an update mechanism.
But the entire update infrastructure has issues... Firmware binaries downloaded over unprotected basic FTP... No checksums... No authenticated signatures... And arbitrary commands issued at the root level.
The problem with this statement is that the machine doesn't know what sequence of actions is necessary to put the system into the "updated" state. If it knew, it wouldn't have to contact anything in order to update itself. It would already have known.
Eh? That's how most package managers work. They only issue a very small number of commands to put them into an "updated" state. They don't generally do arbitrary things.
For example, if we take a look into aptitude, the deb packages it eventually fetches after running various authentications, contains:
+ A directory listing. (Contents-<arch>.gz)
+ Paths and checksums. (Release)
+ Signing information.
It doesn't have an arbitrary listing of commands to put it into the "updated" set - that's already decided by the format. The machine _does_ know the sequence of actions that is necessary. You don't need some kind of Turing complete monstrosity that can do absolutely anything to update it.
In the case of a _firmware update_ that's even simpler! Most of the time you're either replacing a kernel, or flashing the firmware to a pre-decided memory address. Both of those actions are decided long before you even begin issuing updates.
Still with automatic updates you have to trust the vendor. However, with what they did updates/commands could be coming from anyone willing to dump device firmware.
"I was surprised to find a user account 'zyfwp' with a password hash"
"this account seemed to work on both the SSH and web interface"
"Globally, more than 100.000 devices have exposed their web interface to the internet"
Linux manages to auto update itself by fetching updates from the outside, when IT wants to do so.
Zyxel tried to add a function where THEY can access devices over the internet and do who-knows-what whenever they wanted.
And they did such a poor job of that, that they managed to give access to the devices to everybody.
We've had a serious security vulnerability introduced in the firmware release, and there were no negative consequences for Zyxel at all, other than some bad press (and it's probably a fairly small amount of the bad press). What I would like to see is a post-mortem with mitigations -- how did this happen, and how will they prevent similar occurrences in the future. Instead, most likely nothing will happen. And I will not be surprised if the "firmware update account" will be back in the next release, probably still insecure, but hidden better so that random researchers won't stumble on it.
I wish there were some sort of liability for the manufacturers for the cases like those. For example, if a person runs a red light by accident and get caught, they get a fine and an insurance premium increase. We need something like this for IOT suppliers as well.
> 2020-12-02: Zyxel requests more information about how the vulnerability was discovered
Hmm
The industry is pretty messed up and it sometimes feels like researchers/pen testers/bug hunters are effectively subsidizing and protecting shitty security practises.
In my opinion, this is a result of there being little/no consequences of being breached due to incompetence. Zyxel isn’t losing anything from this, and has no incentives to be better.
https://www.zyxel.com/us/en/support/security_advisories.shtm...
Do a search for "cve zyxel"
Took me a while to narrow it down to the switch, and I'm still not really sure what was happening, but it hasn't come up again since I disconnected it.
E.g., they get to review all hw / sw / firmware, and if appropriate make a public affirmation that they could find no vulnerabilities for that stack?
See e.g. the Infineon ROCA flaw that FIPS certification didn't catch (even though that code reeked of them being too clever, and should've gone through proper cryptanalysis).
See: flaws in the FIPS YubiKey (specific to that version! The certification requirements introduced vulns!)
See: every audit of every terrible CA ever.
[1] Typically pfSense, though it's just a generic Eero setup for now while I reconfigure some stuff33333333
This seems more like a mistake, particularly since they included the password in plaintext.
It seems like without intent, anything can be called a "backdoor". My browser receives automatic updates, and Mozilla could push an update that gives them remote access to my user account. But I don't think anyone would say Mozilla has "backdoored" Firefox.
But even if we choose to believe that, it's not wrong to say that it was secret. "Secret" typically means "without the knowledge of others". If I forget the secret combination to my safe, it doesn't become "not a secret" because of that.
In your example, Mozilla has presumably made public that they are using remote updates. So it can hardly be described as secret.
This is not a backdoor, this is frontdoor, plain and simple.
The modem brands I still remember are Zyxel and US Robotics.
You want a ready-to-use hardware package? Maybe a UniFi Security Gateway, Netgate (pfSense) appliances fit in the price range.