(Credit: xkcd)
Google Tricking Users to Download WebP Images. WebP is Hazardous Legally and for Computer Security.
Some months back, Reddit handed me some WebP files, and I didn’t realize it at the time.
Months later, the problem has grown much worse and has apparently been spreading to other sites, due to caching servers.
This is worth mentioning since this week, Google’s WebP library had an emergency zero day vulnerability that enabled malicious code execution.
How serious was this emergency? Even Microsoft patched Edge on Windows 7.
This library is in Web browsers, photo manipulation tools, all sorts of things, and would not be contained even by the best sandbox, or even disabling active content in the Web browsers!
But wait, there’s more.
WebP is not widely used, and there are many articles like this one from LifeHacker which call WebP a pesky annoyance and show people how to convert them back to a legitimate image format.
WebP isn’t “better” enough in a compression efficacy sense to replace 1992 JPEG files. So almost everyone uses the 1992 JPEG standard to create image files.
They work everywhere, they’re fine. Why not?
Even though JPEG was finalized as a standard in 1992, and most of the patents went back to 1986, there were still patent lawsuits involving it in the courts, until 2013!
In just one example I found on Wikipedia, a patent troll claiming to have just one patent that JPEG infringed on extracted $104 million from nearly three dozen companies it shook down, before the patent was invalidated by victims who refused to pay and counter-sued, with the assistance of the JPEG Committee.
If the legal nightmare from software patents can go on for that long, and people who didn’t even invent the standard can sue you, why is WebM or AVIF (which is newer yet, and based off the AV1 video codec), “really safe” in the legal sense?
When you ask how Google or the “Alliance for Open Media” can guarantee that their redundant formats really are royalty-free, they just stop answering questions and disappear.
So now, thanks to Google and AOM, we have the proliferation of not just one, but two new formats that are not clearly “better” in the sense that anyone is using them willingly, and are dangerous in the legal and computer security sense of the word, and will be for decades.
Potentially, the patent lawsuits for AVIF will be finished in the 2040s, but by then, Google (if they’re still around) will have released at least five more pointless replacements for JPEG files.
Since Chrome will put it in and Google will deal with the lawsuits later, it will become a “standard” in the sense that everyone else with Web browsing software has to put it in to be compatible with Chrome and also risk being sued. Then everyone hosting the files on their Web site too.
Nothing has replaced JPEG for the same reason people still make new MP3 files.
Are they ideal? No.
But they were the first thing that were good enough to do the job, they’re legally safe, and the code has been around long enough to have been debugged and made predictable.
And they occupy a lot of mindshare.
Modern optimized JPEG encoders are quite good. It is, basically the image format of the Web and a lot of work has been put into giving people good encoders and working the bugs out of the decoders and making the decoders incredibly fast! On basically any hardware!
If I make a new JPEG using an optimized encoder on my laptop right now, you could open it on Windows 3.1. If you wanted to.
That’s an amazing amount of backward compatibility.
It’s in all software that handles images!
And, I don’t have to explain to mother what to do with one.
So what does Google do to force people to use it? They TRICK them!
When you use Chrome to download an image file, caching servers will send it a WebP because it’s faster and Chrome advertises compatibility with it.
Usually, these are transcoded from JPEGs that someone uploaded to the server, which is not a lossless process, into an even worse-looking WebM file that less software is compatible with.
I’ve caught Reddit doing this when I’m using a Chromium browser, but when I’m using SeaMonkey it sends me the JPEG. Firefox, it varies.
Probably the long term goal is that there will be so many of the damned things from people re-uploading the WebP that it will put pressure on anyone holding out on supporting the format.
Another possibility is that they don’t think you should be saving the images in the first place, so they’ll spit on you by handing you a degraded copy of the JPEG in some weird format.
It’s likely to happen with AVIF too. Google can’t make a standard because, apparently, they can’t even decide what covers their own use case.
The anti-trust case against Google should be looking at this.
Impressively, thanks to the fact that you could embed a WebP on Gemini as an object, if you could trick the user into displaying it, you could have Web-like vulnerability over Gemini thanks to Google’s stupid image format.
Codecs are very dangerous and having all of these codecs being added when they all basically do the same thing is making computing more hazardous.
Google has a long history of breaking the law and basically daring people to sue them.
It happened with their non-conformant Apache “Harmony” Java implementation, due to their rabid hatred of the GNU GPL (which is ironically now PROTECTING GOOGLE from further aggression from Oracle!)
They did it again with the original AAC encoder for Android. They paid a vendor to “steal” 3GPP source code and compile it, and FhG came knocking, which is why we have fdk-aac.
Google’s method of break the law and dare people to sue risks bringing modern computing down on top of us sometimes, like when Oracle sued and claimed APIs (in this case, Java), cold be copyrighted.
Well, say goodbye to almost anything you could write a computer program in if that argument flew. All so Google could use a bug-riddled and abandoned Apache “Java”.
And it’s happening all over again with video and image codecs.
There is, of course, another cost to having multiple codecs that do the same thing.
Bloat. Good old fashioned software bloat. Google has the resources to sit there and compile Chrome as many times as they want to. Compiling Chromium is beyond the capability of the average computer user at this point. There’s so much junk and garbage in there that the process takes forever and uses more memory than most computers even come with, ideally.
Just 10 years ago, you could compile most rendering engines on a laptop.
Today, Webkit is about the only one left where you can do it, or where it’s even all written in the same computer language.
Strangely, I recently wrote an article mocking IBM for claiming that compiling Webkit is hard.
They compile all the junk in Firefox and Chromium multiple times a day and nobody bats an eyelash.
Whether Google uses “open” media codecs or not doesn’t actually help you.
With Widevine and WEI, it’s clear that at some point even YouTube videos will be digitally encumbered. All of them. We face a future of the entire Web going “dark” and then it won’t really matter to the user what video “format” it’s in unless it’s “pirated”.
At some point, Web images might be like this too.
What did Mozilla get for selling us out? Is thirty pieces of silver still the going rate?
Netflix runs tests on codecs for the same reason Google does. It wants to keep its own bandwidth costs down, and nothing else. Since users don’t get a copy of anything they watch on Netflix, the format it is in on the server is wholly irrelevant.
Basically what these formats are promoted as, is a way for caching servers to spew files at you cheaply, and it hardly matters if the quality is good or not, or what the licensing of the codec is. How will a BSD license help you on the codec if it’s wrapped in DRM?
What does matter at the codec level, for you, is that when it comes through on your end, you now have dozens of times as many software vulnerabilities.
Not Google’s problem. ⬆