Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNoDmzBinary = errors.New("runc-dmz binary not embedded in this program")
ErrNoDmzBinary is returned by Binary when there is no runc-dmz binary embedded in the runc program.
Functions ¶
func Binary ¶
Binary returns a cloned copy (see CloneBinary) of a very minimal C program that just does an execve() of its arguments. This is used in the final execution step of the container execution as an intermediate process before the container process is execve'd. This allows for protection against CVE-2019-5736 without requiring a complete copy of the runc binary. Each call to Binary will return a new copy.
If the runc-dmz binary is not embedded into the runc binary, Binary will return ErrNoDmzBinary as the error.
func CloneBinary ¶
CloneBinary creates a "sealed" clone of a given binary, which can be used to thwart attempts by the container process to gain access to host binaries through procfs magic-link shenanigans. For more details on why this is necessary, see CVE-2019-5736.
func CloneSelfExe ¶
CloneSelfExe makes a clone of the current process's binary (through /proc/self/exe). This binary can then be used for "runc init" in order to make sure the container process can never resolve the original runc binary. For more details on why this is necessary, see CVE-2019-5736.
func IsSelfExeCloned ¶
func IsSelfExeCloned() bool
IsSelfExeCloned returns whether /proc/self/exe is a cloned binary that can be guaranteed to be safe. This means that it must be a sealed memfd. Other types of clones cannot be completely verified as safe.