容器安全之 Docker 限制 SUID 權限,利用 No New Privileges 預防容器內提權

這篇文章請佐以我在Youtube的影片使用:
(影片才是重點,這邊算是小小筆記)

容器安全之 Docker 限制 SUID 權限,利用 No New Privileges 預防容器內提權

這次分享的是容器安全的防禦方法之一
利用的是Docker的參數no-new-privileges
no-new-privileges可以限制容器內的SUID/SGID的提權
(其實也不僅僅限於SUID/SGID,想了解更多,可以參考Docker官方文件或是Linux Kernel)

以下為影片中使用的程式碼
(不要認真管語法或是寫法正不正確,反正可以執行就好XD)

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
int main()
{
 setuid(0);
 system("id");
}Code language: PHP (php)

影片中使用的是網路上隨便找到的IMAGE
https://hub.docker.com/r/yeasy/simple-web/
如果需要跟我使用一樣的IMAGE的話,記得要先pull下來

docker pull yeasy/simple-web

影片中的NOTE
(影片裡面因為IMAGE NAME錯誤,這邊有修正)

NOTE:
1. HOST demo chmod +x execute-id
2. HOST demo chmod 4755 execute-id
3. Container demo w/o no-new-privilege chmod 4755 execute-id
docker run -it -p 8088:80 yeasy/simple-web:latest
4. Container demo w/ no-new-privilege chmod 4755 execute-id
docker run -it -p 8088:80 --security-opt no-new-privileges yeasy/simple-web:latestCode language: JavaScript (javascript)

其他參考的指令

#從HOST傳送檔案到Container當中
docker cp ./execute-id b3e525054855:/code
#進入Container當中的/bin/bash
docker exec -it container_name /bin/bash
Code language: PHP (php)

發佈留言