ಡೆವಲಪರ್‌ಗೆ ಅಗೋಚರವಾಗಿರುವ ಕೋಡ್‌ಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಪರಿಚಯಿಸಲು ಟ್ರೋಜನ್ ಮೂಲ ದಾಳಿ

ಕೇಂಬ್ರಿಡ್ಜ್ ವಿಶ್ವವಿದ್ಯಾನಿಲಯದ ಸಂಶೋಧಕರು ಪೀರ್-ರಿವ್ಯೂಡ್ ಸೋರ್ಸ್ ಕೋಡ್‌ಗೆ ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ ಅನ್ನು ಮೌನವಾಗಿ ಸೇರಿಸುವ ತಂತ್ರವನ್ನು ಪ್ರಕಟಿಸಿದ್ದಾರೆ. ಸಿದ್ಧಪಡಿಸಿದ ದಾಳಿ ವಿಧಾನ (CVE-2021-42574) ಅನ್ನು ಟ್ರೋಜನ್ ಸೋರ್ಸ್ ಎಂಬ ಹೆಸರಿನಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ಕಂಪೈಲರ್/ಇಂಟರ್‌ಪ್ರಿಟರ್ ಮತ್ತು ಕೋಡ್ ಅನ್ನು ವೀಕ್ಷಿಸುವ ವ್ಯಕ್ತಿಗೆ ವಿಭಿನ್ನವಾಗಿ ಕಾಣುವ ಪಠ್ಯದ ರಚನೆಯನ್ನು ಆಧರಿಸಿದೆ. C, C++ (gcc ಮತ್ತು clang), C#, JavaScript (Node.js), Java (OpenJDK 16), ರಸ್ಟ್, ಗೋ ಮತ್ತು ಪೈಥಾನ್‌ಗೆ ಒದಗಿಸಲಾದ ವಿವಿಧ ಕಂಪೈಲರ್‌ಗಳು ಮತ್ತು ಇಂಟರ್ಪ್ರಿಟರ್‌ಗಳಿಗೆ ವಿಧಾನದ ಉದಾಹರಣೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.

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

ಈ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ಕೋಡ್‌ಗೆ ದುರುದ್ದೇಶಪೂರಿತ ರಚನೆಯನ್ನು ಸೇರಿಸಬಹುದು, ಆದರೆ ನಂತರ ಕೋಡ್ ಅನ್ನು ವೀಕ್ಷಿಸುವಾಗ ಈ ರಚನೆಯೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ಅಗೋಚರವಾಗಿ ಮಾಡಿ, ಕೆಳಗಿನ ಕಾಮೆಂಟ್‌ನಲ್ಲಿ ಅಥವಾ ಬಲದಿಂದ ಎಡಕ್ಕೆ ತೋರಿಸಿರುವ ಅಕ್ಷರಶಃ ಅಕ್ಷರಗಳ ಒಳಗೆ ಸೇರಿಸುವ ಮೂಲಕ, ಅದು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರಣವಾಗುತ್ತದೆ ದುರುದ್ದೇಶಪೂರಿತ ಅಳವಡಿಕೆಯ ಮೇಲೆ ವಿಭಿನ್ನ ಅಕ್ಷರಗಳನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಅಂತಹ ಕೋಡ್ ಶಬ್ದಾರ್ಥವಾಗಿ ಸರಿಯಾಗಿ ಉಳಿಯುತ್ತದೆ, ಆದರೆ ವಿಭಿನ್ನವಾಗಿ ಅರ್ಥೈಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.

ಡೆವಲಪರ್‌ಗೆ ಅಗೋಚರವಾಗಿರುವ ಕೋಡ್‌ಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಪರಿಚಯಿಸಲು ಟ್ರೋಜನ್ ಮೂಲ ದಾಳಿ

ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವಾಗ, ಡೆವಲಪರ್ ಅಕ್ಷರಗಳ ದೃಶ್ಯ ಕ್ರಮವನ್ನು ಎದುರಿಸುತ್ತಾರೆ ಮತ್ತು ಆಧುನಿಕ ಪಠ್ಯ ಸಂಪಾದಕ, ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಅಥವಾ IDE ನಲ್ಲಿ ಅನುಮಾನಾಸ್ಪದ ಕಾಮೆಂಟ್ ಅನ್ನು ನೋಡುತ್ತಾರೆ, ಆದರೆ ಕಂಪೈಲರ್ ಮತ್ತು ಇಂಟರ್ಪ್ರಿಟರ್ ಅಕ್ಷರಗಳ ತಾರ್ಕಿಕ ಕ್ರಮವನ್ನು ಬಳಸುತ್ತಾರೆ ಮತ್ತು ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿನ ದ್ವಿಮುಖ ಪಠ್ಯಕ್ಕೆ ಗಮನ ಕೊಡದೆ ದುರುದ್ದೇಶಪೂರಿತ ಅಳವಡಿಕೆಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ. ಸಮಸ್ಯೆಯು ವಿವಿಧ ಜನಪ್ರಿಯ ಕೋಡ್ ಸಂಪಾದಕರು (VS ಕೋಡ್, ಇಮ್ಯಾಕ್ಸ್, ಆಟಮ್), ಹಾಗೆಯೇ ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಕೋಡ್ ವೀಕ್ಷಿಸಲು ಇಂಟರ್ಫೇಸ್‌ಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ (GitHub, Gitlab, BitBucket ಮತ್ತು ಎಲ್ಲಾ ಅಟ್ಲಾಸಿಯನ್ ಉತ್ಪನ್ನಗಳು).

ಡೆವಲಪರ್‌ಗೆ ಅಗೋಚರವಾಗಿರುವ ಕೋಡ್‌ಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಪರಿಚಯಿಸಲು ಟ್ರೋಜನ್ ಮೂಲ ದಾಳಿ

ದುರುದ್ದೇಶಪೂರಿತ ಕ್ರಿಯೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ವಿಧಾನವನ್ನು ಬಳಸಲು ಹಲವಾರು ಮಾರ್ಗಗಳಿವೆ: ಗುಪ್ತ "ರಿಟರ್ನ್" ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸುವುದು, ಇದು ಸಮಯಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿ ಕಾರ್ಯವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ; ಮಾನ್ಯ ರಚನೆಗಳಂತೆ ಸಾಮಾನ್ಯವಾಗಿ ಗೋಚರಿಸುವ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಕಾಮೆಂಟ್ ಮಾಡುವುದು (ಉದಾಹರಣೆಗೆ, ಪ್ರಮುಖ ತಪಾಸಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು); ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯೀಕರಣ ವೈಫಲ್ಯಗಳಿಗೆ ಕಾರಣವಾಗುವ ಇತರ ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯಗಳನ್ನು ನಿಯೋಜಿಸುವುದು.

ಉದಾಹರಣೆಗೆ, ಆಕ್ರಮಣಕಾರರು ಈ ಸಾಲನ್ನು ಒಳಗೊಂಡಿರುವ ಬದಲಾವಣೆಯನ್ನು ಪ್ರಸ್ತಾಪಿಸಬಹುದು: if access_level != "ಬಳಕೆದಾರ{U+202E} {U+2066}// ನಿರ್ವಾಹಕರೇ ಎಂದು ಪರಿಶೀಲಿಸಿ{U+2069} {U+2066}" {

ಆಕ್ಸೆಸ್_ಲೆವೆಲ್ != “ಬಳಕೆದಾರ” { // ನಿರ್ವಾಹಕರೇ ಎಂದು ಪರಿಶೀಲಿಸುವ ಇಂಟರ್‌ಫೇಸ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಹೋಮೋಗ್ಲಿಫ್‌ಗಳ ಬಳಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಮತ್ತೊಂದು ದಾಳಿಯ ರೂಪಾಂತರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ (CVE-2021-42694), ನೋಟದಲ್ಲಿ ಹೋಲುವ ಅಕ್ಷರಗಳು, ಆದರೆ ಅರ್ಥದಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ ಮತ್ತು ವಿಭಿನ್ನ ಯುನಿಕೋಡ್ ಕೋಡ್‌ಗಳನ್ನು ಹೊಂದಿವೆ (ಉದಾಹರಣೆಗೆ, "ɑ" ಅಕ್ಷರವು "" ಅನ್ನು ಹೋಲುತ್ತದೆ a", "ɡ" - "g", "ɩ" - "l"). ಡೆವಲಪರ್‌ಗಳನ್ನು ದಾರಿತಪ್ಪಿಸಲು ಕಾರ್ಯಗಳು ಮತ್ತು ವೇರಿಯಬಲ್‌ಗಳ ಹೆಸರಿನಲ್ಲಿ ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ ಇದೇ ರೀತಿಯ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಪ್ರತ್ಯೇಕಿಸಲಾಗದ ಹೆಸರುಗಳೊಂದಿಗೆ ಎರಡು ಕಾರ್ಯಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ವಿವರವಾದ ವಿಶ್ಲೇಷಣೆಯಿಲ್ಲದೆ, ಈ ಎರಡು ಕಾರ್ಯಗಳಲ್ಲಿ ಯಾವುದನ್ನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಳದಲ್ಲಿ ಕರೆಯಲಾಗುತ್ತದೆ ಎಂಬುದು ತಕ್ಷಣವೇ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ.

ಡೆವಲಪರ್‌ಗೆ ಅಗೋಚರವಾಗಿರುವ ಕೋಡ್‌ಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಪರಿಚಯಿಸಲು ಟ್ರೋಜನ್ ಮೂಲ ದಾಳಿ

ಸುರಕ್ಷತಾ ಕ್ರಮವಾಗಿ, ಯುನಿಕೋಡ್ ಅಕ್ಷರಗಳನ್ನು ಬೆಂಬಲಿಸುವ ಕಂಪೈಲರ್‌ಗಳು, ಇಂಟರ್ಪ್ರಿಟರ್‌ಗಳು ಮತ್ತು ಅಸೆಂಬ್ಲಿ ಪರಿಕರಗಳು ಕಾಮೆಂಟ್‌ಗಳು, ಸ್ಟ್ರಿಂಗ್ ಅಕ್ಷರಶಃ ಅಥವಾ ಔಟ್‌ಪುಟ್‌ನ ದಿಕ್ಕನ್ನು ಬದಲಾಯಿಸುವ ಐಡೆಂಟಿಫೈಯರ್‌ಗಳಲ್ಲಿ ಜೋಡಿಯಾಗದ ನಿಯಂತ್ರಣ ಅಕ್ಷರಗಳಿದ್ದರೆ ದೋಷ ಅಥವಾ ಎಚ್ಚರಿಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ (U+202A, U+202B, U +202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E ಮತ್ತು U+200F). ಅಂತಹ ಅಕ್ಷರಗಳನ್ನು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ವಿಶೇಷಣಗಳಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ನಿಷೇಧಿಸಬೇಕು ಮತ್ತು ಕೋಡ್ ಎಡಿಟರ್‌ಗಳು ಮತ್ತು ರೆಪೊಸಿಟರಿ ಇಂಟರ್‌ಫೇಸ್‌ಗಳಲ್ಲಿ ಗೌರವಿಸಬೇಕು.

ಅನುಬಂಧ 1: GCC, LLVM/Clang, Rust, Go, Python ಮತ್ತು binutils ಗಾಗಿ ದುರ್ಬಲತೆ ಪ್ಯಾಚ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ. GitHub, Bitbucket ಮತ್ತು Jira ಸಹ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದೆ. GitLab ಗಾಗಿ ಸರಿಪಡಿಸುವಿಕೆ ಪ್ರಗತಿಯಲ್ಲಿದೆ. ಸಮಸ್ಯಾತ್ಮಕ ಕೋಡ್ ಅನ್ನು ಗುರುತಿಸಲು, ಆಜ್ಞೆಯನ್ನು ಬಳಸಲು ಸೂಚಿಸಲಾಗಿದೆ: grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069\uXNUMX]' ಮೂಲ

ಅನುಬಂಧ 2: ಪ್ಲಾನ್ 9 ಓಎಸ್ ಮತ್ತು ಗೋ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಡೆವಲಪರ್‌ಗಳಲ್ಲಿ ಒಬ್ಬರಾದ ರಸ್ ಕಾಕ್ಸ್, ವಿವರಿಸಿದ ದಾಳಿ ವಿಧಾನಕ್ಕೆ ಹೆಚ್ಚಿನ ಗಮನವನ್ನು ಟೀಕಿಸಿದ್ದಾರೆ, ಇದು ಬಹಳ ಹಿಂದಿನಿಂದಲೂ ತಿಳಿದಿದೆ (ಗೋ, ರಸ್ಟ್, ಸಿ ++, ರೂಬಿ) ಮತ್ತು ಅದನ್ನು ಗಂಭೀರವಾಗಿ ಪರಿಗಣಿಸಲಾಗಿಲ್ಲ. . ಕಾಕ್ಸ್ ಪ್ರಕಾರ, ಸಮಸ್ಯೆಯು ಮುಖ್ಯವಾಗಿ ಕೋಡ್ ಎಡಿಟರ್‌ಗಳು ಮತ್ತು ವೆಬ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳಲ್ಲಿನ ಮಾಹಿತಿಯ ಸರಿಯಾದ ಪ್ರದರ್ಶನಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ, ವಿಮರ್ಶೆಯ ಸಮಯದಲ್ಲಿ ಸರಿಯಾದ ಪರಿಕರಗಳು ಮತ್ತು ಕೋಡ್ ವಿಶ್ಲೇಷಕಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ ಇದನ್ನು ಪರಿಹರಿಸಬಹುದು. ಆದ್ದರಿಂದ, ಊಹಾತ್ಮಕ ದಾಳಿಗಳತ್ತ ಗಮನ ಸೆಳೆಯುವ ಬದಲು, ಕೋಡ್ ಮತ್ತು ಅವಲಂಬನೆ ಪರಿಶೀಲನೆ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಸುಧಾರಿಸುವತ್ತ ಗಮನಹರಿಸುವುದು ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ.

ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಕಂಪೈಲರ್‌ಗಳು ಸರಿಯಾದ ಸ್ಥಳವಲ್ಲ ಎಂದು ರಾಸ್ ಕಾಕ್ಸ್ ನಂಬುತ್ತಾರೆ, ಏಕೆಂದರೆ ಕಂಪೈಲರ್ ಮಟ್ಟದಲ್ಲಿ ಅಪಾಯಕಾರಿ ಚಿಹ್ನೆಗಳನ್ನು ನಿಷೇಧಿಸುವ ಮೂಲಕ, ಈ ಚಿಹ್ನೆಗಳ ಬಳಕೆಯು ಸ್ವೀಕಾರಾರ್ಹವಾದ ಸಾಧನಗಳ ಒಂದು ದೊಡ್ಡ ಪದರವು ಉಳಿದಿದೆ, ಉದಾಹರಣೆಗೆ ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್‌ಗಳು, ಅಸೆಂಬ್ಲರ್‌ಗಳು, ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗಳು ಮತ್ತು ವಿವಿಧ ಕಾನ್ಫಿಗರೇಶನ್ ಪಾರ್ಸರ್‌ಗಳು ಮತ್ತು ಡೇಟಾ. ಉದಾಹರಣೆಯಾಗಿ, ರಸ್ಟ್ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ನೀಡಲಾಗಿದೆ, ಇದು ಕಂಪೈಲರ್‌ನಲ್ಲಿ LTR/RTL ಕೋಡ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದನ್ನು ನಿಷೇಧಿಸಿದೆ, ಆದರೆ ಕಾರ್ಗೋ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್‌ಗೆ ಸರಿಪಡಿಸುವಿಕೆಯನ್ನು ಸೇರಿಸಲಿಲ್ಲ, ಇದು Cargo.toml ಫೈಲ್ ಮೂಲಕ ಇದೇ ರೀತಿಯ ದಾಳಿಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಅದೇ ರೀತಿ, BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml ಮತ್ತು requirements.txt ನಂತಹ ಫೈಲ್‌ಗಳು ದಾಳಿಯ ಮೂಲಗಳಾಗಬಹುದು.

ಮೂಲ: opennet.ru

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