aquasecurity / kube-hunter

Hunt for security weaknesses in Kubernetes clusters
Apache License 2.0
4.77k stars 587 forks source link

build binary from source code #535

Open workerus opened 1 year ago

workerus commented 1 year ago

What are you trying to achieve

I am trying to build kube-hunter binary from source code. I am doing it in ubuntu docker image i install requirements and running make, it's building and i can run this binary in that image but when i try to run this binary on host i get error.

apt update && apt install -y linux-headers-5.15.0-67-generic build-essential tcpdump make git pip ebtables 
ln -s /usr/bin/python3 /usr/bin/python
pip install pyinstaller
git clone https://github.com/aquasecurity/kube-hunter.git
cd kube-hunter/
make build
make pyinstaller

# copy binary file to host and run it
docker cp 31c70fa49009:/root/kube-hunter/dist/kube-hunter .
./kube-hunter
[94963] Error loading Python lib '/tmp/_MEIBiZCmP/libpython3.10.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /tmp/_MEIBiZCmP/libpython3.10.so.1.0)

When i try to run binary downloaded from GitHub on the same host it's running without issues. Could you please provide me with instructions how to build binary from source code. Thank you.

workerus commented 1 year ago

Also i tried to build it using alpine image, here is my Dockerfile.

FROM python:3.8-alpine as builder

RUN apk add --no-cache \
    linux-headers \
    tcpdump \
    build-base \
    ebtables \
    make \
    git && \
    apk upgrade --no-cache
RUN pip install pyinstaller

RUN git clone https://github.com/aquasecurity/kube-hunter.git
RUN cd kube-hunter
WORKDIR /kube-hunter
RUN make deps
RUN make build
RUN make pyinstaller

#It's running fine in the image itself but when i copy binary file to host it's giving the following error
ll
total 13136
-rwxr-xr-x 1 root root 13447384 Mar 24 22:35 kube-hunter

# the file is there but for some reason i get error
./kube-hunter
-bash: ./kube-hunter: No such file or directory

# launching it with strace for debugging  
strace ./kube-hunter
execve("./kube-hunter", ["./kube-hunter"], 0x7fff96c64f30 /* 22 vars */) = -1 ENOENT (No such file or directory)
fstat(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 4), ...}) = 0
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
getpid()                                = 95976
exit_group(1)                           = ?
+++ exited with 1 +++