Capability
리λ μ€μ Capabilitiesλ νλ‘μΈμ€μ νμν μ΅μκΆνλ§ μΈλΆμ μΌλ‘ λλμ΄ κ΄λ¦¬νλ λ©μ»€λμ¦μ λλ€.
1. Capabilitiesμ λ±μ₯ λ°°κ²½
리λ μ€λ κΈ°λ³Έμ μΌλ‘ λ€μκ³Ό κ°μ μ¬μ©μ κΈ°λ° κΆν λͺ¨λΈμ μ¬μ©ν©λλ€.
UID=0 (root): μμ€ν μ λͺ¨λ μμ μν κ°λ₯
UIDβ 0 (μΌλ° μ¬μ©μ): μ νλ κΆν
μΌλ° μ¬μ©μκ° μμ€ν
μμ€μ μΌλΆ νΉμ ν μμ
(μ: ν¬νΈ λ°μΈλ©, νμΌ μμ μ λ³κ²½, λ§μ΄νΈ λ±)μ μννκΈ° μν΄μλ setuid, setgid, sticky bitμ κ°μ νΉμ κΆνμ λΆμ¬νμ¬ ν΄λΉ μμ
μ κ°λ₯νκ² λ§λ€μ΄μΌ νμ΅λλ€.
νμ§λ§ μ΄λ¬ν λ°©μμ μ 체 root κΆνμ λΆμ¬νκ±°λ, κΆνμ λ²μλ₯Ό μΈλ°νκ² μ μ΄ν μ μλ€λ νκ³λ₯Ό κ°μ§κ³ μμ΅λλ€. νΉν setuidλ νλμ μμ
λ§μ μννκΈ° μν΄ νλ‘κ·Έλ¨ μ 체μ λ£¨νΈ κΆνμ λΆμ¬νλ λ°©μμ΄κΈ° λλ¬Έμ, 보μ μ·¨μ½μ μ΄ μ‘΄μ¬ν κ²½μ° μμ€ν
μ μ²΄κ° κ³΅κ²©μ λ
ΈμΆλλ μ¬κ°ν λ¬Έμ κ° λ°μν μ μμ΅λλ€.
μ΄λ₯Ό ν΄κ²°νκ³ μ 리λ μ€ μ»€λμ root κΆνμ μΈλΆννμ¬ κΈ°λ₯ λ¨μλ‘ λΆλ¦¬ν μ μλ Linux Capabilitiesλ₯Ό λμ νμμ΅λλ€. Capabilitiesλ κ° μμ (μ: λ€νΈμν¬ ν¬νΈ λ°μΈλ©, νμΌ μμ μ λ³κ²½, λ§μ΄νΈ λ±)μ νμν μ΅μνμ κΆνλ§μ νλ‘μΈμ€μ λΆμ¬ν μ μλλ‘ νμ¬, μ΅μ κΆν μμΉ(Principle of Least Privilege)μ μμ€ν μμ€μμ μ€νν μ μκ² ν©λλ€.
2. Capabilitiesμ μ’
λ₯
리λ μ€μμλ μ½ 41κ° μ λμ Capabilitiesκ° μ μλμ΄ μμΌλ©°, μ¬μ©νλ 컀λ λ²μ μ λ°λΌ μ‘°κΈμ© λ€λ₯Ό μ μμ΅λλ€. κΆν μμΉμ μ·¨μ½ν μ£Όμ Capabilities λͺ©λ‘μ μλ νμ κ°μ΅λλ€.
CAP_SYS_ADMIN
μμ€ν μ 체 κ΄λ¦¬ κΆν. mount, chroot, λ€μμ€νμ΄μ€ κ΄λ¦¬ λ± κ΄λ²μν μμ νμ©
π΄ λ§€μ° λμ
CAP_SETUID
νλ‘μΈμ€μ UIDλ₯Ό 0(root) λ±μΌλ‘ λ³κ²½ κ°λ₯
π΄ λ§€μ° λμ
CAP_SETGID
νλ‘μΈμ€μ GIDλ₯Ό λ³κ²½ κ°λ₯
π΄ λ§€μ° λμ
CAP_DAC_OVERRIDE
DAC(μμ μ κΈ°λ° κΆν κ²μ¬) 무μ κ°λ₯ β λͺ¨λ νμΌ μ½κΈ°/μ°κΈ°
π΄ λ§€μ° λμ
CAP_DAC_READ_SEARCH
μ½κΈ° λ° λλ ν 리 κ²μ κΆν 무μ
π΄ λ§€μ° λμ
CAP_FOWNER
μμ μ΄ μμ νμ§ μμ νμΌμλ μμ μ κΆνμΌλ‘ μμ κ°λ₯
π΄ λμ
CAP_CHOWN
νμΌ μμ μ λ³κ²½ κ°λ₯
π΄ λμ
CAP_SYS_PTRACE
λ€λ₯Έ νλ‘μΈμ€ λ©λͺ¨λ¦¬ μ κ·Ό λ° λλ²κΉ κ°λ₯ (μνΈ, ν ν° νμ·¨ λ±)
π΄ λ§€μ° λμ
CAP_NET_ADMIN
λ€νΈμν¬ μ€μ λ³κ²½ κ°λ₯ (λΌμ°ν , μΈν°νμ΄μ€ μ μ΄, λ°©νλ²½ λ±)
π΄ λμ
CAP_NET_RAW
Raw socket μ¬μ© κ°λ₯ (ping, sniffer λ±)
π‘ μ€κ°
CAP_SYS_MODULE
컀λ λͺ¨λ μ½μ /μ κ±° κ°λ₯ (컀λ λ 벨 μ·¨μ½μ 곡격 κ°λ₯)
π΄ λ§€μ° λμ
CAP_SYS_TIME
μμ€ν μκ° λ³κ²½ (λ‘κ·Έ μμ‘°, μκ° κΈ°λ° μ°ν κ°λ₯)
π‘ μ€κ°
CAP_MKNOD
λλ°μ΄μ€ νμΌ μμ± κ°λ₯ (κ°μ§ λμ€ν¬, TTY μμ± λ±)
π‘ μ€κ°
Capabilityμ 4κ°μ§ μ§ν©κ³Ό μ΅μ
Capabilitiesλ₯Ό μ€μ ν λλ μΌλ°μ μΌλ‘ λ€μ μΈ κ°μ§ νλκ·Έκ° μ¬μ©λ©λλ€.
Permitted (νμ©λ μ§ν©)
νλ‘μΈμ€κ° κ°μ§ μ μλ Capability λͺ©λ‘
p (permitted)
Effective (μ ν¨ μ§ν©)
νλ‘μΈμ€κ° μ¦μ μ¬μ©ν μ μλ Capability λͺ©λ‘
e (effective)
Inheritable (μμ κ°λ₯ μ§ν©)
νλ‘μΈμ€κ° μμ νλ‘μΈμ€μ μμν μ μλ Capability λͺ©λ‘
i (inheritable)
Ambient (μ£Όλ³ μ§ν©)
λͺ μμ μ€μ μμ΄ μλμΌλ‘ μμ νλ‘μΈμ€μ μ λ¬λλ Capability λͺ©λ‘
λ³λ μ΅μ
μμ (ambientλ λ³λ λͺ
λ Ήμ΄λ‘ κ΄λ¦¬)
3. Capabilities νμΈ λ° μ€μ λ°©λ²
1. Capabilityκ° μ€μ λ λͺ¨λ νμΌ νμΈ
2. νμΌμ Capability νμΈ
3. νλ‘μΈμ€μ Capability νμΈ
4. νμΌμ Capability μ€μ
4. Capabilityλ₯Ό μ΄μ©ν κΆνμμΉ μλ리μ€
1. CAP_SETUID λ₯Ό μ΄μ©ν root shell νλ
/home/po3nyo/.local/python3λ°μ΄λ리μcap_setuid+epμ€μ νμΈ

ν΄λΉ ν΄λλ‘ μ΄λ ν python μ€ννμΌμ μ΄μ©νμ¬ μλ μ½λ μ€ν ν root shell νλ

2. CAP_DAC_OVERRIDE λ₯Ό μ΄μ©ν /etc/shadow νμΌ μ κ·Ό
/usr/bin/catλ°μ΄λ리μcap_dac_override+epμ€μ νμΈ

/etc/shadowμ‘°ν

root κ³μ ν¨μ€μλ ν΄μ μΆμΆ
ν΄μ ν¬λνΉμ ν΅ν΄ root ν¨μ€μλ νλ

suλͺ λ ΉμΌλ‘ root κ³μ λ‘κ·ΈμΈ

5. Mitigation
1. λΆνμν Capability μ κ±°
μΌλ° μ¬μ©μ μ κ·Ό κ°λ₯ν λ°μ΄λ리μ cap_setuid, cap_sys_admin, cap_dac_override κ°μ κ³ μν Capabilitiesκ° λΆμ¬λμ΄ μμΌλ©΄ λꡬλ μ§ λ£¨νΈ μμ νλν μ μμ΅λλ€. λ°λΌμ μ κΈ°μ μΌλ‘ νμΈνμ¬ κ΄λ¦¬ν΄μΌν©λλ€.
Capability μ€μ νμΈ
μΆλ ₯ κ²°κ³Ό μν Capabilityκ° μ€μ λ λ°μ΄λ리 νμΈ λ° μ κ±°
2. μ΅μ κΆν μμΉ(Least Privilege Principle) μ μ©
Capabilitiesλ λ£¨νΈ κΆνμ λ체ν μ μλ λ§νΌ, λ°λμ μ ννκ² νμν μμ λ§ μννλλ‘ μ΅μνν΄μΌ ν©λλ€.
μμ:
pingβcap_net_rawλ§ νμmountβ μ λλ‘ μΌλ° μ¬μ©μμκ² λΆμ¬νλ©΄ μ λ¨ (cap_sys_adminμ rootκΈ κΆν)
3. μΈν°νλ¦¬ν° λ°μ΄λ리(cap_sh, python, bash λ±)μ Capabilities κΈμ§
Python, Bash, Perl λ±μ μΈν°ν리ν°μ cap_setuid, cap_dac_override λ±μ λΆμ¬νλ©΄, μμ μ½λ μ€νμΌλ‘ λ£¨νΈ μμ λ§€μ° μ½κ² μ»μ μ μμΌλ―λ‘ μ΄λ¬ν λ²μ© λꡬμλ μ λ Capabilityλ₯Ό λΆμ¬νλ©΄ μλλ©° λΆλμ΄ν κ²½μ° AppArmorλ SELinux κ°μ Mandatory Access Control(MAC) μμ€ν
μ ν΅ν μΆκ°μ μΈ κ΄λ¦¬κ° νμν©λλ€.
4. μ κΈ°μ μ κ² λ° κ°μ
Capabilities μ€μ μ νμΌ μμ±(xattr)μ μ μ₯λλ―λ‘, μΌλ° νμΌ κ²μ¬λ‘λ 보μ΄μ§ μμ΅λλ€. μ κΈ°μ μΌλ‘ μ€ν¬λ¦½νΈλ 보μ μ κ² λκ΅¬λ‘ κ°μν΄μΌ ν©λλ€.
μ€ν¬λ¦½νΈ μμ:
Last updated