Skip to content

Commit 2d17b08

Browse files
security: fix sandbox escape via env -i LD_PRELOAD Bypass
1 parent 90b760d commit 2d17b08

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

.github/workflows/build-and-push-python-pg.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
run: |
2626
DOCKER_IMAGE=ghcr.io/1panel-dev/maxkb-base
2727
DOCKER_PLATFORMS=${{ github.event.inputs.architecture }}
28-
TAG_NAME=python3.11-pg17.7-20260212
28+
TAG_NAME=python3.11-pg17.7-20260323
2929
DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME}"
3030
echo ::set-output name=docker_image::${DOCKER_IMAGE}
3131
echo ::set-output name=version::${TAG_NAME}

apps/application/flow/backend/sandbox_shell.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def execute(
6262
if _enable_sandbox:
6363
# 用 runuser 在子进程里切换用户,父进程凭据保持不变,
6464
# 避免父进程 ruid/euid 不一致导致 execve 报 Permission denied
65-
command = f"runuser -u {_run_user} -- env -i LD_PRELOAD=/opt/maxkb-app/sandbox/lib/sandbox.so PATH=${{PATH}} {command}"
65+
command = f"env -i LD_PRELOAD=/opt/maxkb-app/sandbox/lib/sandbox.so PATH=${{PATH}} gosu {_run_user} {command}"
6666
# command = f"runuser -u {_run_user} -- env -i PATH=${{PATH}} {command}"
6767

6868
# print(f"Executing command in sandbox: {command}")

installer/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ RUN cd ui && ls -la && if [ -d "dist" ]; then exit 0; fi && \
66
NODE_OPTIONS="--max-old-space-size=4096" npx concurrently "npm run build" "npm run build-chat" && \
77
find . -maxdepth 1 ! -name '.' ! -name 'dist' ! -name 'public' -exec rm -rf {} +
88

9-
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.7-20260212 AS stage-build
9+
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.7-20260323 AS stage-build
1010
COPY --chmod=700 . /opt/maxkb-app
1111
RUN apt-get update && \
1212
apt-get install -y --no-install-recommends gcc g++ gettext libexpat1-dev libffi-dev && \
@@ -24,7 +24,7 @@ RUN gcc -shared -fPIC -o ${MAXKB_SANDBOX_HOME}/lib/sandbox.so /opt/maxkb-app/ins
2424
rm -rf /opt/maxkb-app/installer
2525
COPY --from=web-build --chmod=700 ui /opt/maxkb-app/ui
2626

27-
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.7-20260212
27+
FROM ghcr.io/1panel-dev/maxkb-base:python3.11-pg17.7-20260323
2828
ARG DOCKER_IMAGE_TAG=dev \
2929
BUILD_AT \
3030
GITHUB_COMMIT

installer/Dockerfile-base

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
2828
mkdir -p /opt/maxkb-app/sandbox/lib && chmod -R 550 /opt/maxkb-app/sandbox && \
2929
useradd --no-create-home --home /opt/maxkb-app/sandbox -s /usr/sbin/nologin sandbox -g root && \
3030
chmod g-rwx /usr/local/bin/* /usr/bin/* /bin/* /usr/sbin/* /sbin/* /usr/lib/postgresql/17/bin/* && \
31-
chmod g+xr /usr/bin/ld.so /usr/local/bin/python* `which env` && \
31+
chmod g+xr /usr/bin/ld.so /usr/local/bin/python* && \
3232
chmod -R g-rwx /tmp /var/tmp /var/lock && \
3333
chmod g+rx /tmp && \
3434
apt-get clean all && \

0 commit comments

Comments
 (0)