LLVM ಅಭಿವರ್ಧಕರು C++ ನಲ್ಲಿ ಸುರಕ್ಷಿತ ಬಫರ್ ನಿರ್ವಹಣೆಯನ್ನು ಪ್ರಸ್ತಾಪಿಸುತ್ತಾರೆ

LLVM ಲೋಗೋ

LLVM ಎನ್ನುವುದು ಕಂಪೈಲರ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಮತ್ತು ಹೊಸ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಭಾಷೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡುವ ಚೌಕಟ್ಟಾಗಿದೆ.

ದಿ LLVM ಯೋಜನೆಯ ಅಭಿವರ್ಧಕರು ಭದ್ರತೆಯನ್ನು ಬಲಪಡಿಸುವ ಉದ್ದೇಶದಿಂದ ಹಲವಾರು ಬದಲಾವಣೆಗಳನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದರು ಯೋಜನೆಗಳ ಸಿ ++ ಮಿಷನ್ ನಿರ್ಣಾಯಕ ಮತ್ತು ಬಫರ್ ಅತಿಕ್ರಮಣದಿಂದ ಉಂಟಾಗುವ ದೋಷಗಳನ್ನು ತೊಡೆದುಹಾಕಲು ಒಂದು ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಅಂತೆಯೇ, ಅವರು ಬಿಡುಗಡೆ ಮಾಡಿದ ಪ್ರಸ್ತಾವನೆಯು ನಿರ್ದಿಷ್ಟವಾಗಿ ಎರಡು ಕ್ಷೇತ್ರಗಳಲ್ಲಿನ ಕೆಲಸದ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ: ಬಫರ್‌ಗಳೊಂದಿಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಕೆಲಸ ಮಾಡಲು ಮತ್ತು libc++ ಪ್ರಮಾಣಿತ ಕಾರ್ಯ ಗ್ರಂಥಾಲಯದ ಭದ್ರತೆಯನ್ನು ಬಲಪಡಿಸಲು ಕೆಲಸ ಮಾಡಲು ಅನುಮತಿಸುವ ಅಭಿವೃದ್ಧಿ ಮಾದರಿಯನ್ನು ಒದಗಿಸುವುದು.

C++ ಗಾಗಿ ಪ್ರಸ್ತಾವಿತ ಸುರಕ್ಷಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯನ್ನು ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ.ಕಚ್ಚಾ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವ ಬದಲು ಬಫರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ ಒದಗಿಸಿದ ತರಗತಿಗಳನ್ನು ಬಳಸುವುದು». ಉದಾಹರಣೆಗೆ, std::array, std::vector, ಮತ್ತು std::span ತರಗತಿಗಳನ್ನು ಬಳಸಲು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ಇದು ಔಟ್-ಆಫ್-ಬೌಂಡ್‌ಗಳ ಹಂಚಿಕೆ ಮೆಮೊರಿಗಾಗಿ ರನ್‌ಟೈಮ್ ಚೆಕ್‌ನೊಂದಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.

ನಿರ್ಣಾಯಕ C++ ಕೋಡ್ ಬೇಸ್‌ಗಳ ಸುರಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ. ಇದಕ್ಕಾಗಿ ನಾವು ಎರಡು ವಿಚಾರಗಳ ಮೇಲೆ ಕೆಲಸ ಮಾಡಲು ಯೋಜಿಸುತ್ತೇವೆ.

ಗಟ್ಟಿಯಾದ C++ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ
C++ ಸುರಕ್ಷಿತ ಬಫರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡೆಲ್ ಮತ್ತು ಅಡಾಪ್ಷನ್ ಟೂಲ್ಸ್
ಗಟ್ಟಿಯಾದ libc++ ಸಾಮಾನ್ಯವಾಗಿ C++ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಹೆಚ್ಚು ಸುರಕ್ಷಿತಗೊಳಿಸಲು ಉದ್ದೇಶಿಸಲಾಗಿದೆ.

ಗಟ್ಟಿಯಾದ libc++ ಜೊತೆಗೆ C++ ನ ಸುರಕ್ಷಿತ ಬಫರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯು ಔಟ್-ಆಫ್-ಬೌಂಡ್ಸ್ ಮೆಮೊರಿ ಪ್ರವೇಶದ ರನ್ಟೈಮ್ ತಗ್ಗಿಸುವಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ದತ್ತು ಉಪಕರಣಗಳು ಈ ಹೊಸ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗೆ ಕೋಡ್‌ನ ಸ್ಥಳಾಂತರವನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ.

ಇದರ ಜೊತೆಗೆ, ಅದು ಸಹ ಉಲ್ಲೇಖಿಸುತ್ತದೆ "ಅಪಾಯಕಾರಿ" ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅಭ್ಯಾಸಗಳನ್ನು ಎದುರಿಸಲು ಖಣಿಲು ರಲ್ಲಿ, ವೇಳೆ ಎಲ್ಲಾ ಪಾಯಿಂಟರ್ ಅಂಕಗಣಿತದ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಕಂಪೈಲರ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನೀಡಲು ಪ್ರಸ್ತಾಪಿಸುತ್ತದೆ, "cppcoreguidelines-pro-bounds-pointer-Arithmetic" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಬಳಸುವಾಗ ಕ್ಲಾಂಗ್-ಟಿಡಿ ಲಿಂಟರ್ ಎಚ್ಚರಿಕೆಗಳಂತೆಯೇ, ಬೆಂಬಲವು LLVM 16 ರಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ. ಅಂತಹ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ಪ್ರತ್ಯೇಕ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಕ್ಲಾಂಗ್‌ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯ .

libc++ ನಲ್ಲಿ ಐಚ್ಛಿಕ ರಕ್ಷಣೆ ಮೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ, ಇದು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ರನ್‌ಟೈಮ್‌ನಲ್ಲಿ ವಿವರಿಸಲಾಗದ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗುವ ಕೆಲವು ಸಂದರ್ಭಗಳನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ತರಗತಿಗಳಲ್ಲಿ std::span ಮತ್ತು std::vector, ಮಿತಿ ಮೀರಿದ ಪ್ರವೇಶವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲಾಗುತ್ತದೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ಪ್ರೋಗ್ರಾಂ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.

ಈ ಹೆಚ್ಚುವರಿ ರನ್‌ಟೈಮ್ ತಪಾಸಣೆಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ನಿಯಂತ್ರಿಸಬಹುದಾದ ಹಲವಾರು ವರ್ಗಗಳಾಗಿ ವರ್ಗೀಕರಿಸಲಾಗುತ್ತದೆ. ಉದ್ದೇಶವು ಅವರ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿರುವ ಮಾರಾಟಗಾರ ಶಿಪ್ಪಿಂಗ್ libc++ ಶಿಪ್ಪಿಂಗ್ ಲೈಬ್ರರಿಯಲ್ಲಿ (ಯಾವುದಾದರೂ ಇದ್ದರೆ) ಅಪೇಕ್ಷಿತ ಭದ್ರತೆಯ ಮಟ್ಟವನ್ನು ಅವಲಂಬಿಸಿ ಯಾವ ತಪಾಸಣೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಬಹುದು.

ಡೆವಲಪರ್‌ಗಳು ಅಂತಹ ಬದಲಾವಣೆಗಳನ್ನು ಸೇರಿಸುವುದರಿಂದ C++ ಮಾನದಂಡಗಳಿಗೆ ಅನುಗುಣವಾಗಿ libc++ ಅನ್ನು ಇರಿಸುತ್ತದೆ ಎಂದು ನಂಬುತ್ತಾರೆ, ಏಕೆಂದರೆ ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಯ ಪ್ರಕರಣಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಲೈಬ್ರರಿ ಡೆವಲಪರ್‌ಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ, ಅವರು ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ವ್ಯಾಖ್ಯಾನಿಸದ ನಡವಳಿಕೆಯನ್ನು ಲಾಕ್‌ನಂತೆ ಪರಿಗಣಿಸಬಹುದು. ನಿರ್ಗಮಿಸಿ.

ದಿ libc++ ನಲ್ಲಿ ರನ್‌ಟೈಮ್ ಚೆಕ್‌ಗಳನ್ನು ವರ್ಗಗಳಾಗಿ ವಿಂಗಡಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ ಅದನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಸೇರಿಸಬಹುದು. ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಕಾರ್ಯಾಚರಣೆಗಳು ಅಥವಾ ABI ಬದಲಾವಣೆಗಳಿಗೆ ಕಾರಣವಾಗದ ಕೆಲವು ಸೂಚಿಸಲಾದ ಚೆಕ್‌ಗಳನ್ನು ಈಗಾಗಲೇ libc++ ನ ಸುರಕ್ಷಿತ ಮೋಡ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ (ಸುರಕ್ಷಿತ ಮೋಡ್).

ಪುನರುಚ್ಚರಿಸಲು, ಉತ್ಪಾದನೆಯಲ್ಲಿ ಈ ತಪಾಸಣೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಗಿಸಲಾದ ಗ್ರಂಥಾಲಯಕ್ಕೆ ಅಂತಿಮ ಗುರಿಯಾಗಿದೆ; ಇದು "ಡೀಬಗ್ ಮಾತ್ರ" ವೈಶಿಷ್ಟ್ಯವಲ್ಲ, ಆದರೂ ಇದು ಅಂತಿಮವಾಗಿ ದೀರ್ಘ ಮುರಿದ "ಡೀಬಗ್ ಮೋಡ್" ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.

ಸಹ, ಕೋಡ್ ತಿದ್ದುಪಡಿ ಉಪಕರಣಗಳ ಗುಂಪನ್ನು ತಯಾರಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ ಕಂಟೈನರ್‌ಗಳಲ್ಲಿ ಕಚ್ಚಾ ಪಾಯಿಂಟರ್‌ಗಳೊಂದಿಗೆ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಕಂಟೇನರ್ ನೇರವಾಗಿ ಪಾಯಿಂಟರ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಪರ್ಯಾಯ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ಅನ್ವಯಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, "if(array_pointer)" ರಚನೆಯನ್ನು "if(span.data) ಗೆ ಪರಿವರ್ತಿಸಬಹುದು )»).ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳಿಗೆ ಮಾತ್ರವಲ್ಲ, ಪಾಯಿಂಟರ್‌ಗಳೊಂದಿಗೆ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಟೈಪ್ ಮಾಡಲು ಸಹ ಅನ್ವಯಿಸಬಹುದು.

ಎಂದು ಕೂಡ ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ "ಕ್ಲ್ಯಾಂಗ್ ಸ್ಟ್ಯಾಟಿಕ್ ವಿಶ್ಲೇಷಕ ಪರೀಕ್ಷಕ" ಅನ್ನು ಪರಿಗಣಿಸುತ್ತಿದ್ದೇವೆ ವೇಳೆ ಎಚ್ಚರಿಸುವ ಮಾರ್ಗ ಸೂಕ್ಷ್ಮ std::span ಸ್ಪ್ಯಾನ್‌ನ ಕನ್‌ಸ್ಟ್ರಕ್ಟರ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಗಾತ್ರಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಕಂಟೇನರ್‌ನಿಂದ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಹೇಳಲಾದ ಪರೀಕ್ಷಕವು ಸ್ವಯಂ-ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ತನ್ನದೇ ಆದ ಉಪಯುಕ್ತವಾಗಿದೆ, ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ನಡೆದರೆ ಅದನ್ನು ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಗೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ

ಅಂತಿಮವಾಗಿ ನೀವು ಅದರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಲು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ನೀವು ವಿವರಗಳನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಕೆಳಗಿನ ಲಿಂಕ್.


ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ಬಿಡಿ

ನಿಮ್ಮ ಈಮೇಲ್ ವಿಳಾಸ ಪ್ರಕಟವಾದ ಆಗುವುದಿಲ್ಲ. ಅಗತ್ಯವಿರುವ ಜಾಗ ಗುರುತಿಸಲಾಗಿದೆ *

*

*

  1. ಡೇಟಾಗೆ ಜವಾಬ್ದಾರಿ: AB ಇಂಟರ್ನೆಟ್ ನೆಟ್ವರ್ಕ್ಸ್ 2008 SL
  2. ಡೇಟಾದ ಉದ್ದೇಶ: ನಿಯಂತ್ರಣ SPAM, ಕಾಮೆಂಟ್ ನಿರ್ವಹಣೆ.
  3. ಕಾನೂನುಬದ್ಧತೆ: ನಿಮ್ಮ ಒಪ್ಪಿಗೆ
  4. ಡೇಟಾದ ಸಂವಹನ: ಕಾನೂನುಬದ್ಧ ಬಾಧ್ಯತೆಯನ್ನು ಹೊರತುಪಡಿಸಿ ಡೇಟಾವನ್ನು ಮೂರನೇ ವ್ಯಕ್ತಿಗಳಿಗೆ ಸಂವಹನ ಮಾಡಲಾಗುವುದಿಲ್ಲ.
  5. ಡೇಟಾ ಸಂಗ್ರಹಣೆ: ಆಕ್ಸೆಂಟಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು (ಇಯು) ಹೋಸ್ಟ್ ಮಾಡಿದ ಡೇಟಾಬೇಸ್
  6. ಹಕ್ಕುಗಳು: ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನೀವು ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಮಿತಿಗೊಳಿಸಬಹುದು, ಮರುಪಡೆಯಬಹುದು ಮತ್ತು ಅಳಿಸಬಹುದು.