Linux ಕರ್ನಲ್ ಅನ್ನು ರಕ್ಷಿಸಲು Huawei ಉದ್ಯೋಗಿ ಪ್ರಸ್ತಾಪಿಸಿದ ಪ್ಯಾಚ್‌ಗಳಲ್ಲಿನ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳು

Grsecurity ಯೋಜನೆಯ ಡೆವಲಪರ್‌ಗಳು ಸೆಳೆಯಿತು ಪ್ಯಾಚ್ ಸೆಟ್‌ನಲ್ಲಿ ಕ್ಷುಲ್ಲಕವಾಗಿ ಬಳಸಿಕೊಳ್ಳಬಹುದಾದ ದುರ್ಬಲತೆಯ ಉಪಸ್ಥಿತಿಗೆ ಗಮನ ಕೊಡಿ ಎಚ್‌ಕೆಎಸ್‌ಪಿ (Huawei Kernel Self Protection), ಕೆಲವು ದಿನಗಳ ಹಿಂದೆ ಪ್ರಸ್ತಾಪಿಸಿದರು Linux ಕರ್ನಲ್‌ನ ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು. ಪರಿಸ್ಥಿತಿ ನೆನಪಿಸುತ್ತದೆ ಸ್ಯಾಮ್ಸಂಗ್ ಕೇಸ್, ಇದರಲ್ಲಿ ಸಿಸ್ಟಮ್ ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸುವ ಪ್ರಯತ್ನವು ಹೊಸ ದುರ್ಬಲತೆಯ ಹೊರಹೊಮ್ಮುವಿಕೆಗೆ ಕಾರಣವಾಯಿತು ಮತ್ತು ಸಾಧನಗಳನ್ನು ರಾಜಿ ಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಯಿತು.

HKSP ಪ್ಯಾಚ್‌ಗಳನ್ನು Huawei ಉದ್ಯೋಗಿಯೊಬ್ಬರು ಪ್ರಕಟಿಸಿದ್ದಾರೆ, GitHub ಪ್ರೊಫೈಲ್‌ನಲ್ಲಿ Huawei ಉಲ್ಲೇಖವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ಯೋಜನೆಯ ಹೆಸರಿನಲ್ಲಿ Huawei ಪದವನ್ನು ಬಳಸಿ (HKSP - Huawei Kernel Self Protection). ಅದೇ ಸಮಯದಲ್ಲಿ, Huawei ಪ್ರತಿನಿಧಿಗಳು ಕಂಪನಿಯೊಂದಿಗೆ HKSP ಯೋಜನೆಯ ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಿದರು ಮತ್ತು ಉದ್ಯೋಗಿಯ ವೈಯಕ್ತಿಕ ಉಪಕ್ರಮದ ಮೇಲೆ ಕೋಡ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ, ಅಧಿಕೃತ Huawei ಯೋಜನೆಯಾಗಿಲ್ಲ ಮತ್ತು ಕಂಪನಿಯ ಉತ್ಪನ್ನಗಳಲ್ಲಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಹೇಳಿದ್ದಾರೆ. ಆನ್ GitHub ಪುಟ ಎಚ್‌ಕೆಎಸ್‌ಪಿ ಪೂರ್ವಭಾವಿಯಾಗಿ ಆವಿಷ್ಕಾರದ ನಂತರ ದುರ್ಬಲತೆಗಳು ಸಹ ಸೇರಿಸಲಾಯಿತು ಸಂಶೋಧನಾ ಉದ್ದೇಶಗಳಿಗಾಗಿ ನನ್ನ ಬಿಡುವಿನ ವೇಳೆಯಲ್ಲಿ ಯೋಜನೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ.

HKSP ಕ್ರೆಡ್ ರಚನೆಯಲ್ಲಿ ಆಫ್‌ಸೆಟ್‌ಗಳ ಯಾದೃಚ್ಛಿಕಗೊಳಿಸುವಿಕೆ, ಬಳಕೆದಾರ ಐಡೆಂಟಿಫೈಯರ್ ನೇಮ್‌ಸ್ಪೇಸ್ (ಪಿಡ್ ನೇಮ್‌ಸ್ಪೇಸ್) ಮೇಲಿನ ದಾಳಿಯ ವಿರುದ್ಧ ರಕ್ಷಣೆ, ಎಮ್‌ಮ್ಯಾಪ್ ಪ್ರದೇಶದಿಂದ ಪ್ರಕ್ರಿಯೆಯ ಸ್ಟಾಕ್ ಅನ್ನು ಬೇರ್ಪಡಿಸುವುದು, ಕೆಫ್ರೀ ಫಂಕ್ಷನ್‌ಗೆ ಡಬಲ್ ಕರೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು, ಹುಸಿ ಮೂಲಕ ಸೋರಿಕೆಯನ್ನು ತಡೆಯುವುದು ಮುಂತಾದ ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. -FS /proc (/proc/ {ಮಾಡ್ಯೂಲ್‌ಗಳು, ಕೀಗಳು, ಕೀ-ಬಳಕೆದಾರರು}, /proc/sys/kernel/* ಮತ್ತು /proc/sys/vm/mmap_min_addr, /proc/kallsyms), ಸುಧಾರಿತ ಬಳಕೆದಾರ ಸ್ಥಳದ ವಿಳಾಸ ಯಾದೃಚ್ಛಿಕತೆ, ಹೆಚ್ಚುವರಿ ಟ್ರೇಸ್ ರಕ್ಷಣೆ, ವರ್ಧಿತ ಸ್ಮ್ಯಾಪ್ ಮತ್ತು smep ರಕ್ಷಣೆ, ಕಚ್ಚಾ ಸಾಕೆಟ್‌ಗಳ ಮೂಲಕ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಷೇಧಿಸುವ ಸಾಮರ್ಥ್ಯ, UDP ಸಾಕೆಟ್‌ಗಳಲ್ಲಿ ತಪ್ಪಾದ ವಿಳಾಸಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದು ಮತ್ತು ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಗಳ ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು. ಇದು Ksguard ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ, ಇದು ವಿಶಿಷ್ಟವಾದ ರೂಟ್‌ಕಿಟ್‌ಗಳನ್ನು ಪರಿಚಯಿಸುವ ಪ್ರಯತ್ನಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.

ಡಾ ಎಂದು ಕರೆದರು ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ಸ್ಥಿರ ಶಾಖೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಜವಾಬ್ದಾರಿಯನ್ನು ಹೊಂದಿರುವ ಗ್ರೆಗ್ ಕ್ರೋಹ್-ಹಾರ್ಟ್‌ಮನ್ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರು ಮತ್ತು ಮುಖ್ಯ ಕರ್ನಲ್‌ಗೆ ವಿಮರ್ಶೆ ಮತ್ತು ಪ್ರಚಾರವನ್ನು ಸರಳಗೊಳಿಸಲು ಏಕಶಿಲೆಯ ಪ್ಯಾಚ್ ಅನ್ನು ಭಾಗಗಳಾಗಿ ಒಡೆಯಲು ಲೇಖಕರನ್ನು ಕೇಳಿದರು. ಕೀಸ್ ಕುಕ್, ಮುಖ್ಯಸ್ಥ ಡ್ರಾಫ್ಟ್ ಮೇಲೆ ಪ್ರಚಾರ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನಲ್ಲಿ ಸಕ್ರಿಯ ರಕ್ಷಣೆ ತಂತ್ರಜ್ಞಾನವೂ ಸಹ ಧನಾತ್ಮಕವಾಗಿ ಪ್ಯಾಚ್‌ಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸಿದರು ಮತ್ತು ಸಮಸ್ಯೆಗಳ ನಡುವೆ, x86 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಮತ್ತು ಅನೇಕ ಮೋಡ್‌ಗಳ ನೋಟಿಫಿಕೇಶನ್ ಸ್ವಭಾವಕ್ಕೆ ಬಂಧಿಸುವ ಗಮನವನ್ನು ಸೆಳೆಯಿತು, ಇದು ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಮಾತ್ರ ಲಾಗ್ ಮಾಡುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ನಿರ್ಬಂಧಿಸಲು ಪ್ರಯತ್ನಿಸಬೇಡಿ.

Grsecurity ಡೆವಲಪರ್‌ಗಳ ಪ್ಯಾಚ್‌ನ ಅಧ್ಯಯನವು ಕೋಡ್‌ನಲ್ಲಿ ಅನೇಕ ದೋಷಗಳು ಮತ್ತು ದೌರ್ಬಲ್ಯಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿತು ಮತ್ತು ಯೋಜನೆಯ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸಮರ್ಪಕವಾಗಿ ನಿರ್ಣಯಿಸಲು ಅನುಮತಿಸುವ ಬೆದರಿಕೆ ಮಾದರಿಯ ಅನುಪಸ್ಥಿತಿಯನ್ನು ಸಹ ತೋರಿಸಿದೆ. ಸುರಕ್ಷಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಬಳಸದೆಯೇ ಕೋಡ್ ಅನ್ನು ಬರೆಯಲಾಗಿದೆ ಎಂದು ಸ್ಪಷ್ಟವಾಗಿ ಪ್ರದರ್ಶಿಸಲು, ಹ್ಯಾಂಡ್ಲರ್ನಲ್ಲಿ ಕ್ಷುಲ್ಲಕ ದುರ್ಬಲತೆಯ ಉದಾಹರಣೆಯನ್ನು ನೀಡಲಾಗಿದೆ.
ಫೈಲ್ /proc/ksguard/state, ಇದು ಹಕ್ಕುಗಳು 0777 ನೊಂದಿಗೆ ರಚಿಸಲಾಗಿದೆ, ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ಬರೆಯಲು ಪ್ರವೇಶವಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ksg_state_write ಫಂಕ್ಷನ್, /proc/ksguard/state ಗೆ ಬರೆದ ಆಜ್ಞೆಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ, ಗುರಿ ಬಫರ್‌ನ ಗಾತ್ರವನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳದೆ ಮತ್ತು ಇಲ್ಲದೆಯೇ ರವಾನಿಸಲಾದ ಆಪರೇಂಡ್‌ನ ಗಾತ್ರದ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ಬರೆಯುವ tmp[32] ಬಫರ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. ಸ್ಟ್ರಿಂಗ್ ಗಾತ್ರದೊಂದಿಗೆ ನಿಯತಾಂಕವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ. ಆ. ಕರ್ನಲ್ ಸ್ಟಾಕ್‌ನ ಭಾಗವನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡಲು, ಆಕ್ರಮಣಕಾರರು /proc/ksguard/state ಗೆ ವಿಶೇಷವಾಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಿದ ಸಾಲನ್ನು ಬರೆಯಬೇಕಾಗುತ್ತದೆ.

ಸ್ಥಿರ ssize_t ksg_state_write(struct file *file, const char __user *buf,
ಗಾತ್ರ_ಟಿ ಲೆನ್, ಲೋಫ್_ಟಿ *ಆಫ್‌ಸೆಟ್)
{
u64 ಮೌಲ್ಯ;
ಚಾರ್ ಟಿಎಂಪಿ[32];
size_t n = 0;

ಒಂದು ವೇಳೆ (copy_from_user(tmp, buf, len))
ಹಿಂತಿರುಗಿ -1;

ಮೌಲ್ಯ = simple_strtoul(tmp, '\0', 10);
...

ಪ್ರೋಟೋಟೈಪ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳಿ:

ಚಾರ್ ಬಫ್[4096] = {};
int fd = ಓಪನ್ ("/proc/ksguard/state", O_WRONLY);
ಒಂದು ವೇಳೆ (fd >= 0) {
ಬರೆಯಿರಿ (ಎಫ್ಡಿ, ಬಫ್, ಗಾತ್ರದ (ಬಫ್));
ಮುಚ್ಚಿ (ಎಫ್ಡಿ);
}

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ