Latest Threat ResearchGlassWorm Loader Hits Open VSX via Developer Account Compromise.Details
Socket
Book a DemoInstallSign in
Socket

moul.io/dockerself

Package Overview
Dependencies
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moul.io/dockerself

Go Modules
Version
v0.0.0-20190620203223-4e24e6db24db
Version published
Created
Source

dockerself

:whale: runtime dockerizer

This is a PoC of a go program that calls the Docker API, inject itself (the binary) and switch to Docker for the execution.

It's like syscall.Exec within Docker.

:warning: the injected binary will run within Docker, so it must be build for the same architecture and should be build statically. (a.k.a. it works well on Linux).

Usage

import (
        "flag"
        "fmt"

        "moul.io/dockerself"
)

func main() {
        dockerize := flag.Bool("dockerize", false, "dockerize")
        flag.Parse()
	    if *dockerize {
		        dockerself.Dockerize("ubuntu")
                return
		}
        if dockerize.WithinDocker() {
                fmt.Println("I'm inside the matrix (docker)")
        } else {
                fmt.Println("I'm in the real world :(")
        }
}
$ ./example
I'm in the real world :(
$ ./example --dockerize
I'm inside the matrix (docker)

Example

See dockerself-example.

# go get moul.io/dockerself/dockerself-example
# dockerself-example
within docker: false
env: [XDG_SESSION_ID=93 SHELL=/bin/bash TERM=screen SSH_CLIENT=82.254.90.14 50450 22 SSH_TTY=/dev/pts/0 LC_ALL=en_US.UTF-8 USER=moul ...]
starting interactive `/bin/sh` session...
$ ls -la
total 20
drwxrwxr-x 2 moul moul 4096 Feb 14 16:48 .
drwxrwxr-x 7 moul moul 4096 Feb 14 16:48 ..
-rw-rw-r-- 1 moul moul   95 Feb 14 16:48 go.mod
-rw-rw-r-- 1 moul moul 2578 Feb 14 16:48 go.sum
-rw-rw-r-- 1 moul moul  348 Feb 14 16:48 main.go
$
# dockerself-example  --dockerize
within docker: true
env: [PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=72a73eaf8cbb TERM=xterm HOME=/root]
starting interactive `/bin/sh` session...
$ ls -la
total 10492
drwxr-xr-x  33 root root     4096 Feb 14 15:50 .
drwxr-xr-x  33 root root     4096 Feb 14 15:50 ..
-rwxr-xr-x   1 root root        0 Feb 14 15:50 .dockerenv
drwxr-xr-x   2 root root     4096 Feb  4 21:05 bin
drwxr-xr-x   2 root root     4096 Apr 24  2018 boot
drwxr-xr-x   5 root root      360 Feb 14 15:50 dev
-rwxr-xr-x   1 root root 10667575 Jan  1  1970 dockerself
drwxr-xr-x  31 root root     4096 Feb 14 15:50 etc
drwxr-xr-x   2 root root     4096 Apr 24  2018 home
drwxr-xr-x   8 root root     4096 May 23  2017 lib
drwxr-xr-x   2 root root     4096 Feb  4 21:03 lib64
drwxr-xr-x   2 root root     4096 Feb  4 21:02 media
drwxr-xr-x   2 root root     4096 Feb  4 21:02 mnt
drwxr-xr-x   2 root root     4096 Feb  4 21:02 opt
dr-xr-xr-x 266 root root        0 Feb 14 15:50 proc
drwx------   2 root root     4096 Feb  4 21:04 root
drwxr-xr-x   5 root root     4096 Feb  6 03:37 run
drwxr-xr-x   2 root root     4096 Feb  6 03:37 sbin
drwxr-xr-x   2 root root     4096 Feb  4 21:02 srv
dr-xr-xr-x  13 root root        0 Oct 13 20:12 sys
drwxrwxrwt   2 root root     4096 Feb  4 21:05 tmp
drwxr-xr-x  11 root root     4096 Feb  4 21:02 usr
drwxr-xr-x  13 root root     4096 Feb  4 21:04 var
$
container exited.
#

FAQs

Package last updated on 20 Jun 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts