Earlier quoted context omitted.
The "varsectomy" bug in Chrome isn't the example you think it is, because disabling SIP was not sufficient conditions for it. There were 3 other conditions that had to be met, the most notable of which is that "/" had to be writeable by tho logged-in user, which is not the default. This is an example of defense-in-depth being present, and defense-in-depth still failing for some users who gave escalated permissions to…
The two other conditions listed in the page you link basically amount to "the buggy code has to run". Related, I think SSV [1], introduced last year, would also have blocked this bug even with SIP disabled. But none of that invalidates concern that areas of the OS we don't know about might not have the level of defence in depth that we would like - it's not like Apple has never cut corners or shipped bugs to hit a da…
macOS Containers v0.0.1
251–260 of 374 posts
Re: macOS Containers v0.0.1
#252When macOS runs on Unix kernel and Linux systems are the best supported for containerisation and I assume are much more lightweight than macOS, I personally don't see any reason to run macOS in a container.
Re: macOS Containers v0.0.1
#253Earlier quoted context omitted.
> homebrew is pretty great I hear this said a lot in passing, and I'm really curious what people mean when they say this.
They mean they haven’t tried another package manager for Mac, like pkgsrc or macports.
Re: macOS Containers v0.0.1
#254Earlier quoted context omitted.
All of that appeared first in HP-UX, Solaris and Aix. Xenix and Coherent were the first UNIX on consumer hardware.
Which is why I said: “All of that stuff was not a first ever implementation, of course, but it was well executed and led the way.” Apple is rarely the first at doing something but it's often the first that's good and cheap enough that people care about.
Please cite a USENIX research paper from Apple.
Re: macOS Containers v0.0.1
#255https://github.com/macOScontainers/macos-jail - new code https://github.com/macOScontainers/rund - new code https://github.com/macOScontainers/moby - fork, 6 commits https://github.com/macOScontainers/buildkit - fork, 4 commits https://github.com/macOScontainers/containerd - fork, 5 commits Would be interesting to see if they can get moby/buildkit/containerd changes upstreamed
Other part of containerd changes waits for gods-know-what: https://github.com/containerd/containerd/pull/9054
But I haven't gave up yet.
Re: macOS Containers v0.0.1
#256I get the point of isolation for build/test situations. But Apple provides a neat virtualization framework, and you get security + isolation + reproducibility + decent performance.
It seems like if you feel the need to containerize the userspace on MacOS you're using MacOS wrong. It's not the same thing as the Linux userspace, and doesn't have the same kernel features that would let you do so cleanly or performantly.
Orbstack is moving mountains to provide Linux-native perf and support for containers and it still makes me beg the question: why are devs allergic to just using Linux natively? At least I understand why Orbstack is useful, I don't know why containerizing MacOS itself is.
Re: macOS Containers v0.0.1
#257Earlier quoted context omitted.
I’ve never had problems debugging anything with SIP on.
My experience is that I was unable to debug Maestral (a Python program) crashing in native Cocoa bindings in LLDB, because the interpreter did not allow itself to be debugged. Mozilla says Firefox acts the same way at https://firefox-source-docs.mozilla.org/contributing/debuggi... . It's possible there's some workaround I'm not aware of, but I ended up disabling SIP just like every non-macOS computer I own.
If the latter, it's definitely a footgun but you shouldn't be using it for applications. It's a legacy binary for scripts.
Re: macOS Containers v0.0.1
#258Earlier quoted context omitted.
I am also interested in the API boundary. It seems that there are too options: 1. Rely on system call stability. This is like Linux containers but unlike Linux macOS doesn't provide a stable system call API. So this would break when the system updates with a change that modifies the system call API. 2. Install the host libraries into the container at runtime. This should provide as much stability as macOS apps usuall…
> macOS doesn't provide a stable system call API I'm really wondering, do you have any links about macOS syscall stability over versions?
* The most obvious is the commonly mentioned fact that syscalls may change. Here is an example where golang program broke because they were directly using the `gettimeofday()` syscalls[2].
* The interface between the kernel and the dynamic linker (which is required since ABI stability for statically linked executables is not guaranteed) is private and may change between versions. That means if your chroot contains a `dyld` from an OS version that is not the same as the host kernel it may not work.
* The format of the dyld shared cache changes most releases, which means you can't just use the old dyld that matches the host kernel in your chroot because it may not work with the dyld shared cache for the OS you are trying to run in the chroot.
* The system maintains a number of security policies around platform binaries, and those binaries are enumerated as part of the static trust cache[3]. Depending on what you are doing and what permissions it needs you may not be able to even run the system binaries from another release of macOS.
In practice you can often get away with a slight skew (~1 year), but you can rarely get away with skews of more than 2-3 years.
[1]: https://developer.apple.com/library/archive/qa/qa1118/_index...
[2]: https://github.com/golang/go/issues/16606
[3]: https://support.apple.com/guide/security/trust-caches-sec7d3...
Re: macOS Containers v0.0.1
#2597G images, wow
Re: macOS Containers v0.0.1
#260Earlier quoted context omitted.
I wish more of those 10k people would help get others off of a package manager that is so fragile and convoluted that updating so often leads to popular things breaking. Things like macports and pkgsrc do things in an arguably much simpler, more unixy way, without the contortions that so often seem to leave homebrew in a bind after routine operations like updating.
I’ve never experienced a broken homebrew and I’ve used Mac for years