OpenShift - SCC bypass
์ด ํ์ด์ง์ ์ ์ ์๋ Guillaume
ํน๊ถ ๋ค์์คํ์ด์ค
๊ธฐ๋ณธ์ ์ผ๋ก SCC๋ ๋ค์ ํ๋ก์ ํธ์ ์ ์ฉ๋์ง ์์ต๋๋ค:
default
kube-system
kube-public
openshift-node
openshift-infra
openshift
์ด๋ฌํ ๋ค์์คํ์ด์ค ์ค ํ๋์ ํ๋๋ฅผ ๋ฐฐํฌํ๋ฉด SCC๊ฐ ์ ์ฉ๋์ง ์์ ํน๊ถ์ด ์๋ ํ๋๋ฅผ ๋ฐฐํฌํ๊ฑฐ๋ ํธ์คํธ ํ์ผ ์์คํ ์ ๋ง์ดํธํ ์ ์์ต๋๋ค.
๋ค์์คํ์ด์ค ๋ ์ด๋ธ
RedHat ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ํ๋์์ SCC ์ ์ฉ์ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ค์ ๊ถํ ์ค ํ๋ ์ด์์ด ์์ด์ผ ํฉ๋๋ค:
๋ค์์คํ์ด์ค ์์ฑ ๋ฐ ํด๋น ๋ค์์คํ์ด์ค์ ํ๋ ์์ฑ
๋ค์์คํ์ด์ค ํธ์ง ๋ฐ ํด๋น ๋ค์์คํ์ด์ค์ ํ๋ ์์ฑ
ํน์ ๋ ์ด๋ธ openshift.io/run-level
์ ์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ SCC๋ฅผ ์ฐํํ ์ ์๋๋ก ํฉ๋๋ค. RedHat ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, ์ด ๋ ์ด๋ธ์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ค์์คํ์ด์ค ๋ด์ ๋ชจ๋ ํ์ ๋ํด SCC๊ฐ ์ ์ฉ๋์ง ์์ผ๋ฏ๋ก ์ ํ ์ฌํญ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
๋ ์ด๋ธ ์ถ๊ฐ
๋ค์์คํ์ด์ค์ ๋ ์ด๋ธ์ ์ถ๊ฐํ๋ ค๋ฉด:
๋ค์์ YAML ํ์ผ์ ํตํด ๋ ์ด๋ธ์ด ์ง์ ๋ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค:
์ง๊ธ, ๋ค์์คํ์ด์ค์ ์์ฑ๋ ๋ชจ๋ ์๋ก์ด ํ๋๋ ์ด๋ค SCC๋ ๊ฐ์ง์ง ์์์ผ ํฉ๋๋ค
SCC๊ฐ ์์ผ๋ฉด ํ๋ ์ ์์ ์ ํ์ด ์์ต๋๋ค. ์ด๋ ์ ์์ ์ธ ํ๋๊ฐ ํธ์คํธ ์์คํ ์ผ๋ก ์ฝ๊ฒ ์ดํ๋ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด์ ํธ์คํธ ์์คํ ์ ์ก์ธ์ค ๊ถํ์ ์น๊ฒฉํ์ฌ ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ์ธ์ํ๊ณ 'cluster-admin' ๊ถํ์ ์ป๋ ๊ฒ์ด ๋ ์ฌ์์ก์ต๋๋ค. ๋ค์ ํ์ด์ง์์ Node-Post Exploitation ๋ถ๋ถ์ ์ฐพ์๋ณด์ธ์ :
์ฌ์ฉ์ ์ ์ ๋ ์ด๋ธ
๋ํ ๋์ ์ค์ ์ ๋ฐ๋ผ ์ด์ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ผ๋ถ ์ฌ์ฉ์ ์ ์ ๋ ์ด๋ธ / ์ฃผ์์ด ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ ์ด๋ธ์ด ํน์ ๋ฆฌ์์ค์ ๋ํ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ์ ํํ๊ฑฐ๋ ์ ํํ์ง ์๋๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ผ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฝ์ ์ ์๋ค๋ฉด ์ฌ์ฉ์ ์ ์ ๋ ์ด๋ธ์ ์ฐพ์๋ณด์ธ์. ์ฌ๊ธฐ์ ํฅ๋ฏธ๋ก์ด ๋ฆฌ์์ค ๋ชฉ๋ก์ด ์์ต๋๋ค :
Pod
Deployment
Namespace
Service
Route
๋ชจ๋ ํน๊ถ ์๋ ๋ค์์คํ์ด์ค ๋์ด
๊ณ ๊ธ exploit
OpenShift์์๋ ์ด์ ์ ์์ฐํ ๋๋ก openshift.io/run-level
๋ ์ด๋ธ์ด ์๋ ๋ค์์คํ์ด์ค์ pod๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๊ถํ์ด ์๋ค๋ฉด ํด๋ฌ์คํฐ๋ฅผ ์ฝ๊ฒ ํ์ทจํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ ์ค์ ๊ด์ ์์ ์ด ๊ธฐ๋ฅ์ OpenShift์ ์ค๊ณ์ ๋ด์ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ Open Policy Agent GateKeeper์ ๊ฐ์ ์ํ ์กฐ์น๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ด ๋ ์ด๋ธ์ ์ค์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
GateKeeper์ ๊ท์น์ ์ฐํํ๊ณ ์ด ๋ ์ด๋ธ์ ์ค์ ํ์ฌ ํด๋ฌ์คํฐ ํ์ทจ๋ฅผ ์คํํ๋ ค๋ฉด ๊ณต๊ฒฉ์๋ ๋์์ ์ธ ๋ฐฉ๋ฒ์ ์๋ณํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated