ಚೆಕ್ಪಾಯಿಂಟ್ ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಪ್ರೊಟೆಕ್ಷನ್ ತಂತ್ರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದೆ, ಇದು ದುರ್ಬಲತೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿದೆ

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

Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ಮತ್ತು Google TCMalloc ಗಾಗಿ ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಅನ್ನು ಅಳವಡಿಸುವ ಪ್ಯಾಚ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ ಮತ್ತು Chromium ನಲ್ಲಿ ರಕ್ಷಣೆಯನ್ನು ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಲು ಸಹ ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ.
2012 ರಿಂದ, Chromium ಈಗಾಗಲೇ ಅದೇ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ MaskPtr ರಕ್ಷಣೆ ತಂತ್ರದಲ್ಲಿ ನಿರ್ಮಿಸಿದೆ, ಆದರೆ ಚೆಕ್‌ಪಾಯಿಂಟ್‌ನಿಂದ ಪರಿಹಾರವು ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ).
ಆಗಸ್ಟ್ ಬಿಡುಗಡೆಯಲ್ಲಿ ವಿತರಣೆಗಾಗಿ ಸೂಚಿಸಲಾದ ಪ್ಯಾಚ್‌ಗಳನ್ನು ಈಗಾಗಲೇ ಅನುಮೋದಿಸಲಾಗಿದೆ ಗ್ಲಿಬ್ಸಿ 3.32 ಮತ್ತು ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಅನ್ನು ಡಿಫಾಲ್ಟ್ ಆಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. uClibc-NG ಸುರಕ್ಷಿತ-ಲಿಂಕ್ ಮಾಡುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಪ್ರವೇಶಿಸಿದೆ ಬಿಡುಗಡೆ 1.0.33 ರಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. gperftools ನಲ್ಲಿನ ಬದಲಾವಣೆಗಳು (ಹಳೆಯ tcmalloc) ಸ್ವೀಕರಿಸಲಾಗಿದೆ, ಆದರೆ ಭವಿಷ್ಯದ ಬಿಡುಗಡೆಯಲ್ಲಿ ಒಂದು ಆಯ್ಕೆಯಾಗಿ ನೀಡಲಾಗುವುದು.

ಡೆವಲಪರ್ಗಳು TCMalloc (ಹೊಸ tcmalloc) ಸ್ವೀಕರಿಸಲು ನಿರಾಕರಿಸಿದರು ಬದಲಾವಣೆ, ತೀವ್ರ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅವನತಿ ಮತ್ತು ಎಲ್ಲವೂ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ನಿಯಮಿತವಾಗಿ ಪರಿಶೀಲಿಸಲು ವ್ಯಾಪಕವಾದ ಪರೀಕ್ಷೆಗಳನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವನ್ನು ಉಲ್ಲೇಖಿಸಿ. ಚೆಕ್‌ಪಾಯಿಂಟ್ ಇಂಜಿನಿಯರ್‌ಗಳ ಪರೀಕ್ಷೆಯು ಸೇಫ್-ಲಿಂಕಿಂಗ್ ವಿಧಾನವು ಹೆಚ್ಚುವರಿ ಮೆಮೊರಿ ಬಳಕೆಗೆ ಕಾರಣವಾಗುವುದಿಲ್ಲ ಎಂದು ತೋರಿಸಿದೆ ಮತ್ತು ರಾಶಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಕಾರ್ಯಕ್ಷಮತೆ ಸರಾಸರಿ 0.02% ರಷ್ಟು ಕಡಿಮೆಯಾಗಿದೆ ಮತ್ತು ಕೆಟ್ಟ ಸಂದರ್ಭದಲ್ಲಿ 1.5% ರಷ್ಟು ಕಡಿಮೆಯಾಗಿದೆ (ಹೋಲಿಕೆಗಾಗಿ, ಓವರ್‌ಹೆಡ್ ಇನ್ Chromium ನಲ್ಲಿ ಬಳಸಲಾದ ವಿಧಾನವನ್ನು "2% ಕ್ಕಿಂತ ಕಡಿಮೆ" ಎಂದು ಅಂದಾಜಿಸಲಾಗಿದೆ). ಸೇರ್ಪಡೆ
ಸುರಕ್ಷಿತ-ಲಿಂಕ್ ಮಾಡುವಿಕೆಯು ಪ್ರತಿ ಬಾರಿ ಉಚಿತ() ಅನ್ನು ಕರೆದಾಗಲೂ 2-3 ಹೆಚ್ಚುವರಿ ಅಸೆಂಬ್ಲಿ ಸೂಚನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಬಾರಿ malloc() ಅನ್ನು ಕರೆದಾಗ 3-4 ಸೂಚನೆಗಳು. ಪ್ರಾರಂಭಿಕ ಮತ್ತು ಯಾದೃಚ್ಛಿಕ ಮೌಲ್ಯ ಉತ್ಪಾದನೆಯ ಹಂತಗಳನ್ನು ರನ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ.

ಚೆಕ್ಪಾಯಿಂಟ್ ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಪ್ರೊಟೆಕ್ಷನ್ ತಂತ್ರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದೆ, ಇದು ದುರ್ಬಲತೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿದೆ

ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಅನ್ನು ವಿವಿಧ ಹೀಪ್ ಅಳವಡಿಕೆಗಳ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮಾತ್ರವಲ್ಲದೆ, ಬಫರ್‌ಗಳ ಪಕ್ಕದಲ್ಲಿ ಇರಿಸಲಾದ ಪಾಯಿಂಟರ್‌ಗಳ ಏಕ-ಸಂಯೋಜಿತ ಪಟ್ಟಿಗಳನ್ನು ಬಳಸುವ ಯಾವುದೇ ಡೇಟಾ ರಚನೆಗಳಿಗೆ ಸಮಗ್ರತೆಯ ನಿಯಂತ್ರಣಗಳನ್ನು ಸೇರಿಸಲು ಸಹ ಬಳಸಬಹುದು. ವಿಧಾನವು ಕಾರ್ಯಗತಗೊಳಿಸಲು ತುಂಬಾ ಸರಳವಾಗಿದೆ ಮತ್ತು ಕೇವಲ ಒಂದು ಮ್ಯಾಕ್ರೋವನ್ನು ಸೇರಿಸುವ ಮತ್ತು ಕೋಡ್‌ನಲ್ಲಿ ಮುಂದಿನ ಬ್ಲಾಕ್‌ಗೆ ಪಾಯಿಂಟರ್‌ಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಅಗತ್ಯವಿದೆ (ಉದಾಹರಣೆಗೆ, Glibc ಗಾಗಿ ಬದಲಾವಣೆಗಳನ್ನು ಕೋಡ್‌ನ ಕೆಲವು ಸಾಲುಗಳು). ವಿಧಾನವು ಈ ಕೆಳಗಿನ ಬದಲಾವಣೆಗಳಿಗೆ ಕುದಿಯುತ್ತದೆ:

+#PROTECT_PTR (pos, ptr) \ ವ್ಯಾಖ್ಯಾನಿಸಿ
+ ((__typeof (ptr)) (((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+# REVEAL_PTR (ptr) PROTECT_PTR (&ptr, ptr) ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ

- nextp = p-> fd;
+ nextp = REVEAL_PTR (p-> fd);
...

Fast-Bins ಮತ್ತು TCache ನಂತಹ ಏಕ-ಸಂಯೋಜಿತ ಪಟ್ಟಿಗಳನ್ನು ರಕ್ಷಿಸಲು ASLR ವಿಳಾಸ ಯಾದೃಚ್ಛಿಕ ಯಾಂತ್ರಿಕ ವ್ಯವಸ್ಥೆಯಿಂದ (mmap_base) ಯಾದೃಚ್ಛಿಕ ಡೇಟಾವನ್ನು ಬಳಸುವುದು ವಿಧಾನದ ಮೂಲತತ್ವವಾಗಿದೆ. ಪಟ್ಟಿಯಲ್ಲಿರುವ ಮುಂದಿನ ಅಂಶಕ್ಕೆ ಪಾಯಿಂಟರ್‌ಗೆ ಮೌಲ್ಯವನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು, ಅದು ಮುಖವಾಡ ಪರಿವರ್ತನೆಯನ್ನು ಮಾಡುತ್ತದೆ ಮತ್ತು ಪುಟ ಜೋಡಣೆಗಾಗಿ ಪರಿಶೀಲಿಸುತ್ತದೆ. ಪಾಯಿಂಟರ್ ಅನ್ನು "(L >> PAGE_SHIFT) XOR (P)" ಕಾರ್ಯಾಚರಣೆಯ ಫಲಿತಾಂಶದಿಂದ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ, ಇಲ್ಲಿ P ಪಾಯಿಂಟರ್‌ನ ಮೌಲ್ಯವಾಗಿದೆ ಮತ್ತು L ಎಂಬುದು ಪಾಯಿಂಟರ್ ಸಂಗ್ರಹವಾಗಿರುವ ಮೆಮೊರಿ ಸ್ಥಳವಾಗಿದೆ.

ಚೆಕ್ಪಾಯಿಂಟ್ ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಪ್ರೊಟೆಕ್ಷನ್ ತಂತ್ರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದೆ, ಇದು ದುರ್ಬಲತೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿದೆ

ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಬಳಸಿದಾಗ ASLR (ವಿಳಾಸ ಸ್ಪೇಸ್ ಲೇಔಟ್ ರ್ಯಾಂಡಮೈಸೇಶನ್) ಹೀಪ್ ಬೇಸ್ ವಿಳಾಸದೊಂದಿಗೆ L ಬಿಟ್‌ಗಳ ಭಾಗವು P ಎನ್‌ಕೋಡ್ ಮಾಡಲು ಕೀಲಿಯಾಗಿ ಬಳಸಲಾಗುವ ಯಾದೃಚ್ಛಿಕ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿದೆ (12-ಬೈಟ್ ಪುಟಗಳಿಗಾಗಿ 4096-ಬಿಟ್ ಶಿಫ್ಟ್ ಕಾರ್ಯಾಚರಣೆಯಿಂದ ಹೊರತೆಗೆಯಲಾಗಿದೆ). ಈ ಕುಶಲತೆಯು ಶೋಷಣೆಯಲ್ಲಿ ಪಾಯಿಂಟರ್ ಅಪಹರಣದ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಏಕೆಂದರೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ಅದರ ಮೂಲ ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿಲ್ಲ ಮತ್ತು ಅದನ್ನು ಬದಲಿಸಲು ರಾಶಿ ಹಂಚಿಕೆಯ ಜ್ಞಾನದ ಅಗತ್ಯವಿರುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಪ್ಯಾಚ್ ಕೋಡ್ ಬ್ಲಾಕ್ ಅಲೈನ್‌ಮೆಂಟ್‌ಗಾಗಿ ಹೆಚ್ಚುವರಿ ಚೆಕ್ ಅನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ, ಇದು ಪಾಯಿಂಟರ್ ಅನ್ನು ಜೋಡಿಸದ ಮೌಲ್ಯದೊಂದಿಗೆ ಬದಲಾಯಿಸಲು ಆಕ್ರಮಣಕಾರರಿಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ ಮತ್ತು ಜೋಡಿಸಲಾದ ಬಿಟ್‌ಗಳ ಸಂಖ್ಯೆಯ ಜ್ಞಾನದ ಅಗತ್ಯವಿರುತ್ತದೆ, ಇದು 64-ಬಿಟ್ ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚುವರಿಯಾಗಿ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. 15 ರಲ್ಲಿ 16 ದಾಳಿಯ ಪ್ರಯತ್ನಗಳು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವುದಿಲ್ಲ .

ಭಾಗಶಃ ಪಾಯಿಂಟರ್ ರಿರೈಟಿಂಗ್ (ಕಡಿಮೆ ಬೈಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವುದು), ಸಂಪೂರ್ಣ ಪಾಯಿಂಟರ್ ರಿರೈಟಿಂಗ್ (ದಾಳಿಕೋರರ ಕೋಡ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುವುದು) ಮತ್ತು ಪಟ್ಟಿಯ ಸ್ಥಾನವನ್ನು ಜೋಡಿಸದ ವಿಳಾಸದಲ್ಲಿ ಬದಲಾಯಿಸುವ ದಾಳಿಗಳ ವಿರುದ್ಧ ರಕ್ಷಿಸಲು ವಿಧಾನವು ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, malloc ನಲ್ಲಿ ಸೇಫ್-ಲಿಂಕಿಂಗ್ ಬಳಕೆಯು ಇತ್ತೀಚೆಗೆ ಶೋಷಣೆಯನ್ನು ತಡೆಯಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ಎಂದು ತೋರಿಸಲಾಗಿದೆ ಗುರುತಿಸಲಾಗಿದೆ ಅದೇ ದುರ್ಬಲತೆಯ ಸಂಶೋಧಕರಿಂದ CVE-2020-6007 ಫಿಲಿಪ್ಸ್ ಹ್ಯೂ ಬ್ರಿಡ್ಜ್ ಸ್ಮಾರ್ಟ್ ಲೈಟ್, ಬಫರ್ ಓವರ್‌ಫ್ಲೋನಿಂದ ಉಂಟಾಗುತ್ತದೆ ಮತ್ತು ಸಾಧನದ ನಿಯಂತ್ರಣವನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಮೂಲ: opennet.ru

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