Can't you just right click?(lapcatsoftware.com)
lapcatsoftware.com
Can't you just right click?
https://lapcatsoftware.com/articles/unsigned.html
746 comments
This feature is at about the right spot for me.
It is still convenient enough for me to run software I want that isn't signed, but sufficiently obtuse that neither of my parents have figured it out. Given they are both prone to running any executable that any website tells them to download and run, this feature has probably save me several dozen hours of fixing their computers.
It is still convenient enough for me to run software I want that isn't signed, but sufficiently obtuse that neither of my parents have figured it out. Given they are both prone to running any executable that any website tells them to download and run, this feature has probably save me several dozen hours of fixing their computers.
The fact that the standard model of computing is that applications are opaque machine code blobs that can access everything in your user permission space is the core problem in privacy and malware. Applications should see nothing but their executable jail, and whatever was intentionally allowed to them by the user (eg, Open file dialog giving the application an opaque file handle, etc, not carte blanche access to the entire filesystem). Ideally, the notion of machine code blobs should be done away with as well.
Mobile OSes got to rethink everything in an era of constant adversarial connectivity and started off on a better foot in this regard.
Mobile OSes got to rethink everything in an era of constant adversarial connectivity and started off on a better foot in this regard.
I still believe that Gatekeeper is a blatant cash grab and not a legitimate security feature.
$100/year to avoid a scary warning about how your app is definitely a virus? It's like a protection racket.
$100/year to avoid a scary warning about how your app is definitely a virus? It's like a protection racket.
I deal with this every day, because we only notarize our electron app in CI if we're building the master branch or an RC branch. I don't see it mentioned in the article, but what gets me every time is that the "right-click" trick only works the second time you try to launch the app. The first time, right-click or not, MacOS won't let you launch the app.
I do wish Apple had a free tier for open source projects, just like many other tools on the web.
As an alternative, I wish there was an easy way to "sponsor" open source projects for this sort of thing. (I guess there is in some cases, but it's pretty hit or miss)
On Windows, although it's pretty easy to run unsigned applications, it's a huge pain to install unsigned 64 bit drivers, even if it's just the inf file that's custom. I've ended up signing open-source drivers several times with my own code signing certificate (a few hundred bucks every few years) although I haven't distributed the result. Drivers for things like USB SDRs.
I do wish Apple had a free tier for open source projects, just like many other tools on the web.
As an alternative, I wish there was an easy way to "sponsor" open source projects for this sort of thing. (I guess there is in some cases, but it's pretty hit or miss)
On Windows, although it's pretty easy to run unsigned applications, it's a huge pain to install unsigned 64 bit drivers, even if it's just the inf file that's custom. I've ended up signing open-source drivers several times with my own code signing certificate (a few hundred bucks every few years) although I haven't distributed the result. Drivers for things like USB SDRs.
I thought that a developer status will autosave me either from malware or from being babysitted, but then [1] happened. No matter how hard I tried to start that binary, OSX didn't allow me to do that. Damn OS which knows better, who do yo think you are? Did you see checksums, site certs, my competence, my willpower? I thought that it must be something with a build process that transmission uses, some signature didn't get into the bundle, etc, and went to their forum for help, while trying to self-sign that app and to reduce the system protection level in a console. As I found out later, that was yet another snafu that happens with transmission every few years, and it's not that it is a particularly small or inactive project.
Moral of the story is, if you want to protect your users, you have to bring some level of inconvenience and frustration to them. Or be sure that I will run that malware no matter what you say.
[1] https://forum.transmissionbt.com/viewtopic.php?f=4&t=17834
Moral of the story is, if you want to protect your users, you have to bring some level of inconvenience and frustration to them. Or be sure that I will run that malware no matter what you say.
[1] https://forum.transmissionbt.com/viewtopic.php?f=4&t=17834
Hold on a minute -- MacOS phones home every single time you launch an application? As a non-user of MacOS, this strikes me as utterly bonkers. You'd have to place a massive level of trust in the developers of your OS to accept this. And furthermore, surely the constant attempts to phone home have a negative effect on the user experience when the computer's network connection is missing or slow!
Perhaps the fine article has mischaracterized this behavior?
Perhaps the fine article has mischaracterized this behavior?
A couple other ways to deal with it (at least for some instances--not sure this applies to every kind of executable).
1.1 Hit "Cancel" in the warning dialog.
1.2 Open "System Preferences" / "Security & Privacy" and select the "General" tab.
1.3 It should have a notice about the unverified app being blocked, and offer the chance to approve it. Do so.
1.4 Try to launch the app again. You'll get the dialog again, but this time it should have a button to tell it to go ahead and launch it. That will also remember that you have approved the app so you should be OK from them on (or at least until the app updates, and you will have to redo this).
Another way is to fix it from the command line.
2.1 Locate the executable.
2.2 Do "xattr -d com.apple.quarantine /path/to/executable"
I just hit this today when doing some web testing with Selenium, and it could not use chromedriver because the developer was not verified. My chromedriver is installed via Homebrew and evidently it had been updated since I last used it. A search for how to deal with that turned up both of the above solutions as part of this Stackoverflow question [1].
[1] https://stackoverflow.com/questions/60362018/macos-catalinav...
1.1 Hit "Cancel" in the warning dialog.
1.2 Open "System Preferences" / "Security & Privacy" and select the "General" tab.
1.3 It should have a notice about the unverified app being blocked, and offer the chance to approve it. Do so.
1.4 Try to launch the app again. You'll get the dialog again, but this time it should have a button to tell it to go ahead and launch it. That will also remember that you have approved the app so you should be OK from them on (or at least until the app updates, and you will have to redo this).
Another way is to fix it from the command line.
2.1 Locate the executable.
2.2 Do "xattr -d com.apple.quarantine /path/to/executable"
I just hit this today when doing some web testing with Selenium, and it could not use chromedriver because the developer was not verified. My chromedriver is installed via Homebrew and evidently it had been updated since I last used it. A search for how to deal with that turned up both of the above solutions as part of this Stackoverflow question [1].
[1] https://stackoverflow.com/questions/60362018/macos-catalinav...
On a related note, the macOS 11 Beta 5 released today reveals that Apple silicon Macs will require all ARM executables to be signed: https://mjtsai.com/blog/2020/08/19/apple-silicon-macs-to-req..., https://developer.apple.com/documentation/macos-release-note...
The power that tech companies accumulate with tactics like this, and the justifications for that power, are strangely reminiscent of autocratic governments: we decide which programs you can develop and run, and we can levy an arbitrary 30% income tax (on top of regular VAT). But don't worry, it's all for your safety and security!
We are fast becoming corporate citizens, for better and for worse: https://www.youtube.com/watch?v=l3pkkSNRug4
While there is some truth to the security argument - security after all is sometimes at odds with freedom - good computer security can certainly be achieved without this degree of centralization of power. Maybe you can't protect a determined user from hurting themselves, but that seems like an acceptable price for freedom.
We are fast becoming corporate citizens, for better and for worse: https://www.youtube.com/watch?v=l3pkkSNRug4
While there is some truth to the security argument - security after all is sometimes at odds with freedom - good computer security can certainly be achieved without this degree of centralization of power. Maybe you can't protect a determined user from hurting themselves, but that seems like an acceptable price for freedom.
"Y'know, it sure would be a shame if our OS went around telling users your software's a virus. Now we c'n make sure this little problem doesn't happen to you, all you gotta do is fork over the $300 (yearly of course) to join our developer program."
Nothing like a good old protection racket. No wonder Apple's worth trillions of dollars.
Nothing like a good old protection racket. No wonder Apple's worth trillions of dollars.
This behavior frustrates me, as a seasoned (=old) Mac user, but I am simultaneously quite grateful for it existing on my parents Macs.
It would be nice if there was a Sys Prefs option to add a "run anyway" button to the initial prompt. It wouldn't even need to be on by default. Just give me the option.
It would be nice if there was a Sys Prefs option to add a "run anyway" button to the initial prompt. It wouldn't even need to be on by default. Just give me the option.
I was surprised to find out the something even worse is happening on default installations of Windows 10: you cannot install non-Microsoft software at all unless you go to the system settings and disable "S mode".
It's impossible for someone who's not technically oriented to know how to disable S mode or even what it is, and trying to get my mum to install Google Chrome on her new computer was harder than it has any right to be.
When did the ability to run software get this bad?
It's impossible for someone who's not technically oriented to know how to disable S mode or even what it is, and trying to get my mum to install Google Chrome on her new computer was harder than it has any right to be.
When did the ability to run software get this bad?
Fellow devs, I have to take the minority view here. How is $99/yr a number that any business should even care about? Even for OSS.
The reality is that the HN audience are complete outliers. Just look at the junk your friends and family install on their machines.
On a related note, the equivalent in Windows is SmartScreen. It prompts similarly to Mac for unsigned downloads as well as signed ones where there isn't yet sufficient reputation on the signing key. That last part is frustrating - we have a downloadable software component for our SaaS. It's not that frequently used and every time we renew the cert (third party BTW, not with MS), it takes a few weeks for SmartScreen to start trusting it.
The reality is that the HN audience are complete outliers. Just look at the junk your friends and family install on their machines.
On a related note, the equivalent in Windows is SmartScreen. It prompts similarly to Mac for unsigned downloads as well as signed ones where there isn't yet sufficient reputation on the signing key. That last part is frustrating - we have a downloadable software component for our SaaS. It's not that frequently used and every time we renew the cert (third party BTW, not with MS), it takes a few weeks for SmartScreen to start trusting it.
I have yet to get a good answer to this question: what do these checks do?
They just confirm the developer has $100? Does Apple actually make sure signed binaries don't do anything bad?
They just confirm the developer has $100? Does Apple actually make sure signed binaries don't do anything bad?
I dont see any problem with this. If you don't feel comfortable doing this then you definitely shouldn't be running random code from the internet. I would take it a step further and force it to be run from the command line.
Also, what kind of "viable software business" has trouble paying $100 a year?
Also, what kind of "viable software business" has trouble paying $100 a year?
How does this work for Java programs?
The actual java binary (JVM) can be (is?) signed and used for many different apps/programs. But the .jar file that is executed probably can't be signed.
(Note: I have never done any "native" Mac programming)
The actual java binary (JVM) can be (is?) signed and used for many different apps/programs. But the .jar file that is executed probably can't be signed.
(Note: I have never done any "native" Mac programming)
As a data point: I am indeed a new Mac user, and I would never have guessed how to override gatekeeper and run the app if it weren't for (I think) stackexchange or a similar site providing detailed step-by-step instructions on how to do it. I'm a Linux power user so googling is no strange thing to me, but still, macOS really goes out of the way to hide this choice!
In my opinion, it's simply not possible to learn how to override it by following macOS UI "hints". Every step of the way seems designed to hide this possibility, instead of giving users a warning and a clear choice.
In my opinion, it's simply not possible to learn how to override it by following macOS UI "hints". Every step of the way seems designed to hide this possibility, instead of giving users a warning and a clear choice.
Disabling Gatekeeper
From the Apple menu, open the "System Preferences" application.
Click on Security & Privacy > General tab.
If the lock in the left-hand corner is locked, click on it, then enter your Mac's username and password. This may not be required.
Click "Anywhere" under "Allow applications downloaded from:".
If you followed Step 3, please click the lock in the left-hand corner to return it to its locked state.
Close "System Preferences".
I don't understand how any developer can willingly use a Mac these days. When you buy a Mac, you don't own it.
I have a similar idea about services like Amazon Lambda; why would developers build apps tightly integrated with a product that they don't own.
Most millennials these days own nothing because they keep perpetually accepting their position as 'renters' through every decision they make.
I have a similar idea about services like Amazon Lambda; why would developers build apps tightly integrated with a product that they don't own.
Most millennials these days own nothing because they keep perpetually accepting their position as 'renters' through every decision they make.
I've seen a few apps get around this by packaging them in a standard .dmg and giving the user clear instructions ("just right-click") as the background image of the opened container, or as the name of the app, or on the download website, etc. Although generally these have been fairly tech-oriented apps where the users would be likely to know the shortcut anyway!
I would say this is an example of how the user interface - and some of back-end plumbing - of a desktop environment [1] is not designed to serve users, their needs and interests. Instead, it's designed to serve Apple's needs and interests at the expense of users.
For me, this is a much stronger reason to avoid Apple software than whether it's FOSS or not. I can live with a company which makes some proprietary app. I mean, I am annoyed that access to it is restricted, but at least the "deal" is upfront.
When what I see and what I can run and how it runs is the object of direct partisan manipulation, and trade between commercial companies for epistemic access to a captive user-base, that's a whole other story and it just makes me sick.
---
[1] : I'm letting Apple enjoy the benefit of the doubt and assuming the "signing" business is not enforced at kernel-level, only by the graphical desktop environment's application launching mechanism.
For me, this is a much stronger reason to avoid Apple software than whether it's FOSS or not. I can live with a company which makes some proprietary app. I mean, I am annoyed that access to it is restricted, but at least the "deal" is upfront.
When what I see and what I can run and how it runs is the object of direct partisan manipulation, and trade between commercial companies for epistemic access to a captive user-base, that's a whole other story and it just makes me sick.
---
[1] : I'm letting Apple enjoy the benefit of the doubt and assuming the "signing" business is not enforced at kernel-level, only by the graphical desktop environment's application launching mechanism.
I'm the main contributor of an app that emulates Windows's alt-tab feature on macOS (https://github.com/lwouis/alt-tab-macos). I researched this topic extensively, and eventually decided that I would bite the bullet and pay from my own pocket, so that users get a good UX when launching the app.
It is displeasing to see Apple not having an open-source program in-which they give free certificates for popular open-source projects after a review. They are a large beneficiary of OSS after all.
Furthermore, smaller companies do it frequently these days: Jetbrains gave me free IDE licenses, poeditor gave me a free account, github hosts the project code, ticketing system, and is the distribution channel for first downloads and updates, appcenter hosts crash reports for free, travis does the CI for free, etc.
It is displeasing to see Apple not having an open-source program in-which they give free certificates for popular open-source projects after a review. They are a large beneficiary of OSS after all.
Furthermore, smaller companies do it frequently these days: Jetbrains gave me free IDE licenses, poeditor gave me a free account, github hosts the project code, ticketing system, and is the distribution channel for first downloads and updates, appcenter hosts crash reports for free, travis does the CI for free, etc.
I came across this problem when I wrote a small program for a humanities professor to help him draw some diagrams. He didn't want a web app ("it'll disappear once you graduate!") so I wrote him a mac app and emailed it... it was such an adventure getting him to ignore the security warnings to run it...
Windows is starting to pull the same shit. Walled garden OS's are the future for most regular users.
Why operating systems don't provide a sandbox for running unsigned apps by default?
Is your app signed and secured? it runs in the current environment. Otherwise it runs in a copy of the current environment, with restrictions as to what it can send/receive from the world.
Is your app signed and secured? it runs in the current environment. Otherwise it runs in a copy of the current environment, with restrictions as to what it can send/receive from the world.
I've ran into this signing issue a few years ago when trying to distribute a binary for applications (tips, if you need to do so here: https://henvic.dev/posts/cs-security/), and while it's a hassle for developers I really appreciate that this is making using computer applications safer.
The next step is naturally adding boundaries about what applications can do just akin to containers, sandboxes, or permissions found on smartphones operating systems. I just hope some sort of standard emerges so we don't have each major vendor implementing their own incompatible system (okay, too late).
The next step is naturally adding boundaries about what applications can do just akin to containers, sandboxes, or permissions found on smartphones operating systems. I just hope some sort of standard emerges so we don't have each major vendor implementing their own incompatible system (okay, too late).
Is this only for GUI applications? Admittedly I have not done much development on Macs, but have done some exclusively-command-line work post-Gatekeeper, and have never seen that dialog (or a textual equivalent) appear when running binaries I compiled and even copied across machines; from the Terminal.
Incidentally I have never run those binaries via the Finder either, so it makes one wonder where exactly this check is --- is it something Finder does when you open apps, or when GUI libraries are loaded, or something much lower-level in the kernel, like on an exec() call? I don't have a suitable machine around at the moment to check, but the need to right-click suggests Finder is doing this?
Incidentally I have never run those binaries via the Finder either, so it makes one wonder where exactly this check is --- is it something Finder does when you open apps, or when GUI libraries are loaded, or something much lower-level in the kernel, like on an exec() call? I don't have a suitable machine around at the moment to check, but the need to right-click suggests Finder is doing this?
I think it's fine to have more checks for "normal" users, but I'd like to see a better UI for experienced users.
Either there could be a pro-mode app/setting that let's use tone down the warnings a bit and give the extra "allow" option already in the first dialog.
And/or let app developers add an extra dialog to ask for ermissions on install (e.g. in Homebrew).
I haven't tested this but apparently you can disable Gatekeeper completely using:
sudo spctl --master-disable
from https://help.apple.com/xcode/mac/10.2/index.html?localePath=...
Either there could be a pro-mode app/setting that let's use tone down the warnings a bit and give the extra "allow" option already in the first dialog.
And/or let app developers add an extra dialog to ask for ermissions on install (e.g. in Homebrew).
I haven't tested this but apparently you can disable Gatekeeper completely using:
sudo spctl --master-disable
from https://help.apple.com/xcode/mac/10.2/index.html?localePath=...
> Can you distribute Mac software over the internet without signing it, thereby avoiding Developer ID and notarization entirely? Technically, currently, yes, although Apple has indicated that a future version of macOS may not allow unsigned code to run at all.
To my knowledge, this depends on what APIs you wanna use. Using certain capabilities like Network Extensions (the on-device low-level networking APIs) requires paying $99/year for the Apple Developer Program. See https://developer.apple.com/support/app-capabilities/ for more details.
To my knowledge, this depends on what APIs you wanna use. Using certain capabilities like Network Extensions (the on-device low-level networking APIs) requires paying $99/year for the Apple Developer Program. See https://developer.apple.com/support/app-capabilities/ for more details.
If the message were completely transparent, something like "The developer didn't pay $99 for us to do a cursory check on them (or whatever it is that Apple does with that money), are you sure you want to run their software? [Move to trash] [No] [?]", then that would give the user the relevant information to make this decision, but as it is, virtually no mac user will understand what is really going on.
I also can't imagine $100 is easy to come up with in countries below level 4[1]. The OpenStreetMap Foundation recently introduced a way to waive the yearly £15 fee for OSMF membership if you have a certain number of map edits or otherwise contributed to the project. The OSM community seems to be quite diverse, but I can't imagine that Apple computers are less widespread than OpenStreetMap.
[1] https://www.gatesnotes.com/Books/Factfulness#incomegroups