Grsecurity ಯೋಜನೆಯ ಡೆವಲಪರ್ಗಳು
HKSP ಪ್ಯಾಚ್ಗಳನ್ನು Huawei ಉದ್ಯೋಗಿಯೊಬ್ಬರು ಪ್ರಕಟಿಸಿದ್ದಾರೆ, GitHub ಪ್ರೊಫೈಲ್ನಲ್ಲಿ Huawei ಉಲ್ಲೇಖವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ಯೋಜನೆಯ ಹೆಸರಿನಲ್ಲಿ Huawei ಪದವನ್ನು ಬಳಸಿ (HKSP - Huawei Kernel Self Protection). ಅದೇ ಸಮಯದಲ್ಲಿ, Huawei ಪ್ರತಿನಿಧಿಗಳು ಕಂಪನಿಯೊಂದಿಗೆ HKSP ಯೋಜನೆಯ ಸಂಪರ್ಕವನ್ನು ನಿರಾಕರಿಸಿದರು ಮತ್ತು ಉದ್ಯೋಗಿಯ ವೈಯಕ್ತಿಕ ಉಪಕ್ರಮದ ಮೇಲೆ ಕೋಡ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ, ಅಧಿಕೃತ Huawei ಯೋಜನೆಯಾಗಿಲ್ಲ ಮತ್ತು ಕಂಪನಿಯ ಉತ್ಪನ್ನಗಳಲ್ಲಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಹೇಳಿದ್ದಾರೆ. ಆನ್
HKSP ಕ್ರೆಡ್ ರಚನೆಯಲ್ಲಿ ಆಫ್ಸೆಟ್ಗಳ ಯಾದೃಚ್ಛಿಕಗೊಳಿಸುವಿಕೆ, ಬಳಕೆದಾರ ಐಡೆಂಟಿಫೈಯರ್ ನೇಮ್ಸ್ಪೇಸ್ (ಪಿಡ್ ನೇಮ್ಸ್ಪೇಸ್) ಮೇಲಿನ ದಾಳಿಯ ವಿರುದ್ಧ ರಕ್ಷಣೆ, ಎಮ್ಮ್ಯಾಪ್ ಪ್ರದೇಶದಿಂದ ಪ್ರಕ್ರಿಯೆಯ ಸ್ಟಾಕ್ ಅನ್ನು ಬೇರ್ಪಡಿಸುವುದು, ಕೆಫ್ರೀ ಫಂಕ್ಷನ್ಗೆ ಡಬಲ್ ಕರೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು, ಹುಸಿ ಮೂಲಕ ಸೋರಿಕೆಯನ್ನು ತಡೆಯುವುದು ಮುಂತಾದ ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. -FS /proc (/proc/ {ಮಾಡ್ಯೂಲ್ಗಳು, ಕೀಗಳು, ಕೀ-ಬಳಕೆದಾರರು}, /proc/sys/kernel/* ಮತ್ತು /proc/sys/vm/mmap_min_addr, /proc/kallsyms), ಸುಧಾರಿತ ಬಳಕೆದಾರ ಸ್ಥಳದ ವಿಳಾಸ ಯಾದೃಚ್ಛಿಕತೆ, ಹೆಚ್ಚುವರಿ ಟ್ರೇಸ್ ರಕ್ಷಣೆ, ವರ್ಧಿತ ಸ್ಮ್ಯಾಪ್ ಮತ್ತು smep ರಕ್ಷಣೆ, ಕಚ್ಚಾ ಸಾಕೆಟ್ಗಳ ಮೂಲಕ ಡೇಟಾವನ್ನು ಕಳುಹಿಸುವುದನ್ನು ನಿಷೇಧಿಸುವ ಸಾಮರ್ಥ್ಯ, UDP ಸಾಕೆಟ್ಗಳಲ್ಲಿ ತಪ್ಪಾದ ವಿಳಾಸಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವುದು ಮತ್ತು ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಗಳ ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸುವುದು. ಇದು Ksguard ಕರ್ನಲ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ, ಇದು ವಿಶಿಷ್ಟವಾದ ರೂಟ್ಕಿಟ್ಗಳನ್ನು ಪರಿಚಯಿಸುವ ಪ್ರಯತ್ನಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.
ಡಾ
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