iT邦幫忙

2023 iThome 鐵人賽

0

Yes

  1. 安裝 runsc,參考 gVisor Installation
    套用設定 Docker Quick Start
(
  set -e
  ARCH=$(uname -m)
  URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}
  wget ${URL}/runsc ${URL}/runsc.sha512 \
    ${URL}/containerd-shim-runsc-v1 ${URL}/containerd-shim-runsc-v1.sha512
  sha512sum -c runsc.sha512 \
    -c containerd-shim-runsc-v1.sha512
  rm -f *.sha512
  chmod a+rx runsc containerd-shim-runsc-v1
  sudo mv runsc containerd-shim-runsc-v1 /usr/local/bin
) # 下載 runsc 程式

sudo runsc install ;
sudo systemctl restart docker ;
  1. 啟動 docker,並且觀察一下差異之處
# 看一下目前宿主機的 kernel 版本
uname -r ;

docker run --runtime=runsc --rm -it aeifkz/my-ubuntu:v1.0 bash ;

# 比對一下容器內看到的 kernel 版本
uname -r ;

# 在容器內測試其他特性,試著對 process 做一些觀察
sleep 999999999 ;

# 切到宿主機測試一下是否能夠查到
# 意外發現看不到惹
ps aux | grep 999999999 ;

# 在容器內測試其他特性,試著對 /tmp 內部新增一個檔案看看
touch /tmp/i_am_givsor ;

# 切到宿主機去搜尋這個檔案,發現找不到
sudo find /var/lib/docker -name "i_am_givsor"

wget https://github.com/genuinetools/amicontained/releases/download/v0.4.9/amicontained-linux-amd64 && chmod +x amicontained-linux-amd64 ;

# 會發現 gvisor 到預設沒開 apparmor 跟 seccomp
./amicontained-linux-amd64 ;
  • 從上面的一些測試中可以發現原本在 runc 可以成功觀察到的資訊切換到 runsc 之後就看不到了,感覺彷彿這個容器跟虛擬機有一樣的隔離效果。接下來利用此容器測試之前練過的容器逃逸手法,
攻擊手法 gvisor 能否阻擋?
privileged + host pid Y
--cap-add=ALL + host pid Y
privileged Y
(CVE-2022-0492) unshare + cgroup 特權逃逸手法 Y
安裝 linux_module Y
docker.sock 掛載 Y
  • 今日總結 :
    • 本日回顧 :
      • Google 的 gVisor 算是位於在容器與虛擬機之間的平衡點,它本身具有一層獨立的 kernel 去過濾系統呼叫。相比起來它不像虛擬機需要模擬底層硬體的運作,但也不像容器都使用宿主機的資源。但與 podman 使用上需注意的事情相同,雖然它具有較高的安全性,但仍需要考慮到應用程式運作是否正常。
    • 次日預告 :
      • 接著要開始對映像檔著手,假如我們能夠將映像檔內的功能最小化,最小化到攻擊者都覺得難用到不想用,這也是一種防禦的攻擊方式。

上一篇
Day 37 - (防禦) Redhat podman 介紹
下一篇
Day 39 - (防禦) Distroless Image 介紹 (含作業12)
系列文
怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了63
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言