OpenBSD ಯ W^X ಭದ್ರತಾ ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಲಪಡಿಸುವ ಯೋಜನೆಗಳು

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

W^X ನಲ್ಲಿ ಕೆಲಸ ಪ್ರಾರಂಭವಾದಾಗಿನಿಂದ, JIT ಅನ್ನು ಬಳಸುವ ಗಮನಾರ್ಹ ಸಂಖ್ಯೆಯ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಇರುವುದರಿಂದ ಇದು ದೀರ್ಘ ರಸ್ತೆ ಎಂದು ಸ್ಪಷ್ಟವಾಯಿತು. JIT ಅಳವಡಿಕೆಗಳನ್ನು ಮೂರು ವರ್ಗಗಳಾಗಿ ವಿಂಗಡಿಸಬಹುದು:

  • W ಮತ್ತು X ಸ್ಥಿತಿಗಳ ನಡುವೆ ಮೆಮೊರಿಯನ್ನು ಬದಲಾಯಿಸುವುದು, ಸಿಸ್ಟಮ್ ಕರೆಯ "ವೆಚ್ಚ" ವನ್ನು ಸ್ವೀಕರಿಸುವುದು ರಕ್ಷಿಸಿ.
  • ಒಂದೇ ಮೆಮೊರಿಯ W ಮತ್ತು X ಮ್ಯಾಪಿಂಗ್‌ಗಳ ನಡುವೆ ಅಲಿಯಾಸ್‌ಗಳನ್ನು ರಚಿಸುವುದು.
  • ಅತ್ಯಂತ "ಡರ್ಟಿ" ಆಯ್ಕೆಗೆ W|X ಮೆಮೊರಿ ಮಾದರಿಯ ಅಗತ್ಯವಿರುತ್ತದೆ ಅದು ಏಕಕಾಲದಲ್ಲಿ ರೆಕಾರ್ಡಿಂಗ್ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ.

ಪ್ರಸ್ತುತ, ಮೂರನೇ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಕಾರ್ಯಕ್ರಮಗಳಿವೆ ಮತ್ತು ಮೊದಲ ಮತ್ತು ಎರಡನೆಯದನ್ನು ಬಳಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, W|X JIT (ಮುಖ್ಯವಾಗಿ ಕ್ರೋಮಿಯಂ ಮತ್ತು ಇರಿಡಮ್) ನೊಂದಿಗೆ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಚಲಾಯಿಸುವುದು ಅಗತ್ಯವಾದ್ದರಿಂದ, "wxallowed" ಫೈಲ್‌ಸಿಸ್ಟಮ್ ಮೌಂಟ್ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಯಿತು, ಇದು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ELF ಆಗಿದ್ದರೆ, ಬರವಣಿಗೆ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಎರಡಕ್ಕೂ ಏಕಕಾಲದಲ್ಲಿ ಮೆಮೊರಿಯನ್ನು ಬಳಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಫೈಲ್ ಅನ್ನು "wxneeded" ಮಾರ್ಕರ್‌ನೊಂದಿಗೆ ಗುರುತಿಸಲಾಗಿದೆ, ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಹೆಚ್ಚುವರಿಯಾಗಿ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ರಕ್ಷಿಸಲಾಗಿದೆ ಪ್ರತಿಜ್ಞೆ и ಅನಾವರಣ ಬಳಸಿದ ಸಿಸ್ಟಮ್ ಕರೆಗಳ ಪಟ್ಟಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಲಭ್ಯವಿರುವ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನ ಭಾಗಗಳನ್ನು ಕ್ರಮವಾಗಿ ಮಿತಿಗೊಳಿಸಲು.

ಅಂತಹ ಅನ್ವಯಗಳಲ್ಲಿ ದುರ್ಬಲತೆಗಳ ಶೋಷಣೆಯನ್ನು ಇನ್ನಷ್ಟು ಸಂಕೀರ್ಣಗೊಳಿಸಲು, ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಹೆಚ್ಚುವರಿಯಾಗಿ ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ MAP_STACK, ಇದು ಸಿಸ್ಟಮ್ ಕರೆಯನ್ನು ಬರೆಯಬಹುದಾದ ಮೆಮೊರಿ ಪುಟದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಪುಟವನ್ನು ಬರೆಯಬಹುದಾದರೆ, ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೊನೆಗೊಳಿಸಲು ಒತ್ತಾಯಿಸಲಾಗುತ್ತದೆ. ಈ ರೀತಿಯಾಗಿ, ಆಕ್ರಮಣಕಾರರಿಗೆ ಸಿಸ್ಟಮ್ ಕರೆಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ ಮತ್ತು JIT ಅಳವಡಿಕೆಯಲ್ಲಿ ಅಗತ್ಯವಾದ ಗ್ಯಾಜೆಟ್‌ಗಳನ್ನು ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸಲು ಒತ್ತಾಯಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಸಿಸ್ಟಮ್ ಕಾಲ್ ಸ್ಟಬ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಒಳಗೆ ಪತ್ತೆಹಚ್ಚುವ ಹೆಚ್ಚು ಕಷ್ಟಕರವಾದ ಕೆಲಸವನ್ನು ಮಾಡಲು ಒತ್ತಾಯಿಸಲಾಗುತ್ತದೆ. ಆಕಸ್ಮಿಕವಾಗಿ libc ಲಿಂಕ್ ಮಾಡಲಾಗಿದೆ.

ಕ್ರೋಮ್/ಇರಿಡಿಯಮ್ ಪ್ರಕ್ರಿಯೆಗಳು ಈಗಾಗಲೇ ಪ್ರತಿಜ್ಞೆ ಮತ್ತು ಅನಾವರಣವನ್ನು ಬಳಸಿಕೊಂಡು ಸಾಕಷ್ಟು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ರಕ್ಷಿಸಲ್ಪಟ್ಟಿವೆ, ಆದರೆ ಬಳಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ತೆಗೆದುಹಾಕುವುದು, ಉದಾಹರಣೆಗೆ, ರೈಟ್(2) ಸಿಸ್ಟಮ್ ಕರೆ ನಿಸ್ಸಂಶಯವಾಗಿ ಕೆಲವು ಪ್ರಯೋಜನಗಳನ್ನು ಹೊಂದಿದೆ, ಏಕೆಂದರೆ ಇದು ಆಕ್ರಮಣಕಾರರಿಗೆ ಹೆಚ್ಚುವರಿ ತೊಂದರೆಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, JIT ಅನುಷ್ಠಾನವು W|X ಮೆಮೊರಿಯಿಂದ ಸ್ಥಳೀಯ ಸಿಸ್ಟಮ್ ಕರೆಗಳನ್ನು ಬಳಸಿದರೆ ತೊಂದರೆಗಳು ಉಂಟಾಗಬಹುದು. ಆದಾಗ್ಯೂ, ಎಬಿಐ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಬದಲಾಯಿಸಲಾಗಿರುವುದರಿಂದ ಇದು ಹಾಗಲ್ಲ ಎಂದು ಭಾವಿಸಲು ಕಾರಣವಿದೆ, ಆದರೆ ಯಾರೂ ಸಮಸ್ಯೆಗಳನ್ನು ವರದಿ ಮಾಡಿಲ್ಲ.

ಬದಲಾವಣೆಗಳು ಈಗಾಗಲೇ OpenBSD-ಪ್ರಸ್ತುತ ಶಾಖೆಯ ನಿಯಮಿತ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ಗಳಲ್ಲಿ ಲಭ್ಯವಿವೆ, ಆಸಕ್ತಿಯುಳ್ಳ ಪ್ರತಿಯೊಬ್ಬರನ್ನು ಪರೀಕ್ಷಿಸಲು ಆಹ್ವಾನಿಸಲಾಗಿದೆ.

Chrome/Iridium ನಲ್ಲಿ ಮೋಡ್‌ನ ಗೋಚರಿಸುವಿಕೆಯ ಕುರಿತಾದ ಸಂಬಂಧಿತ ಸುದ್ದಿಗಳು ಥಿಯೋದಿಂದ ಪ್ರತ್ಯೇಕ ಕಾಮೆಂಟ್‌ಗೆ ಅರ್ಹವಾಗಿವೆ JIT ರಹಿತ. ಅವರ ದೃಷ್ಟಿಕೋನದಿಂದ, ಇದು ಕೆಲವು ಬಳಕೆಯ ಮಾದರಿಗಳಿಗೆ ಸ್ವೀಕಾರಾರ್ಹವಾಗಿದೆ, ಆದರೆ ಬಹುಶಃ ಎಲ್ಲರಿಗೂ ಅಲ್ಲ, ಏಕೆಂದರೆ ಈ ಮೋಡ್ ಪ್ರೊಸೆಸರ್ನಲ್ಲಿನ ಲೋಡ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಹೆಚ್ಚಿಸುತ್ತದೆ. ಪ್ರಸ್ತುತ, ನೀವು /usr/local ಗಾಗಿ "wxallowed" ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ Chrome ಹೆಚ್ಚಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದಾಗ್ಯೂ ಕೆಲವು ವಿಸ್ತರಣೆಗಳೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳಿರಬಹುದು (ಘೋಸ್ಟರಿ ಒಂದು ಉದಾಹರಣೆ). ಒಂದು ರೀತಿಯಲ್ಲಿ ಅಥವಾ ಇನ್ನೊಂದು ರೀತಿಯಲ್ಲಿ, JITless ಮೋಡ್‌ನಲ್ಲಿ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಕೆಲಸವನ್ನು ಮುಂದಿನ ದಿನಗಳಲ್ಲಿ ಸಂಪೂರ್ಣ ಕಾರ್ಯಾಚರಣೆಯ ಸ್ಥಿತಿಗೆ ತರಲಾಗುವುದು ಎಂದು ಥಿಯೋ ಆಶಿಸಿದ್ದಾರೆ.

ಮೂಲ: opennet.ru

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