ಕರ್ನಲ್ನಲ್ಲಿ cgroups v1 ಸಂಪನ್ಮೂಲ ಸೀಮಿತಗೊಳಿಸುವ ಕಾರ್ಯವಿಧಾನದ ಅನುಷ್ಠಾನದಲ್ಲಿನ ದುರ್ಬಲತೆಯ (CVE-2022-0492) ವಿವರಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಲಾಗಿದೆ. Linux, ಇದನ್ನು ಪ್ರತ್ಯೇಕ ಪಾತ್ರೆಗಳಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಬಳಸಬಹುದು. ಸಮಸ್ಯೆಯು ಕರ್ನಲ್ನಿಂದ ಪ್ರಾರಂಭವಾಗಿ ಸ್ವತಃ ಪ್ರಕಟವಾಗುತ್ತದೆ. Linux 2.6.24 ಮತ್ತು ಕರ್ನಲ್ ಬಿಡುಗಡೆಗಳಾದ 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266, ಮತ್ತು 4.9.301 ನಲ್ಲಿ ಸರಿಪಡಿಸಲಾಗಿದೆ. ನೀವು ಈ ಪುಟಗಳಲ್ಲಿ ವಿತರಣೆಗಳಲ್ಲಿ ಪ್ಯಾಕೇಜ್ ನವೀಕರಣಗಳ ಬಿಡುಗಡೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು: Debian, ಹೀಗೆ, Ubuntu, RHEL, ಫೆಡೋರಾ, ಜೆಂಟೂ, ಆರ್ಚ್ Linux.
release_agent ಫೈಲ್ ಹ್ಯಾಂಡ್ಲರ್ನಲ್ಲಿನ ತಾರ್ಕಿಕ ದೋಷದಿಂದ ದುರ್ಬಲತೆ ಉಂಟಾಗುತ್ತದೆ, ಇದು ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಪೂರ್ಣ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಚಲಾಯಿಸುವಾಗ ಸರಿಯಾದ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದಿಲ್ಲ. cgroup ನಲ್ಲಿನ ಪ್ರಕ್ರಿಯೆಯು ಕೊನೆಗೊಂಡಾಗ ಕರ್ನಲ್ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲ್ಪಡುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು release_agent ಫೈಲ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಈ ಪ್ರೋಗ್ರಾಂ ರೂಟ್ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಮತ್ತು ರೂಟ್ ನೇಮ್ಸ್ಪೇಸ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಾಮರ್ಥ್ಯಗಳೊಂದಿಗೆ ರನ್ ಆಗುತ್ತದೆ. release_agent ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿರ್ವಾಹಕರಿಗೆ ಮಾತ್ರ ಪ್ರವೇಶಿಸಲು ಉದ್ದೇಶಿಸಲಾಗಿತ್ತು, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಪರಿಶೀಲನೆಗಳು ರೂಟ್ ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶವನ್ನು ನೀಡುವುದಕ್ಕೆ ಸೀಮಿತವಾಗಿತ್ತು, ಇದು ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಕಂಟೇನರ್ನ ಒಳಗಿನಿಂದ ಅಥವಾ ನಿರ್ವಾಹಕರಲ್ಲದ ರೂಟ್ ಬಳಕೆದಾರರಿಂದ (CAP_SYS_ADMIN) ಬದಲಾಯಿಸುವುದನ್ನು ತಡೆಯಲಿಲ್ಲ.
ಹಿಂದೆ, ಅಂತಹ ವೈಶಿಷ್ಟ್ಯವನ್ನು ದುರ್ಬಲತೆ ಎಂದು ಗ್ರಹಿಸಲಾಗುತ್ತಿರಲಿಲ್ಲ, ಆದರೆ ಬಳಕೆದಾರ ನಾಮಸ್ಥಳಗಳ ಆಗಮನದೊಂದಿಗೆ ಪರಿಸ್ಥಿತಿ ಬದಲಾಯಿತು, ಇದು ಮುಖ್ಯ ಪರಿಸರದ ಮೂಲ ಬಳಕೆದಾರರೊಂದಿಗೆ ಛೇದಿಸದ ಕಂಟೇನರ್ಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕ ರೂಟ್ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಅಂತೆಯೇ, ದಾಳಿ ಮಾಡಲು, ಪ್ರತ್ಯೇಕ ಬಳಕೆದಾರ ನಾಮಸ್ಥಳದಲ್ಲಿ ತನ್ನದೇ ಆದ ಮೂಲ ಬಳಕೆದಾರರನ್ನು ಹೊಂದಿರುವ ಕಂಟೇನರ್ನಲ್ಲಿ release_agent ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಕು, ಪ್ರಕ್ರಿಯೆಯು ಪೂರ್ಣಗೊಂಡ ನಂತರ, ಮುಖ್ಯ ಪರಿಸರದ ಸಂಪೂರ್ಣ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.
ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, cgroupfs ಅನ್ನು ಕಂಟೇನರ್ನಲ್ಲಿ ಓದಲು-ಮಾತ್ರ ಮೋಡ್ನಲ್ಲಿ ಜೋಡಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ನೀವು CAP_SYS_ADMIN ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಅಥವಾ CAP_SYS_ADMIN ಹಕ್ಕುಗಳು ರಚಿಸಲಾದ ಕಂಟೇನರ್ಗೆ ಲಭ್ಯವಿರುವ ಹಂಚಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ವ್ಯವಸ್ಥೆಯ ಕರೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರತ್ಯೇಕ ಬಳಕೆದಾರ ನೇಮ್ಸ್ಪೇಸ್ನೊಂದಿಗೆ ನೆಸ್ಟೆಡ್ ಕಂಟೇನರ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ ಬರೆಯುವ ಮೋಡ್ನಲ್ಲಿ ಈ ಸೂಡೊ-ಎಫ್ಎಸ್ ಅನ್ನು ಮರುಮೌಂಟ್ ಮಾಡುವಲ್ಲಿ ಯಾವುದೇ ಸಮಸ್ಯೆ ಇಲ್ಲ.

ಪ್ರತ್ಯೇಕವಾದ ಪಾತ್ರೆಯಲ್ಲಿ ರೂಟ್ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಅಥವಾ no_new_privs ಫ್ಲ್ಯಾಗ್ ಇಲ್ಲದೆ ಕಂಟೇನರ್ ಅನ್ನು ಚಲಾಯಿಸುವಾಗ ದಾಳಿಯನ್ನು ಮಾಡಬಹುದು, ಇದು ಹೆಚ್ಚುವರಿ ಸವಲತ್ತುಗಳನ್ನು ನೀಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ಬಳಕೆದಾರ ನಾಮಸ್ಥಳಗಳನ್ನು ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು (ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ Ubuntu ಮತ್ತು ಫೆಡೋರಾ, ಆದರೆ ಸಕ್ರಿಯಗೊಂಡಿಲ್ಲ Debian ಮತ್ತು RHEL) ಮತ್ತು ರೂಟ್ cgroup v1 ಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಡಾಕರ್ ರೂಟ್ RDMA cgroup ನಲ್ಲಿ ಕಂಟೇನರ್ಗಳನ್ನು ರನ್ ಮಾಡುತ್ತದೆ). ದಾಳಿಯು CAP_SYS_ADMIN ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಸಹ ಸಾಧ್ಯವಿದೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ಬಳಕೆದಾರ ನೇಮ್ಸ್ಪೇಸ್ ಬೆಂಬಲ ಮತ್ತು ರೂಟ್ cgroup v1 ಶ್ರೇಣಿಗೆ ಪ್ರವೇಶ ಅಗತ್ಯವಿಲ್ಲ.
ಪ್ರತ್ಯೇಕವಾದ ಕಂಟೇನರ್ನಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳುವುದರ ಜೊತೆಗೆ, ದುರ್ಬಲತೆಯು ಸಾಮರ್ಥ್ಯಗಳಿಲ್ಲದ ರೂಟ್ ಬಳಕೆದಾರರಿಂದ ಅಥವಾ CAP_DAC_OVERRIDE ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿರುವ ಯಾವುದೇ ಬಳಕೆದಾರರಿಂದ (ದಾಳಿಗೆ ರೂಟ್ ಒಡೆತನದ /sys/fs/cgroup/*/release_agent ಫೈಲ್ಗೆ ಪ್ರವೇಶದ ಅಗತ್ಯವಿದೆ) ಎಲ್ಲಾ ಸಿಸ್ಟಮ್ ಸಾಮರ್ಥ್ಯಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಲು ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
Seccomp, AppArmor ಅಥವಾ SE ರಕ್ಷಣಾ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸುವಾಗ ದುರ್ಬಲತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಗಮನಿಸಲಾಗಿದೆ.Linux ಕಂಟೇನರ್ಗಳ ಹೆಚ್ಚುವರಿ ಪ್ರತ್ಯೇಕತೆಗಾಗಿ, Seccomp unshare() ಸಿಸ್ಟಮ್ ಕರೆಗೆ ಕರೆಯನ್ನು ನಿರ್ಬಂಧಿಸುವುದರಿಂದ, ಮತ್ತು AppArmor ಮತ್ತು SELinux cgroupf ಗಳನ್ನು ಬರೆಯುವ ಕ್ರಮದಲ್ಲಿ ಆರೋಹಿಸಲು ಅನುಮತಿಸಬೇಡಿ.
ಮೂಲ: opennet.ru
