ಸಿಸ್ಟಮ್ ಕರೆಗಳಿಗಾಗಿ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಸ್ಟಾಕ್ ವಿಳಾಸಗಳನ್ನು ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಲು ಪ್ಯಾಚ್‌ಗಳನ್ನು ಪರಿಚಯಿಸಲಾಗಿದೆ

ಕೀಸ್ ಕುಕ್, kernel.org ನ ಮಾಜಿ ಮುಖ್ಯ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಮತ್ತು ಉಬುಂಟು ಭದ್ರತಾ ತಂಡದ ನಾಯಕ, ಈಗ Android ಮತ್ತು ChromeOS ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು Google ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದಾರೆ, ಸಿಸ್ಟಮ್ ಕರೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ಕರ್ನಲ್ ಸ್ಟಾಕ್‌ನಲ್ಲಿ ಆಫ್‌ಸೆಟ್‌ಗಳನ್ನು ಯಾದೃಚ್ಛಿಕಗೊಳಿಸಲು ಪ್ಯಾಚ್‌ಗಳ ಗುಂಪನ್ನು ಪ್ರಕಟಿಸಿದರು. ಪ್ಯಾಚ್‌ಗಳು ಸ್ಟಾಕ್ ಪ್ಲೇಸ್‌ಮೆಂಟ್ ಅನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ಕರ್ನಲ್ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ, ಸ್ಟಾಕ್‌ನ ಮೇಲಿನ ದಾಳಿಯನ್ನು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಕಡಿಮೆ ಯಶಸ್ವಿಯಾಗುತ್ತದೆ. ಆರಂಭಿಕ ಅನುಷ್ಠಾನವು ARM64 ಮತ್ತು x86/x86_64 ಪ್ರೊಸೆಸರ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

ಪ್ಯಾಚ್‌ನ ಮೂಲ ಕಲ್ಪನೆಯು PaX RANDKSTACK ಯೋಜನೆಗೆ ಸೇರಿದೆ. 2019 ರಲ್ಲಿ, ಇಂಟೆಲ್‌ನ ಎಂಜಿನಿಯರ್ ಎಲೆನಾ ರೆಶೆಟೋವಾ ಮುಖ್ಯ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನಲ್ಲಿ ಸೇರಿಸಲು ಸೂಕ್ತವಾದ ಈ ಕಲ್ಪನೆಯ ಅನುಷ್ಠಾನವನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿದರು. ನಂತರ, ಈ ಉಪಕ್ರಮವನ್ನು ಕೀಸ್ ಕುಕ್ ಕೈಗೆತ್ತಿಕೊಂಡರು, ಅವರು ಕರ್ನಲ್‌ನ ಮುಖ್ಯ ಆವೃತ್ತಿಗೆ ಸೂಕ್ತವಾದ ಅನುಷ್ಠಾನವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದರು. ಪ್ಯಾಚ್‌ಗಳನ್ನು 5.13 ಬಿಡುಗಡೆಯ ಭಾಗವಾಗಿ ಸೇರಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ. ಡೀಫಾಲ್ಟ್ ಆಗಿ ಮೋಡ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ಕರ್ನಲ್ ಕಮಾಂಡ್ ಲೈನ್ ಪ್ಯಾರಾಮೀಟರ್ “randomize_kstack_offset=on/off” ಮತ್ತು CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ. ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಓವರ್ಹೆಡ್ ಸರಿಸುಮಾರು 1% ಕಾರ್ಯಕ್ಷಮತೆಯ ನಷ್ಟ ಎಂದು ಅಂದಾಜಿಸಲಾಗಿದೆ.

ಪ್ರತಿ ಸಿಸ್ಟಮ್ ಕರೆಗೆ ಯಾದೃಚ್ಛಿಕ ಸ್ಟಾಕ್ ಆಫ್‌ಸೆಟ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಪ್ರಸ್ತಾವಿತ ರಕ್ಷಣೆಯ ಮೂಲತತ್ವವಾಗಿದೆ, ಇದು ವಿಳಾಸ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರವೂ ಮೆಮೊರಿಯಲ್ಲಿ ಸ್ಟಾಕ್ ವಿನ್ಯಾಸವನ್ನು ನಿರ್ಧರಿಸಲು ಕಷ್ಟವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಮುಂದಿನ ಸಿಸ್ಟಮ್ ಕರೆಯು ಸ್ಟಾಕ್‌ನ ಮೂಲ ವಿಳಾಸವನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. PaX RANDKSTACK ಅಳವಡಿಕೆಗಿಂತ ಭಿನ್ನವಾಗಿ, ಕರ್ನಲ್‌ನಲ್ಲಿ ಸೇರಿಸಲು ಪ್ರಸ್ತಾಪಿಸಲಾದ ಪ್ಯಾಚ್‌ಗಳಲ್ಲಿ, ಯಾದೃಚ್ಛಿಕೀಕರಣವನ್ನು ಆರಂಭಿಕ ಹಂತದಲ್ಲಿ (cpu_current_top_of_stack) ನಡೆಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ pt_regs ರಚನೆಯನ್ನು ಹೊಂದಿಸಿದ ನಂತರ, ಯಾದೃಚ್ಛಿಕ ಆಫ್‌ಸೆಟ್ ಅನ್ನು ನಿರ್ಧರಿಸಲು ptrace-ಆಧಾರಿತ ವಿಧಾನಗಳನ್ನು ಬಳಸುವುದು ಅಸಾಧ್ಯವಾಗುತ್ತದೆ. ದೀರ್ಘಾವಧಿಯ ಸಿಸ್ಟಮ್ ಕರೆ ಸಮಯದಲ್ಲಿ.

ಮೂಲ: opennet.ru

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