Apple's Failure to Check Kill Syscall Privilege “Not a Security Issue”
lists.apple.com
lists.apple.com
"-> We have not reserved a CVE for this issue as Apple is a CNA and does not > see it as a security issue. >
And here's my main teachable moment.
If a CVE Numbering Authority (CNA) does not grant a CVE to an issue (whether it be due to "not a bug" or non responsiveness or whatever) there is a simple process to deal with this. You go to the CNA's parent, a list of CNA's is currently at:
https://cve.mitre.org/cve/cna.html
in general most current CNA's have MITRE as their parent (we're working on a federated hierarchy but we're in the early stages), so using the form:
to request a CVE would be your next step. For the Open Source Distributed Weakness Filing (DWF) hierarchy each CNA and sub CNA is registered at:
https://github.com/distributedweaknessfiling/DWF-CNA-Registr...
so essentially you go to the parent and keep working your way up until either you are satisfied, or you hit MITRE and they tell you to take a hike, or give you a CVE.
Speaking of which if you are an Open Source project and want to be a CNA, polease contact me and chances are I can set you up in a pretty quick timeframe (faster than I assign CVEs because creating a CNA is a much better ROI of my time than issuing a CVE). ."
- via>" Kurt Seifried -- Red Hat -- Product Security -- Cloud"
Yes, this allows CNAs to say "not our problem" and now you have a problem, but going to Mitre is not the answer. Pushing back is the answer.
> Yes, we did try with them first and they told us they didn’t consider it a security issue, so we posted to oss-security after making sure Apple understood we’d do that unless they asked us not to.
[1]: https://lists.apple.com/archives/darwin-dev/2017/Oct/msg0000...
Additional fun fact - the issue in question was not found during new development, but by just running the same code that had worked on previous macOS versions just fine. So besides a vulnerability, it's an user-visible regression to behaviour described by POSIX APIs.
Another if you know him: “He was just trying to make iOS more functional.”
but
> "it's not a "security" issue"
So contradict yourself. It's a feature, I guess.
[0]: https://en.wikipedia.org/wiki/Information_security#Key_conce...
does not grant any privileges or expose any data to the attacker.
So the bug cannot really be exploited to compromise security except in a case where someone has gone to extraordinary lengths to keep even a local user from crashing the machine.
Do we really need to get into the discussion of how many times someone thought a bug wasn't a security problem or was unfeasible to use in an exploit in practice o ly to be proven wrong later as new techniques came about and were applied to the original problem?
The unknown unknowns are the problem here, and they are as their name suggests, hard to nail down.
Race conditions are a thing. My bet is a determined and smart hacker could find a way to weaponize this within a week at most.
I've never seen any evidence of that. Most bugs start you down rarely thought about paths and if you didn't map them out before hand all kinds of unexpected behavior could crop up.
Video is about exploiting Super Mario world, on SNES. The result is that the exploiter then proceeds to make 2 new games inside SMW: Pong and Snake.
Those games don't exist inside SMW. They were uploaded using controller inputs. All it takes is 1 hack.
This is also done in Pokemon Yellow with a link cable. The last time I saw this being done, a TAS hacker was able to inject a TCP stack over the link cable, and build an IRC client on top, and chat using the game boy.
And I realize that's not the immediate action that bug has, regarding kill(-1). But I've seen what people thought were innocuous bugs that ended up being "gimmee root" kind of bugs.
Can you cause some system process that happens to share the user with another, more interesting process to run a kill syscall?
Can you cause the system to crash while some more trusted process is in the middle of updating a configuration, password, or other data structure that will cause interesting effects after the system is restarted?
Both being able to cause other user processes to die, and to cause the system crash on demand as a user, are things I would consider individually as security problems just because they have a high probability of having unforeseen consequences. Having them together doubles the attack space (even if it does possibly create some problems with following through with a second action).
From the manpage:
If pid is -1:
If the user has super-user privileges, the signal is sent to all
processes excluding system processes and the process sending the
signal. If the user is not the super user, the signal is sent to
all processes with the same uid as the user, excluding the
process sending the signal. No error is returned if any process
could be signaled.It doesn't change the point I was trying to make much though.
Sure, their are a lot of things that can become security issues, but a lot of code has little to do with how a program operates.
Now, you can make a semantic argument that it's a security issue based on what team needs to fix it, but IMO that's a meaningless distinction for users. What's distinct about a security bug is what it allows to happen.
Is that dialog a "security feature"? Sure. (Actually, that's a stretch, because it's just lipstick over the API, but...)
Is it intended to block someone from being able to do something? No.
I'm not saying these criteria are all inclusive - for example, if the buttons were mislabeled and "Cancel" actually applied ACL changes, I'd still call it a security bug. It seems like the bug this thread is talking about clearly does meet the criteria, though. If you look at the man page for kill[1] it says unless you're root, you're only allowed to kill processes running under your user, but the bug allows a low-privilege user to kill other users' processes.
[1]https://developer.apple.com/legacy/library/documentation/Dar...
Just because it isn't categorized as a security issue doesn't mean their engineers aren't looking for solutions, even if they're publicly trying to downplay the issue. And just because its not a security issue today doesn't mean it can't be escalated into one when we know more about the exploit.
They're not dumb. In fact, I'd say they're acting with more logic and measure than the alarmists in this thread.
Every bug that causes the system to malfunction should be considered a possible security problem. The difference is how much severity you rate it and how quickly you decide to address it.
It's the "So the bug cannot really be exploited to compromise security..." point of view I find dangerous. Historically it's led to quite a few problems.
It'd be quite easy to DoS commercial build services with this technique and there seems to be no way to stop it and detecting it can be pretty difficult. Depending on how the logging for such a server is structured, it may even be hard to tell which customer did it.
This is also on the heels of a bug that's been discovered where it's possible to hang many types of system monitoring by abusing a race condition in the UNIX<->mach layer to block all process inspection tools on the OS.
Given that Apple forces us to run OSX build servers, they should take the integrity of basic syscall checking seriously. And that totally ignores the chaos one person with an agenda (or poor project security) can cause if they get code that does this into Homebrew.
I'd assume that most build farms build on VMs to avoid exactly this kind of problem -- building on bare metal seems pretty risky.
Are one allowed to run macOS on a VM that is not apple hardware. Can you just buy macOS and run it on a vm, or is it a gray area?
These links are fun:
People build Hackintoshes. I’ve personally run OSX VMs on both windows and macs and built a Hackintosh.
Note I am saying OS X, haven’t done this since MacOS.
The SLA¹ for macOS 10.13 allows you to run up to 2 additional copies of macOS in virtual machines on your existing Mac hardware. So each Mac can run up to 3 copies of the OS in total. You may not run it on non-Mac hardware.
Anyway, I'm glad they fixed it now, but the response to our original bug submission didn't inspire a ton of confidence.
Looks like it has been fixed in macOS 10.13.2 anyway.