Skip to content

An attempt to document the types of applications which might be using abstract sockets by default. PLEASE READ THE README (esp. the bit about responsible disclosure).

License

tianon/abstract-sockets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Abstract Sockets

Abstract Sockets are a feature of the Linux kernel that lie somewhere between file-based Unix Sockets and port/network-based TCP Sockets. They are opened and referenced by name, and have several useful/unique properties:

  • automatically cleaned up when the last process using them exits
  • locking (for singleton-style processes), but without files
  • not tied to specific files on-disk / shared across the network namespace (thus usable across chroot/container boundaries)

As you might have surmised (or already known / heard), it's this last item that's the most interesting/troubling (depending on your point of view), especially when deploying containers (or using chroots for building software packages).

While it may seem odd for these to be tied to the network namespace as opposed to the mount namespace or their own kernel namespace, that's the world we're living in, so we get to adapt instead.

The following is an attempt to document the types of applications which might be using abstract sockets by default, and thus be vulnerable/accessible to --network=host containers. Applications using abstract sockets on a given host can be found using something like netstat -xl | grep ' @'.

In many cases (such as X11), the "insecure" aspect of abstract sockets is the reason they are used, but even in those cases, BEFORE suggesting an addition to this list, we expect you to make an attempt at responsible (security) disclosure to the relevant project so that they can privately make that determination for themselves (before they're put on blast). Thanks!

Useful References

Applications

About

An attempt to document the types of applications which might be using abstract sockets by default. PLEASE READ THE README (esp. the bit about responsible disclosure).

Resources

License

Stars

Watchers

Forks