Hacker News new | past | comments | ask | show | jobs | submit login

If you install an app in ~/Applications, it can auto update without root, but any sus code can overwrite it without root rights too



Nope, that was fixed several releases back. macOS doesn't use the concept of a root user for years. It's there in the APIs for backwards compatibility but the actual enforced permission model is nothing like UNIX.

1. Apps can't tamper with each others files. Try writing an app that writes to another app's bundle, even if it's in $HOME, and you'll find you can't. One way to test this quickly is to ensure that your terminal app doesn't have "Manage applications" privilege in the settings app, restart it, then use vim to open a file in a bundle that appears to have user write permissions. You'll find it is read only.

2. root can't make arbitrary changes to the system unless you disable SIP (requires messing around in recovery mode terminals).


I think you are wrong about Unix model only existing for compatibility

1. OK, so it requires terminal to have some entitlement first I guess. If you needed to grep some app's bundle in the past you probably gave it already.

2. many apps ask for admin user/password when updating. including say Docker. some developer software specifically says "we ask you this because we need to sudo"

stuff under SIP I think includes some stock apps, some top level /bin and the like, but everything else is fair game for root. Which is a lot. If you use MacPorts then all of that is under sudo


Grepping is always allowed because it's read only.

Yes some dev tools like Docker ask for admin passwords, but that's not typical of most Mac users experience.

Root still exists, but outside of software originally built for Linux or some odd edge cases, you won't encounter it.


> Grepping is always allowed because it's read only.

This is false on multiple levels. For a fact it is absolutely NOT "always allowed". If you ever ran a find or ls that goes into dirs like Downloads or Documents for the first time you would know you always get a prompt. But once it IS allowed, you can write there.

You're right that there is protection and verification of some signed app bundles, and I was wrong to say you can easily edit apps. For most apps even if you can edit them macos should raise a stink and say the app is damaged IF SIP is enabled and macos checks the signatures.

But I don't know if it works if the app is modified before first launch and launched without Internet because this is verified through Apple notary servers. Also I wrote files and modify plist in some signed Tauri/Deno app and spctl did show a warning but macos didn't care and launched it without any alerts.

And anyway if you have xcode set up some sus code can also sign whatever they write and good luck then;)

TL;DR as I wrote in another comment using ~/Applications is not totally insecure with SIP and all but still less secure.

This comment was edited, my original comment was too dismissive and wrong.


It's not (entirely) signature based. Try editing Chrome's Info.plist. If you can do it your terminal or editor probably has app management or full disk access permissions. Note that signatures are only checked on native code binaries every time. For data files and bundle structure, it's only checked once the first time the app is run. The signature is checked even without internet access, and normally notarization can be checked too via stapling.


> Try editing Chrome's Info.plist. If you can do it your terminal or editor probably has app management or full disk access permissions

I can edit plists for a bunch of signed and popular apps but MOST of them would be "damaged" on next launch. However a Tauri template app was launched.

and malware doesn't need to modify apps. Just rm an app and put a modified version instead. You can do this in ~/Applications without sudo or app management permissions


Which is madly insecure, right?


I think so, somebody correct me if I'm wrong. Maybe if SIP is on and untrusted software is disabled then it would be caught, but if you have xcode then sus code can also probably sign whatever it created.

/Applications seems defense in depth for developer machines that often run untrusted code. Apps ask for admin to update & then I can deny it and go check the official site and stuff for download later




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: