Live data from Hacker News

Exploiting the Linux kernel via packet sockets

googleprojectzero.blogspot.com

21–30 of 41 posts

Re: Exploiting the Linux kernel via packet sockets

#21
post #19

Earlier quoted context omitted.

That's pretty interesting. Does it mean it allows escaping Docker containers if you compromise a service ran as root in it?

No, Docker usually drops CAP_NET_RAW within the container. But you can change that and other container technologies definitely keep CAP_NET_RAW within the container.

BTW: Depending on the configuration you can create a new namespace within Docker to gain CAP_NET_RAW since namespaces can nest.

Re: Exploiting the Linux kernel via packet sockets

#22
post #10
post #6

I wish I was smart enough for the article. 8 years of web dev doesn't make the cut unfortunately.

yeah webapps in general are the most simple aspect of programming that you can get paid to do. Not knocking it though

I personally find embedded programming easier than web development...

Re: Exploiting the Linux kernel via packet sockets

#23
post #16

Someone correct me if I'm wrong: This is a locally exploitable privilege escalation involving creation of the socket, triggerable from user level, so exploitable by local users or as a followup after another exploit is used to get some level of local access, correct?

Not really. Requires to have the CAP_NET_RAW capability, which is pretty rare. (This capability allows you raw access to the network interface, which is usually only given to the root user)

Thanks, I was a bit concerned at first when I saw the 4 words "Exploiting Linux kernel packet" on one line, but as a privilege escalation after a first exploit I won't worry as much about it.

Re: Exploiting the Linux kernel via packet sockets

#24
post #10

Earlier quoted context omitted.

yeah webapps in general are the most simple aspect of programming that you can get paid to do. Not knocking it though

I personally find embedded programming easier than web development...

But isn't embedded programming more complex? as in, it requires a well founded understanding of CS concepts, as well as requires advanced ability in programming and math.

Re: Exploiting the Linux kernel via packet sockets

#25
post #24

Earlier quoted context omitted.

I personally find embedded programming easier than web development...

But isn't embedded programming more complex? as in, it requires a well founded understanding of CS concepts, as well as requires advanced ability in programming and math.

I imagine to an embedded developer, the web just looks like madness because there's no consistency. Parachute into a web app you've never seen before, one that might not have been developed well.

Your task is to make a button that's currently green and make it blue instead. What's the right file(s) to edit? How many layers of caching do you need to disable to see that your change actually worked? Do you need to restart anything after the change for it to be seen?

The current green color could be:

- in a css file, but one that has to go through SAAS/LESS first, or maybe not. Or maybe there's more than one entry, depending on @media screen resolution? Or maybe it's not a file at all...the css "file" is generated on the fly by some server-side framework.

- in an html file, but in tags. Or maybe dynamically generated style tags via client side javascript. Or maybe server-side dynamically generated style tags? Or maybe not style tags at all? Perhaps a style attribute on the button.

- Or hey, that looks like a button, but it's not a button at all. It's an tag with button styling. And it's green, but only because of a background image. Which is loaded how (static css? dynamic js style manipulation? inline tag in the ? something else?)

Re: Exploiting the Linux kernel via packet sockets

#27
post #19

Earlier quoted context omitted.

That's pretty interesting. Does it mean it allows escaping Docker containers if you compromise a service ran as root in it?

No, Docker usually drops CAP_NET_RAW within the container. But you can change that and other container technologies definitely keep CAP_NET_RAW within the container.

Not true. CAP_NET_RAW is on by default: https://github.com/moby/moby/blob/master/oci/defaults_linux....

Otherwise no one could ping from a container.

Re: Exploiting the Linux kernel via packet sockets

#28
post #15
post #10

Earlier quoted context omitted.

yeah webapps in general are the most simple aspect of programming that you can get paid to do. Not knocking it though

(and I can't do any frontend work). Every job has its own difficulties and its own obstacles. off-topic, btw, I read tpacket == tptacek. He can easily hide in Linux kernel. No one noticed, until now.

Hey, it's an anagram!

I believe that the serial device /dev/ttyS0 was named in honor of Theodore Ts'o. So maybe tpacket could be at least retroactively declared to honor tptacek.

Re: Exploiting the Linux kernel via packet sockets

#29
post #14

Bottom line - locally exploitable vulnerability in the linux kernel, in case you have the CAP_NET_RAW capability which never really happens. Not a real security threat for your standard linux distro. On the other hand, this is a great technical write-up that describes thoroughly the internals of some of the linux kernel subsystems. Probably the best documentation you can find for some subsystems. Also shows how they…

No. Create a new user namespace and you have CAP_NET_RAW within your shiny new namespace.

But you need capabilities to create that new user namespace (CAP_SYS_ADMIN, I think)

Re: Exploiting the Linux kernel via packet sockets

#30
post #16

Someone correct me if I'm wrong: This is a locally exploitable privilege escalation involving creation of the socket, triggerable from user level, so exploitable by local users or as a followup after another exploit is used to get some level of local access, correct?

Not really. Requires to have the CAP_NET_RAW capability, which is pretty rare. (This capability allows you raw access to the network interface, which is usually only given to the root user)

No. It's exploitable by a normal unprivileged user on modern Ubuntu. From the article, "Let’s see how we can exploit this vulnerability. I’m going to be targeting x86-64 Ubuntu 16.04.2 with 4.8.0-41-generic kernel version with KASLR, SMEP and SMAP enabled. Ubuntu kernel has user namespaces available to unprivileged users (CONFIG_USER_NS=y and no restrictions on it’s usage), so the bug can be exploited to gain root privileges by an unprivileged user."
Post reply on HN