3 ms·
> iSH has nothing stopping you, the user, from wgetting arbitrary scripts or binaries and running them in the VM[0] "Nothing stopping you" in the same sense th
by derefr 2y ago
> iSH has nothing stopping you, the user, from wgetting arbitrary scripts or binaries and running them in the VM[0]
"Nothing stopping you" in the same sense that there's nothing stopping someone from using a sequence of specific gamepad button-presses to turn Super Mario World into Flappy Bird.
In vulnerability-exploitation terms, sure, the attack surface is there.
But in "would anyone actually spend time doing this" terms: no. The advantages don't outweigh the labor costs. (Especially if you're doing this for work, in anger, and you want to install an app to let you solve a problem right now by popping open a Linux terminal, and installing all the packages you need — including some arbitrary non-packaged SDKs that depend on dev-dependencies from specific known Linux flavors.)
Mind you, in theory, someone could make it easier for everyone else to do this, by writing a bootstrap script that wgets a bunch of stuff and effectively turns your iSH environment into e.g. Debian. But nobody has done this.
Why? I can't say for sure, but I suspect it's precisely because the iSH "sandbox" isn't actually a VM containing a Linux kernel, but rather an older technique — I think involving a userland of binaries compiled to use Darwin libraries; or maybe more likely, a userland linked to some Linux-on-XNU virtualization layer (custom libc, libresolv, etc.) And that's just not a "flavor" of Linux that you can find Debian packages for, or even third-party APKs for. Even if you built up your own apt base-packages repo to allow debootstrap to work, that wouldn't magically enable you to then find install deb packages from arbitrary apt repos that weren't compiled for the iSH "arch".
And I think that iSH continuing to exist on iPadOS, but persisting in doing this complex kind of virtualization rather than switching over to being "just VM software hard-coded to use a specific Linux VM", is perhaps on purpose. I'm guessing that Apple wouldn't allow "just a Linux VM" on the App Store any more than they allow UTM — again, precisely because it would unlock the capability to efficiently utilize arbitrary third-party packages, and thereby to actually use the iPad "in anger" for software-development business productivity. It would be "enough" of a development environment that some businesses might consider buying their employees iPads instead of Macs. And Apple really wants to avoid that.
> Also, iSH does have a package manager. It used to actually be modified to pull packages from the App Store but now they use a separate server. I don't remember if it's the Alpine Linux package repo or a custom thing for iSH.
It's a semi-custom thing for iSH, in that it's a custom "arch", with all the packages containing binaries compiled for the iSH virtualization layer. So you can't switch over/add on any third party repo; binaries from ordinary arm64 APKs wouldn't run. Third parties would need to create an iSH-arch release of their package specifically. And AFAIK there's no published infrastructure to enable third parties to do that.
In essence, though, the packages in this repo are still a "part of" the app. Despite being hosted on a third-party server, those packages still have to be signed — and I have a strong feeling that Apple, not the iSH dev, holds those signing keys. So Apple, not the iSH dev, gets final say over what APKs end up available in the iSH userland. (And that's why those APKs haven't been updated in a while — the iSH dev likely has to go back-and-forth with Apple when pushing out updates to their own repo — just as if they were publishing a new version of the app.)
- kmeisthax 2y agoIf you're curious, iSH's source is public: https://github.com/ish-app/ish https://github.com/ish-app/ish You're correct that there is no Linux kernel emulation. They went with reimplementation for that. However, the userland is very much emulated x86 binaries. You can even compile your own C code inside iSH and run it. When you syscall, control passes from the threaded code[0] interpreter into the Linux reimplementation. The reason why they aren't shipping Debian is that the threaded code technique being used as a JIT substitute in both iSH and UTM SE is far too slow to run a full Debian derivative. Believe me, I tried installing Ubuntu on UTM SE and it took literal hours and flattened my iPad battery in the process. iSH uses Alpine Linux because it's very lightweight[1]. As far as I'm aware there's no secret deal with Apple to lock iSH down. The only limitations I've ran into have to do with MySQL, which wants unaligned atomics, which you can't do on ARM64 without compromising the performance of the emulator. I actually had a discussion with the developer of iSH about this and put in a PR to make MySQL stop crashing iSH. [0] return-oriented programming [1] So lightweight it doesn't even ship anything GNU, making it one of the few genuine "Linux distros" with no slash or plus or "I would just like to interject"