ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಅನುಮತಿಸುವ cdnj ಗಳಲ್ಲಿನ ದುರ್ಬಲತೆ

ಕ್ಲೌಡ್‌ಫ್ಲೇರ್‌ನ cdnjs ಕಂಟೆಂಟ್ ಡೆಲಿವರಿ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ನಿರ್ಣಾಯಕ ದುರ್ಬಲತೆಯನ್ನು ಗುರುತಿಸಲಾಗಿದೆ, ಇದು JavaScript ಲೈಬ್ರರಿಗಳ ವಿತರಣೆಯನ್ನು ವೇಗಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, CDN ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಅನಿಯಂತ್ರಿತ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಅಂತರ್ಜಾಲದಲ್ಲಿನ ಎಲ್ಲಾ ಸೈಟ್‌ಗಳಲ್ಲಿ ಸುಮಾರು 12.7% ರಷ್ಟು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಲೈಬ್ರರಿಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಸೇವೆಯನ್ನು ಬಳಸುವುದರಿಂದ ಸಮಸ್ಯೆಯ ಅಪಾಯವು ಉಲ್ಬಣಗೊಂಡಿದೆ ಮತ್ತು ಮೂಲಸೌಕರ್ಯದ ರಾಜಿಯು ಈ ಯಾವುದೇ ಸೈಟ್‌ಗಳಿಂದ ಒದಗಿಸಲಾದ ಲೈಬ್ರರಿಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.

cdnjs ಸೇವೆಯು Git ಅಥವಾ NPM ರೆಪೊಸಿಟರಿಯಿಂದ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಅದರ ನಂತರ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಲೈಬ್ರರಿಗಳ ಲೋಡ್ ಅನ್ನು ವೇಗಗೊಳಿಸಲು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಕಂಟೆಂಟ್ ಡೆಲಿವರಿ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಉಚಿತವಾಗಿ ಬಳಸಲು ಯಾವುದೇ ಸೈಟ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ. GitHub ನಲ್ಲಿ ಪ್ರಕಟವಾದ cdnjs ಘಟಕಗಳ ಕೋಡ್ ಅನ್ನು ಅಧ್ಯಯನ ಮಾಡುವಾಗ, tgz ಆರ್ಕೈವ್‌ಗಳಲ್ಲಿ NPM ಪ್ಯಾಕೇಜುಗಳನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡಲು, ಗೋ ಭಾಷೆಯಲ್ಲಿನ ಪ್ರಮಾಣಿತ ಆರ್ಕೈವ್/ಟಾರ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಮಾರ್ಗಗಳನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸದೆಯೇ ಫೈಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ ಎಂದು ತಿಳಿದುಬಂದಿದೆ. . ಕೊಟ್ಟಿರುವ ಪಟ್ಟಿಯ ಆಧಾರದ ಮೇಲೆ ಸ್ಕ್ರಿಪ್ಟ್ ವಿಷಯಗಳನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡಿದಾಗ, "../../../../../../../tmp/test" ನಂತಹ ಫೈಲ್‌ಗಳ ಆರ್ಕೈವ್‌ನಲ್ಲಿ ಉಪಸ್ಥಿತಿಯು ಮಾಡಬಹುದು ಪ್ರವೇಶ ಹಕ್ಕುಗಳು ಅನುಮತಿಸುವವರೆಗೆ ಸಿಸ್ಟಂನಲ್ಲಿ ಅನಿಯಂತ್ರಿತ ಫೈಲ್‌ಗಳನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡಲು ಕಾರಣವಾಗುತ್ತದೆ.

ಆಕ್ರಮಣಕಾರನು ತನ್ನ ಲೈಬ್ರರಿಯನ್ನು cdnjs ಗೆ ಸೇರಿಸಲು ಅರ್ಜಿ ಸಲ್ಲಿಸಬಹುದು ಮತ್ತು NPM ರೆಪೊಸಿಟರಿಯ ಹಾದಿಯಲ್ಲಿ “../” ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರುವ ಫೈಲ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ವಿಶೇಷವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಆರ್ಕೈವ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಎಂದು ಸೂಚಿಸಲಾಗಿದೆ. cdnjs ಸರ್ವರ್‌ಗಳಲ್ಲಿ, "ಸ್ವಯಂ ನವೀಕರಣ" ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿಯತಕಾಲಿಕವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ, ಈ ಸಮಯದಲ್ಲಿ ಹ್ಯಾಂಡ್ಲರ್ ಪ್ರಸ್ತಾವಿತ ಲೈಬ್ರರಿಯ ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ವಿಷಯಗಳನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡುತ್ತದೆ. "../" ಪಥಗಳೊಂದಿಗೆ ಫೈಲ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ಆಕ್ರಮಣಕಾರರು ಸೇವಾ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳೊಂದಿಗೆ ಫೈಲ್‌ಗಳನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡಬಹುದು ಮತ್ತು ಅನ್‌ಪ್ಯಾಕ್ ಮಾಡಿದ ಸರ್ವರ್‌ನಲ್ಲಿ ಅವರ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು.

Git ನಿಂದ ನವೀಕರಣಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವ ಸಂದರ್ಭದಲ್ಲಿ, ನವೀಕರಣಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವ ಹ್ಯಾಂಡ್ಲರ್ Git ನಿಂದ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸುವಾಗ ಸಾಂಕೇತಿಕ ಲಿಂಕ್‌ಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವುದಿಲ್ಲ ಎಂದು ಕಂಡುಹಿಡಿಯಲಾಯಿತು. ಈ ವೈಶಿಷ್ಟ್ಯವು Git ಗೆ ಸಾಂಕೇತಿಕ ಲಿಂಕ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಸರ್ವರ್‌ನಿಂದ ಯಾವುದೇ ಫೈಲ್‌ಗಳ ಓದುವಿಕೆಯನ್ನು ಸಂಘಟಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು.

ಫೈಲ್ ಓದುವಿಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಊಹೆಯನ್ನು ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ಹ್ಯಾಕರ್‌ಒನ್‌ನಲ್ಲಿ ಬಹುಮಾನವನ್ನು ಪಡೆಯಲು ಹ್ಯಾಕಿಂಗ್ ಸಿಡಿಎನ್‌ಜೆಗಳ ಪ್ರಾತ್ಯಕ್ಷಿಕೆಯೊಂದಿಗೆ ಪ್ರಯೋಗಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಿರ್ಧರಿಸಲಾಯಿತು. ಸಾಂಕೇತಿಕ ಲಿಂಕ್ test.js ಅನ್ನು CDN ಮೂಲಕ ಒದಗಿಸಲಾದ JavaScript ಲೈಬ್ರರಿಯ Git ರೆಪೊಸಿಟರಿಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಇದು /proc/self/maps ಫೈಲ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಲೈಬ್ರರಿಯ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಪ್ರಕಟಿಸಿದ ನಂತರ, ಅಪ್‌ಡೇಟ್ ಹ್ಯಾಂಡ್ಲರ್ ಈ ರೆಪೊಸಿಟರಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದರು ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೈಲ್ ಅನ್ನು cdnjs ನಲ್ಲಿ ಪ್ರಕಟಿಸಿದರು (test.js ಅನ್ನು ಸಾಂಕೇತಿಕ ಲಿಂಕ್‌ನಂತೆ ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ಈ ಫೈಲ್ ಅನ್ನು ವಿನಂತಿಸಿದಾಗ, /proc/self/maps ನ ವಿಷಯಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗಿದೆ )

ಫೈಲ್ /proc/self/environ ಗೆ ಸಾಂಕೇತಿಕ ಲಿಂಕ್ ಅನ್ನು ಬದಲಿಸಿ, ನೀಡಿದ ಡೇಟಾವು GITHUB_REPO_API_KEY ಮತ್ತು WORKERS_KV_API_TOKEN ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗಳ ಮೌಲ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿರುವುದನ್ನು ಅಧ್ಯಯನದ ಲೇಖಕರು ಗಮನಿಸಿದರು. ಮೊದಲ ವೇರಿಯೇಬಲ್ GitHub ನಲ್ಲಿ robocdnjs ರೆಪೊಸಿಟರಿಯನ್ನು ಬರೆಯಲು API ಕೀಲಿಯನ್ನು ಸಂಗ್ರಹಿಸಿದೆ. ಎರಡನೇ ವೇರಿಯೇಬಲ್ cdnjs ನಲ್ಲಿ KV ಸಂಗ್ರಹಣೆಗೆ ಟೋಕನ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಿದೆ. ಸ್ವೀಕರಿಸಿದ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಂಡು, ಆಕ್ರಮಣಕಾರರು cdnj ಗಳಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬಹುದು ಮತ್ತು ಮೂಲಸೌಕರ್ಯವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ರಾಜಿ ಮಾಡಿಕೊಳ್ಳಬಹುದು.

ಮೂಲ: opennet.ru

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