Detect when your installed Chrome extensions have changed owners
github.com
github.com
Therefore, if the extension ID changes, it's possible the owner changed. However, it's also of course possible (and even likely) that the original owner might transfer the private key to the new owner. And since Google doesn't require each upload include the private key, then the new owner could push changes without even needing access to that key.
I find the extension ecosystem fascinating and I'm also working on some tools for this space ([0]: warning, WIP hobby code). For example, I want to create a GitHub repo that targets a specific extension, tracks its updates, and pushes each one as a change to the repo. And then I can run static analyzers on the code after each update, and also some runtime taint analysis I've been experimenting with (e.g. tracing user inputs into dangerous sinks like eval or postMessage).
So yeah, I support your assertion that while something like this is somewhat useful, a better thing would be some kind of malware scanner for extensions.
If you shut down your extension and they had to put up their own copy, they'd have to re-acquire your installed base. That could be a sharp decline in value to them, particularly if the extension mostly got popular off a one-time front-page feature rather than via gradual discovery with active word of mouth.
The chance that people jump through all the hoops to impulse-install again twice is low. They'd have to really like your extension, even if your version notified them of shutdown of yours and availability of the new one. Growing an installed base is generally more a factor of not chasing your users away than explicitly doing things to retain them. That change would chase them away.
In an ideal world, you'd be able to officially transfer the single extension to a new owner while keeping all the installed users--preferably with a notice dialog enforced by the browser popping up to tell the user the ownership changed and offering them a chance to uninstall. That would also chase some users away, but it's sort of the ethical minimum (hence this HN post).
But I doubt many browsers, if any, work like that.
At the moment I don't believe any browser has features that notify end users of ownership changes.
[1]: https://support.google.com/chrome_webstore/contact/one_stop_... [2]: https://extensionworkshop.com/documentation/publish/add-on-o....
1. It was a grey area if the Terms of Service allowed such transfers of Opera account.
2. I had many other extensions that were being distributed through the same Opera account.
3. My suggestion to them was that I would release a new version of the extension from my account that explicitly informs the user of the change of ownership, and also inform them to install the extension from the new owners Opera account. They weren't interested in that.
Couldn't the extension do that itself? Why does it need to be a browser feature?
Edit: Quoted portion of comment I was responding to.
The reason for wanting such notifications in the first place is because new owners often do dodgy things, and a company that specialises in buying up popular extensions and cramming them full of spyware typically doesn't want you to know about the change of ownership.
So extension authors can't be relied upon to provide this feature. The ones you particularly want to know about go out of their way to hide their involvement.
I interviewed at their office and at the time their business was to use the high user count the browser had on mobiles in africa to push microcredit.
Opera is a public company. Almost all public companies have shareholders from all over the world, including China.
https://en.wikipedia.org/wiki/Opera_(company) has some details.
EDIT: that Wikipedia article says Opera is indeed a public company, but it's only indirectly publicly traded via a chain of parent companies.
While Opera might not be a Chinese company in the strictest definition, over 50% of Opera's shares are owned by their Chinese parent company, and by all accounts around 80% of the shares still seem to be in control of the Chinese conglomerate that owned Opera before it went public.
(Eg Google is controlled by its founders, who still have the majority of share voting rights and are in power as executives. But it's not majority owned by them anymore.)
Since the CEO of Wikipedia is Egyptian born, would you define Wikipedia as Egyptian owned? Note that Egypt is a US backed dictatorship.
But it's equally easy to envision nefarious reasons of course.
User base and trust doesn’t work that way. I cannot hire 10 devs to replicate years of building trust and brand reputation.
My idea is that non-nefariously buyer discounted code part and valued trust and user base.
And if you tie it to individuals, then an extension is transferred every time a new employee replaces an old.
the original owner might transfer the private key to the new owner. And since Google doesn't require each upload include the private key, then the new owner could push changes without even needing access to that key.
This isn't how PKI works. Is this really an accurate description of the way private keys are used for Chrome extensions? That you're supposed to provide the private key in a PEM file when you upload the extension?
The developer should be signing the extension/manifest with the private key and sharing the public key/including the public key in the upload. Updates should continue to be signed with the private key, and as long as the key doesn't change, the original public key from the original upload can be used to verify that the same private key was used to sign -- if the public key is included or not on subsequent uploads is immaterial. Yes, the developer could sell/share the private key with someone else, thereby allowing someone else to provide a legit, signed update, but that's the risk (to the user of the extension/message recipient) of the signer not keeping their private key private. Sharing the private key with Google, or anyone, undermines provenance of the extension. Sharing the private key with someone else wouldn't be detectable, because use of the private key to sign is the method by which the identity of the source is established.
That's also not how PKI works. The private key and the public key are tied together, by the very math that defines public/private key cryptography. There is no situation where a private key can be changed and the associated public key does not change. Are you confusing public keys with certificates?
It makes sense that the extension id is/could be tied to a keypair: that forces a change in identity of the source of the extension if the key changes. However, that's not very extensible or pragmatic, so I suspect that the extension is identified by a field in a certificate, the certificate is signed by Google, the certificate is assigned/tied to a developer, and that would allow the certificate fields to stay constant while allowing the keys to be rotated.
No. If you include a key.pem file (private key) in your .zip on first upload, then the extension ID is derived from the public key which is derived from the private key. This is an RSA keypair, there is no certificate involved, and the process to generate the extensionID is well known (hex encoding of first 32 characters of the public key). [0] The chrome team signs the .crx file, so they need the private key to do it.
However, AFAICT, this is _optional_ (and also poorly documented, so probably also discouraged). You can choose not to submit your zip with a key.pem file, in which case I presume Google will use a more modern PKI approach on their backend. But they still don't give you the private key.
As an extension developer, the reason you want to upload the key.pem yourself is so you can know the extension ID before you publish it, which might be important if your extension contains code that references that ID (e.g. checking Origin of a postMessage is chrome-extension://{yourId}).
Disclaimer: I haven't published an extension, so this is based only on reverse engineering and reading the threads in the extension developers Google Group.
Edit: I'm probably thinking of Android and they'd probably sign with their own key.
Then again, you say:
> And since Google doesn't require each upload include the private key, then the new owner could push changes without even needing access to that key.
How is this even possible that Google allows this? Is this really true?
I mean, Google is such a PITA with their Webstore for the smallest possible things, but that is something they don't care about?
I have three extensions which I have only released for testers, where I am the sole tester of the extensions, so that I can easily install them on my different machines without having to rsync/robocopy them and enable developer mode.
This weekend Chrome decided to disable all these extensions on just one machine, because "This extension is not listed in the Chrome Web Store and possibly has been added without your knowledge". I can't override and force-enable it, when I go to the web store it says it's "inactive" and gives me the option to "activate now", but "activate now" only removes the banner and re-shows it after a reload. That Chrome profile is signed in with the whitelisted account.
This happens with just one browser, my main one on my main machine, signed in with the tester account.
The badge on the CWS page claims that the developer (me) has a positive balance without any strikes. I mean, I wouldn't be able to see the page if I weren't logged in with the my whitelisted email.
They "care so much" but then they allow updates without the key?
Yes, you only need to upload the key (meaning, include a `key.pem` in your packed zip file) on first upload. [0]
However, I'm not sure if Google will allow you to upload with a _different_ key. Since that would cause the extension ID to change, I'm not sure what would happen, both to the webstore page (does the previous one 301 to the new one?) and to existing installations (do they stop auto-updating?).
Incidentally, I expect this is also the reason Google allows subsequent uploads without the key. They don't want someone to lose their extension when they lose their private key.
> This weekend Chrome decided to disable all these extensions on just one machine
There is a trick for this, if you are loading an unpacked extension. Simply edit `manifest.json` in the unpacked extension directory, to add a `"key": "<base64 encoded public key>"`, where that public key matches the public key associated with the extension from the store. You can do this with any extension from the store, since you can extract the public key from a .crx file [1]. When you load an extension this way, the ID will be the same as the "real" extension.
[0] https://groups.google.com/a/chromium.org/g/chromium-extensio... (note the "You don't need to repeat this procedure ever again")
[1] https://github.com/milesrichardson/crxmon/blob/4dae445b05b76...
They don't want someone to "lose their extension" if the private key is lost? That makes no sense and completely undermines using PKI in the first place. This isn't how "code signing" is supposed to work _at all_.
While what you described is possible, this process isn't required or the typical way an extension ID is generated. Typically developers just upload a ZIP file on their first submission, then CWS will generate and store a private key to sign the extension for public distribution.
> and the ID will change if any subsequent uploads include a different key.pem in their zip file
CWS should never change an existing extension's ID. The ID is what I uniquely identifies an extension. If the ID changed, Chrome clients wouldn't be able to request an updated version of that extension. CWS & Chrome do not support migrating users from one extension to another.
To the best of my knowledge CWS will reject an extension if the zip after the first submission contains a key.pem file.
> Therefore, if the extension ID changes, it's possible the owner changed.
If the extension ID changes, it's not the same extension.
> then the new owner could push changes without even needing access to that key.
This is mostly true, but there is one case where developers CANNOT update an extension without the PEM: if the dev signed the extension they submitted to CWS. To be honest I'm not even sure this is possible to do any more; as I recall this feature was a huge foot-gun and often ended up causing developers to lose their install base because they lost their private keys that they used to sign their own uploads.
Pretty much everyone is going to agree, with the only individual difference on how much you have to pay.
But why copy a free open source extension instead of just contributing a pr? Well... a few weeks later he was trying to sell it on multiple sites for 5 figures. Maybe they still own it but I couldn't help but notice that the registered developer for his extension on the chrome store has also changed since it was originally published.
[1] https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
Can’t say I understand all the background but really… the extension is 50 lines of trivial js. Claiming someone stole it is quite bold. And as we all know, ideas are worth nothing, can’t really claim this idea is that novel either. Assuming the other party even took inspiration, the timeline of who did what first is not entirely clear.
In terms of timeline...
here is him commenting on my the shown HN post I made https://news.ycombinator.com/context?id=38328305
here is his days later https://news.ycombinator.com/context?id=38398571
At the end of the day, it was a silly project I built and I got 20k users! It didn't feel great to be copied and have them get 15x more traction. Whatever the thoughts are around that... the reason I posted today was the relevancy to the parent extension because within weeks they tried to (or did) sell the extension's user base (presumably to bad actors). I had no idea how shady the extension world was before this, and I'm much more conservative about which ones I'll install now.
[1] https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
Ive been ripped off in the past. While it doesn't feel great, it should fuel the irrational confidence part of you.
But at the end of the day it's a simple idea and script. Can't really see what you can get from it, if they even wrote the actual code themselves.
Considering your previous post was already months ago and was flagged [1], I'd say let it go.
Are you saying microsoft should have never been allowed to release Microsoft Word because Wordstar (and possibly other similar software) already existed?
Are wheel manufacturers all immoral for making wheels while we should still use the original wheel made of stone or wood[1] from the original author?
[1] I honestly don't know which came first but I would say carved stone
https://chromewebstore.google.com/detail/ad-speedup-skip-vid...
https://chromewebstore.google.com/detail/ad-speedup-skip-vid...
in addition to that, actually had random people start reaching out to me that it is now bloat ware ...
Why not this time? If you are interested to promote your extension, you can do it now. Your extension is still there.
Another question is for how long YouTube and Chrome will allow it to work. (They may also feel disappointed).
The drama killed my enthusiasm and at the end of the day it was a silly side project. Have more important things to do if it is not fun.
> Another question is for how long YouTube and Chrome will allow it to work. (They may also feel disappointed).
It'd probably have to get orders of magnitudes more users for YouTube to do something. But not every streaming site is as laissez faire; Hulu detects it if you set it to the max speed (16x) and Twitch is more obfuscated.
…And if the whole world's singing your songs
And all of your paintings have been hung
Just remember what was yours is everyone's from now on
And that's not wrong or right
But you can struggle with it all you like
You'll only get uptight…”
- “What Light” by WilcoLet's tar and feather the scoundrel.
Reading their comment history does yield some interesting rebuttals though, would recommend.
My whole point was "hey thats not cool" that you copied me especially since you run a thousand+ person dev community. His rebuttal about wether or not it was legal, or violating the license etc. sort of misses the substance of the argument. To me it was a moral issue not a legal issue [1].
[1] https://github.com/rkk3/ad-accelerator/blob/main/lessons_pos...
(cue someone getting upset about "politicizing" licensing or cancel culture or whatever, as if the entire concept of intellectual property isnt political at its core)
There are certainly licenses which meet those goals, and in my opinion at least, there's nothing wrong with using them. I'm not opposed to proprietary software, or source-available licenses which come with certain restrictions. But by definition, it isn't open source or free software.
You know that the term 'open source' was coined because someone disagreed with the vision of the 'free software' people? It's fine to have a different vision. Thought you might want to come up with a different term, of course.
There's the Business Source License[1] used by MariaDB, which allows for any "non-production" usage and automatically converts to fully open source 4 years after publication.
There's also the Commons Clause[2] which is supposed to be appended to any other open source license to add a restriction against the "right to Sell the Software".
And there's also Creative Commons NonCommercial license[3], but that one's not specifically meant for software.
All of these are interesting licenses, but honestly I haven't fully read them yet and I don't know if they have any issues or ambiguities or loopholes.
[1] https://mariadb.com/bsl11/
This sucks man, at least this only cost you potential earnings (that it sounds like you weren’t pursuing) vs any actual money.
I wonder if in theory, should you want to, there’d be any legal recourse.
As someone who grew up in India, this practice is actually quite common and not exactly frowned up. When you have multiple products that perform similar functions, whoever can sell them the best will gain market dominance.
OP did not pursue the monetization path chosen by his competitor and lost out only on potential income, this might be a good lesson in entrepreneurship and IP management.
Is there a license that prevents direct resale but keeps it open source?
Open Source, as defined by the Free Software Foundation or Open Source Initiative, requires the right to create a modified version of a piece of software and sell it. It doesn't matter if the modification is nothing.
A trademark on the name will require a reseller to rename it to avoid trademark infringement.
A patent on some part of it is a scummy way to do it, but that violates the spirit of open source.
They did not "reassign the meaning". They created the term, it did not exist before their usage. They created it to mean the thing you're now saying it doesn't mean.
There's terms that if you attempt to use the literal meaning of the component words, you'll confuse people. This is one. It's like a trademark or an idiom, it has extra meaning beyond the literal due to cultural association.
> Not gonna argue or flamebait though, please just tell the correct term for projects with open source but non-free-software license and I’ll be happy to use it from now on.
I've seen "source available" used and that always seemed fine to me.
OSI/FSF decided to use generic words as label to promote their specific ideas. The ambiguity of that unspecific wording choice is on them, not on the rest of the world.
Just because "gravy boat" has the word boat in it does not mean it is actually a real boat. "Whisky on the rocks" has ice in it, not actual rocks.
Free Software and Open Source Software have widely agreed upon meanings, and just because you think intuitively it would make more sense for "whisky on the rocks" to be served over actual rocks doesn't mean you're better at understanding english words than the rest of us.
Who is “we”?
My point is that I don’t think that your premise of “collective agreement” is true for “open source” or “free software”. I don’t agree with it, and I know a bunch of other people that don’t do either.
Language is cultural and context-specific. Not everyone has to agree, but if you talk to software people about "open source" and don't mean what everybody else means, you're just going to confuse and annoy people instead of communicating.
Language is not set in stone either, and the perception of what terms mean may change over time, even within one and the same cultural context. That’s why we are having debates and discussions. The world of computer people is no exception of this phenomenon – the etymology of the word “computer” is a literal example for that.
However, someone could make a change, redistribute under the same term, and then someone else could undo the change, and redistribute, essentially redistributing the original without modification.
Or if they stripped all attribution then a legal case could be made.
https://chromewebstore.google.com/detail/ad-speedup-skip-vid...
A question I got regarding this extension, as I didn't take a deep dive into the source code yet: Does it automatically notify you (not necessary in real-time but at least in startup) of ownership change or you need to manually trigger a check command?
A few months ago, a story on this topic was trending: https://news.ycombinator.com/item?id=36233068
From the top comment of the above story:
"I think it would behoove Firefox and Chrome to change their policies around automatic extension upgrades in these scenarios: if an extension discloses a change in ownership, then upgrades should require user approval. If an extension fails to disclose a change in ownership, then users should be able to report it as malicious."
As a side note, probably the title should be prefixed by "Show HN"
The majority of owner changes are going to be malicious, so the action taken should account for that.
Creators do not get offered large sums of money by entities motivated by the desire to better serve the creator's users.
So yes, I agree that it would decrease the value of selling out. I see that as a good thing. It fights against what is currently killing the extensions ecosystem for everyone.
I've owned a quite popular open source Chrome extension for years. The amount of total donations wouldn't pay for a month of coffee.
But oh boy, the number of times and insane numbers I was offered to sell the extension for obviously nefarious purposes (some of them outright explicit).
I rejected them all but nobody in their sane mind would really expect the moral virtue of the original developer to be the only security and privacy framework for this scenario.
> Why does this need an external server? - Browsers have special rules about modifying extension marketplace domains. For example, you cannot set declarative_net_request rules for chromewebstore.google.com. Therefore, this extension delegates the developer info checking to the ExBoost [1] API server.
[1]: https://www.extensionboost.com/
> What Is ExBoost? - ExBoost is a collaborative network of browser extensions that want more users and more reviews.
> How does ExBoost work? - Extensions add ExBoost slots inside their UI. These slots will show promotions for similar extensions, or reminders to review your extension.
Looking at the result from the API of one extension I had installed[2], it lists metadata associated to the developer. I've tried to use the `chrome.management.get(id)` Chrome API and it does not return this information, and there does not seem to be a way to get the content of the manifest.json programatically. Therefore, to do the job of the extension as it is, it does need an external source.
[1]: https://github.com/classvsoftware/under-new-management/blob/...
[2]: https://api.extensionboost.com/v1/developer?extension_ids=gh...
I thought it was suspicious and junked the email. It didn't seem any different from the other spam emails I got from scammers.
If they do review every update, that would this problem at least for the more popular extensions, although I wonder how much delay it introduces when an extension needs an urgent security update.
[0] https://support.mozilla.org/en-US/kb/recommended-extensions-...
Currently my personal policy is to only allow those curated extensions to run on all sites/tabs.
- More malicious apps found in Mac App Store that are stealing user data - https://appleinsider.com/articles/18/09/07/more-malicious-ap...
- How 18 Malware Apps Snuck Into Apple's App Store - https://www.wired.com/story/apple-app-store-malware-click-fr... ...
A corollary… just because one piece of software has fewer reported CVEs, doesn’t mean it is more secure.
It sort of does, it's just not something devs take advantage of or that exists in an official way.
If you don't want to be listed in the addon store, you can do a signed addon that goes through a much less rigorous check and then distribute it however you want. Similarly within the addon store Mozilla has a concept of "vetted" and "unvetted" addons. You end up with roughly 3 layers of validation.
There's technically nothing stopping anyone from setting up a separate addon store using only the 1st-layer of validation (or even adding a wrapper around the 3rd layer of validation since it's all still ultimately XPI files). Automatic updates would even work, you can specify URLs to check updates from. I haven't fiddled around with it much though.
And sure, it would be nice to be able to skip even the 1st-layer signing when necessary, but what exists is still better than what a lot of other app-stores allow and in practice I suspect most addons aren't going to have trouble getting their stuff signed, so it's (likely?) not a huge deal if you wanted to make a 3rd-party store to require Mozilla-signed extensions. Maybe there's something I'm missing though.
https://extensionworkshop.com/documentation/publish/add-on-p...
> All add-ons are subject to these policies, regardless of how they are distributed.
and
> Add-ons with the sole purpose of promoting, installing, loading or launching an outside website, application or add-on are not permitted.
I believe the only way to bypass this would be to disable add-on signing in your browser, which is probably a bad idea.
Curation and integration by a trusted party is a valuable service, and I very much appreciate Mozilla, Debian and others doing this work and enforcing their inclusion policy, e.g. the Debian Free Software Guidelines and whatever Mozilla's technical review involves. Debian's onerous rules in particular are great for the user – I can rely on packages to be appropriately licensed, to receive security patches without breaking my system with incompatible changes, to be compatible with the rest of the packages in the distribution, etc.
Some important differences from "marketplaces" provided by various for-profit companies are 1) the user can choose whatever curator they wish, or opt to install whatever they want at their own risk; 2) the service doesn't usually involve payments, selling, shopping, etc. which would usually be associated with a marketplace.
They want something stricter. What they're asking for is the ability to have multiple marketplaces and validation measures, some of which have stricter rules than others. That these requests pop up in scenarios where marketplaces already exist suggest that singular universal marketplaces that attempt to be one-size-fits-all gatekeepers aren't scalable or sufficient to meet everyone's needs, and that a multi-marketplace setup would allow some of those marketplaces to offer stricter quality standards for the people who need them.
As long as you don't use that account for anything else, it's seamless.
Legalese isn't going to stop that.
Then I got a new machine and had to reinstall it. For the first time I had a look at those permissions. Insanity. It's only logical that it should be able to see what I see to block the ads, but I never stopped to think about that.
Now I have a pihole and zero extensions.
https://developer.apple.com/documentation/safariservices/cre...
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
Ublock Origin Lite uses it for example.
(It's also the thing everyone is angry at Chrome for as their 'plan to kill ad blockers' by replacing the current blocking APIs with declarativeNetRequest.)
Safari's extension model kind of goes in its own direction, but it's based on similar principles to Manifest V3 and my contention with it is the same -- it's not a problem that you can build a permission-less adblocker in Safari, that's good. It's a problem that you have to, because getting rid of those permissions makes adblockers slightly less effective, which may or may not be worth it for every user. I can say with relative certainty that there is no adblocker on Safari that is as powerful as uBlock Origin on Firefox.
People bundle criticism of Chrome under the Manifest V3 label but aside from some more techy-type complaints around how Service Workers are being handled, in my experience at least a lot of Manifest V3 is really good. What's not good is that Chrome used Manifest V3 as an opportunity to get rid of a lot of other important APIs. So you don't see the same criticism levied at Mozilla because with Firefox you get most of the same benefits of Manifest V3 (and some additional benefits, Firefox's event-system is imo a better way to handle temporary background pages than Chrome's service-worker system) without the downsides of Chrome removing blocking web requests for the extensions that need them.
I'm using Manifest V3 for private extensions that I maintain for myself on Firefox. Manifest V3 is great and I enjoy trying to cut down my permissions as much as I can even though I'm basically just running the code myself. But none of my private extensions would work in Chrome or Safari or would be portable to either browser; they lack the APIs that I need and don't have any realistic equivalents.
- make it the DNS for your wifi if your router can do that
- set Pihole to be the DNS for individual devices in their wifi settings if it can't
- create a personal VPN that uses Pihole as the DNS
<tinfoil hat> One could imagine a nefarious state actor offering the author of e.g. uBlock $XX million to get access to a lot of browsers. Not sure about the economics, but more niche extensions could probably be targeted for a lot cheaper.
Not that those are good reasons to sell out your users, but they’re the kinds of circumstances that you can easily imagine happening.
That's why it's so important to have a clean handover way that does not involve handing over credentials: it allows circumstantial sellers to pick a least bad buyer, if it exists. The more visible the existence of a clean path (as in "advertised in the UI vs getting someone at Google on the phone") is the more difficult it becomes to pretend that the shady path is clean. There might even be some "conscience arbitrage", perhaps unintended: buyers who buy through regular handover mechanism, with a believable story of confidence in being able to make clean money (which they may or may not believe themselves), but who then sell dirty. Less money for the original dev, true, but at least there's one handover on record, eroding trust.
The only browser extension I use is HonorLock, an exam proctoring software that I'm required to use. Its extension is for Chrome only, so I use Chrome from time to time out of the requirement to use HonorLock. If I visit the install link in Safari, it tells me to install Chrome: https://app.honorlock.com/install/extension
I'm wondering if there's something unique about Chrome's extensions that both supports HonorLock's use case and makes this submission's linked resource more helpful.
I also have a Pi-hole on my home network.
Tampermonkey scripts are
- open source and easily modifiable
- permissions are firmly controlled
- you can disable auto updateNot meaningfully. A tampermonkey script has complete access to the information in a webpage it runs in. This is necessary for its operation and not something I have a problem with, but I'd never say its an improvement in terms of security.
I don't know about chrome, but Firefox also allows automatic updates to be disabled on a per-extension basis.
I'm a fan of userscripts but lets not pretend they're magically better.
For example Firefox can't even control on which websites the extensions run. This is stupid and bad. Tampermonkey just does this thing right too.
Edge at least has an allowlist, if I'm not mistaken.
E.g. here's the "bypass paywalls" extension requesting permission to inject content scripts into particular domains sites: https://github.com/iamadamdev/bypass-paywalls-chrome/blob/c6...
Now it's no longer a good idea because that same browser is also:
- your bank,
- likely your point of contact with the government / tax folk
- the place you do your shopping
- the portal for most of your communications with the rest of the world
The price for convenience and security being compatible is for these extensions to be auditable and for updates to be opt-in. Sure, someone could still install malicious updates under this model, but the value proposition of doing so scales with the number of people who care about the thing, and auditability allows experts who care about the thing to warn people if it does something suspicious, which also scales with the number of people who care about the thing
TM still requires trusting their extension and script authors.
I opened Chrome ticket that they should ask to re-enable extension when ownership changes. They just closed the ticket replying with this link:
https://chromium.googlesource.com/chromium/src/+/main/extens...
:(
Automatic updates, again unfortunately, are critical to safety.
Probably some of those were critical, and some of them were completely unlikely to affect real world security. As a user, how do I know when to take it seriously and when not to? All I'm told by the UI is that every single update they push "improves security and performance".
And I realise I'm not the typical user, but I actually do read(skim) TOS just to see if there's any centipad like stuff. Most of it is just boilerplate and you get pretty quick at finding the substantive parts with some practice. Of course TOS/EULA are hard to read for most people by design. They don't actually want you to read it. If they did, they'd offer a summarised version without all the legalese boilerplate.
I get the same feeling about changelogs. They probably have one internally if they know what they're doing. It may even be online somewhere if I go looking. I can only surmise that for whatever reason, they don't want me to read it, which doesn't inspire trust.
Say you're on Foo 1.4.7, and the jump to Foo 1.5 includes a feature re-org you don't want, and no security fixes. So you hold your version on 1.4.7.
But then a security issue is found, and Foo 1.5.1 is released with a fix. Is the version you have vulnerable? Maybe, depending on where the bug is. Is there a 1.4.8 update to fix it? Maybe not. How would you even get it? Heck, if you've switched off automatic updates, have you even heard about the 1.5.1 release? Are you checking on the release announcements for Foo to find out if there have been any security updates, ever?
OK, maybe you check those things. But do you think J. Random User who saw a post on Reddit that said 1.5 sux0rz and they should stay on 1.4.x is going to? And do you like having botnets? Because that's how you get botnets.
Even if the security fixes were backported, it would produce a new version of the older branch, and requires an update in order to actually use it. If the security fix is in an older branch or a newer branch doesn't matter: it still qualifies as an update.
But automatic updates aren't for you or me, or any of the other geeks here.
They're for everyone else.
That being said, I really like VS Code's approach of having auto-updates enabled by default, but making a switch to turn off the feature available for nerds like us who care.
That's the model to follow in my book.
Fortunately, you have choices. You can choose to avoid software and operating systems that feature automatic updates.
You can even write it yourself, if you wish: You're absolutely empowered to be absolutely in control of your things.
There's nothing stopping you.
I do avoid corporate overreach where it's practical (I have a dumb TV/vehicle/appliances/etc), but there will come a day when it's impossible to participate in society without giving in.
There's plenty of ways to get through life that don't involve computers or software or television.
You can choose differently than you have.
You make it sound like I can either have the stunted over commercialized shovelware thats on offer or I can choose to go live in a hut in the woods. Where's the middleground where we put a little market pressure on our corporate overlords so they make better widgets?
You want software that doesn't update itself on your computer? Nobody is going to stop you. Simply make it so.
(And if you're happy with your life, then what are you here bellyaching about?)
If there was a way to specify I only want security updates and bug fixes and I do not want new features, UI redesigns, and so on, I would always update and maybe even turn on automatic updates. Software companies have no excuse--we have sophisticated version control software that allows you to manage multiple branches easily. Every software should have a maintenance branch and a "new shit" branch, and should allow both kinds of updates.
Just FYI, for iOS updates, you can in fact opt into these release channels separately.
Go to Settings > General > Software Update > Automatic Updates. You will see two separate toggles, one for "iOS Updates" and another for "Security Responses & System Files."
Critical to the safety of some site/other users? Then the problem is a bit deeper, as my computer/software shouldn't be able to affect someone else.
So let them not update. It's not your device, it's theirs. Mind your own business.
Users will do things like ignore updates and then trash you on the internet or spam your support because the software no longer works properly with service xyz. We regularly hear about major hacking incidents where internet-facing software hasn't been patched for years. Things like this will give your company a bad reputation.
I think the best compromise is to have automatic updates by default and a slightly hidden option in the menu to turn them off. If the user goes out of his way to turn it off, then it is his own damn fault, but if you make it too easy (like presenting it with every update prompt) you are courting disaster.
If it is in an options menu, power users can choose to turn it off, but normal users will probably never find the option.
And the problem with Windows is you can't really turn minor updates off, they require reboots, it nags you a ton about major ones, and the updates basically just make it worse.
It's strange that Windows updates are still such a big problem, and I'm not talking about the ones caused by Microsoft's greed. Even Linux systems, which for a long time were pretty user-unfriendly, have largely managed to make updates seamless. I have automatic updates turned on on my computer, and the only indication is that once in a blue moon I can't turn the system off for a minute while it's running an update.
And in my experience (mostly server linux, client Windows/macOS) the worst updates are still macOS, they take for ever to install. Linux and Windows seem to at least install quickly, like a full upgrade takes less than 20 minutes on both, while a minor release for macOS will make my MacBook try to lift off like a jet engine for 45 minutes.
What's true about both is the updates require a reboot and take way longer than they should.
For example, it is now quite feasible to use only open source software in everyday life, which usually operates according to better ethical principles and has greater difficulty in enforcing problematic changes.
I'd also prefer more visibility into updates. Enabling auto-updates might be okay, if there's a way to opt out of it, and if the updates were significantly more visible. I want to see a big modal when one of my extensions has updated, and ideally I'd be able to see the diff of its source code. But even without that, just knowing it updated would be enough for me to unpack the CRX and check for myself (like I did when I installed it originally).
Disclaimer: I run exactly two extensions in my main browser: uBlock Origin, and Little Rat (monitors network requests of other extensions). I have a separate Canary browser for web development where I install other extensions I might need.
Just go to about:addons, click on the addon you want to change, and then swap "Allow automatic updates" to off. You can also change the default behavior to not automatically update except for individual addons that you override (although again, I don't recommend it for most users).
I don't believe you'll get notified about updates (correct me if I'm wrong), which isn't ideal, so you'll have to periodically go and check for updates yourself.
I am shocked, people actually think that automatic updates are very good? Because for me, it is trivial that automatic updates are very bad. One of the greatest security risk of extensions are due to automatic updates, they can't be verified, since they change.
edit : BTW I've submitted a related submission about Guerilla Script, a userscript injecting engine, where userscripts are not even updateable: https://news.ycombinator.com/item?id=39620863 This is the ideal way of safe extensions IMO
Installing software in the first place is placing a lot of trust into whoever made that software from the get-go. There are a myriad of ways a bad vendor can abuse a software installation without having to involve auto-updates. Singling that as a specific abuse vector that's orders of magnitude worse than giving filesystem access to an opaque binary just doesn't make much sense to me.
If I don't trust a vendor enough to allow auto-updates, then I don't trust them enough to install the software in the first place (dev dependencies notwithstanding for obvious reasons). Combine this with the well known fact that optional updates just don't get installed, and the cost/benefit calculus of the feature becomes not that hard to motivate.
Fwiw, I also think that a switch to disable the feature should always be present for those of us who care.
However, I have a couple of reservations:
1. Firstly, the JavaScript code in the release version of the extension is 12MiB. This is a lot of code, with much of it in a bundled form, making it very difficult (if not almost impossible) to verify them against the originals in the case of React, lodash, etc.
2. It seems like the code uses an external API[0] to find the current owners of the installed extensions. While I appreciate that this may be one of the only ways to do it (since I imagine Google themselves would not appreciate an extension programmatically accessing the Chrome Web Store to find the current owners) - and as far as I can see from the published code, it doesn't send any identifying data beyond what a normal Web request does, hence why I'm not identifying the site by name here - I would still urge caution as it might still cause alarm to someone examining their Web traffic and seeing a suspicious domain name, as the sort of person who would be interested in this extension is more likely to also the sort of person who would watch their Web traffic closely. (I know I do.)
In general, though, I love this idea and I hope it raises awareness of new owners looking to monetise existing extensions, and does something to reduce the likelihood of it occurring.
[edit: Actually, on further investigation, it looks like the developer of this extension is also the developer behind ExtensionBoost[1] (the site that's hosting the API mentioned above), so there's no need to hide the name any more. Note that this may also indicate that the developer is using this to gather lists of installed extensions, to allow them to indicate 'related' extensions by popularity in ExBoost - but it's important to note that this is just speculation on my part!]
[0] https://github.com/classvsoftware/under-new-management/blob/...
[1]: https://chromewebstore.google.com/detail/extensions-update-n...
Or changing email requires paying the dev fee again, and if the financial info differs then prompt end users?
This extension sounds like a good temporary measure; still, the overwhelming majority of Chrome users won't install it. The actual fix should happen elsewhere.
The problem is that that experience isn't poor because of neglect, it's poor because you're intentionally not supposed to do that kind of thing unless you're developing and testing an add-on yourself.
(I don't know how Chrome arrived at that state, with Firefox the justification was that if the user can do that sort of thing [install random unsigned add-ons] easily, then so can ad-ware [browser toolbars and other spyware stuff].)
That would be useful for domains, too.
Changing the owner should automatically disable the extension worldwide and require manual user re-approval, at the very least.
What happens in Mozillaland, can the owner/developer account of an extension change?
I don't use chrome though. I wonder how Firefox handles it.
Realistically, even with this extension functioning as advertised, there are still plenty of related risks. E.g., a software company could disguise its motives early on and convert its product into malware at a later date, or the developer could be paid by a 3rd party to add certain features.
A extension watcher is great but what happens when THIS extension itself changes owners?
Who watches the watcher?
Handling the permissions necessary for certain API functionalities and the corresponding warning messages can be somewhat confusing. For instance, our extension uses "chrome.devtools.panels" to open a new window within DevTools. This API doesn't require any permissions by itself. Yet, for messaging across the popup, content, and DevTools windows, we're required to use activeTab and sendMessage APIs. The DevTools window operates in its unique context, almost like a tab within another tab. For example, updating the URL in the active tab doesn't directly update the DevTools window but triggers an event.
Messaging across these different contexts requires the "https://*/*" host permission, without which Chrome and Firefox won't send the messages between these isolated windows.
We made this permission optional, the DevTools Panel is activated only upon receiving explicit user consent. However, the permission prompt's messaging is something like "This extension requires access to all your data," which sounds very alarming. We don't access any data nor that we want to, but requiring that permission is mandatory since the message APIs won't work without them.
This is just one example of the many undocumented complexities within Chrome's documentation. Similar pitfalls exist with message exchanges between the background service and content scripts. Sometimes you don't know why your API call doesn't work even though you think you have the required permission and asking for more permissions show very alarming messages to users.
I think that a more granular permission approach, made specific to API functionalities rather than broad permissions that cover a list of APIs, would significantly help user experience. For example, requesting permission for the "sendMessage API" with a clear explanation would be far more informative for users than the general "All host https:///" permissions.
There's also the issue of building for different browser. The same browser API calls can have different permissions requirement on Chrome and Firefox which makes the development process more difficult and more confusing for users since the same extension requires different permissions on different browsers.
[0] https://divmagic.com [1] https://developer.chrome.com/docs/extensions/reference/api
To me, this cuts at a fundamental logic we take for granted in the paradigm of Intellectual Property: That a brand is a fungible commodity that can be sold, like any other good or service. We treat this as a transfer of ownership of some property, but I think it makes more sense to treat this as a form of fraud. A name or brand is a signal people and businesses use to indicate who made something, and its chief value is the trust that's been built by the people running whatever operation carries that brand. The fact that it is not only legal but common practice to buy a brand explicitly for this trust in the operation is, from my perspective, obviously a big part of why everything is so scammy
1. Launch good product
2. Get good reviews
3. "Optimize" the design to use cheaper, worse components
4. Sell it under the same name
5. Coast on those good reviews and enjoy the higher profit margin
Of course, perhaps it would be even rarer in a world whose incentives resisted "optimization" of this kind rather than actively encouraging it
1: https://capitaloneshopping.com/blog/11-companies-that-own-ev...
They should have to display the entire chain of companies in the corporate structure and, if it's too big to legibly fit on the package, you can't sell it.