ದುರುದ್ದೇಶಪೂರಿತ ಫೈಲ್ ತೆರೆದಾಗ Vim ನಲ್ಲಿನ ದುರ್ಬಲತೆ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್‌ಗೆ ಕಾರಣವಾಗುತ್ತದೆ

ಪಠ್ಯ ಸಂಪಾದಕರಲ್ಲಿ ನಾನು ಬಂದು и ನಿಯೋವಿಮ್ ಕಂಡು ದುರ್ಬಲತೆ (CVE-2019-12735) ವಿಶೇಷವಾಗಿ ರಚಿಸಲಾದ ಫೈಲ್ ಅನ್ನು ತೆರೆದಾಗ ಅನಿಯಂತ್ರಿತ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಡೀಫಾಲ್ಟ್ ಮಾಡೆಲೈನ್ (":ಸೆಟ್ ಮಾಡೆಲೈನ್") ಮೋಡ್ ಸಕ್ರಿಯವಾಗಿದ್ದಾಗ ಸಮಸ್ಯೆಯು ಸ್ವತಃ ಸ್ಪಷ್ಟವಾಗಿ ಗೋಚರಿಸುತ್ತದೆ, ಇದು ಸಂಸ್ಕರಿಸಿದ ಫೈಲ್‌ನಲ್ಲಿ ಎಡಿಟಿಂಗ್ ಆಯ್ಕೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಬಿಡುಗಡೆಗಳಲ್ಲಿ ದುರ್ಬಲತೆಯನ್ನು ನಿವಾರಿಸಲಾಗಿದೆ
ವಿಮ್ 8.1.1365 и ನಿಯೋವಿಮ್ 0.3.6.

ಮಾಡೆಲೈನ್ ಮೂಲಕ ಸೀಮಿತ ಸಂಖ್ಯೆಯ ಆಯ್ಕೆಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಿಸಬಹುದು. ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಆಯ್ಕೆಯ ಮೌಲ್ಯವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದರೆ, ಅದನ್ನು ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ಮೋಡ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ಸರಳವಾದ ಸುರಕ್ಷಿತ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾತ್ರ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ": ಮೂಲ" ಆಜ್ಞೆಯು ಮಾನ್ಯವಾದವುಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಇದರಲ್ಲಿ ನೀವು "!" ಮಾರ್ಪಡಿಸುವಿಕೆಯನ್ನು ಬಳಸಬಹುದು. ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೈಲ್‌ನಿಂದ ಅನಿಯಂತ್ರಿತ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸಲು. ಹೀಗಾಗಿ, ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ಮಾಡೆಲೈನ್ ಸಾಲಿನಲ್ಲಿ "set foldexpr=execute('\:source! some_file'):" ನಂತಹ ನಿರ್ಮಾಣವನ್ನು ಸೂಚಿಸಲು ಸಾಕು. Neovim ಕರೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ, ಆದರೆ ನೀವು ಬದಲಿಗೆ assert_fails ಅನ್ನು ಬಳಸಬಹುದು.

ಉದಾಹರಣೆಗೆ, "uname -a" ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಲು, Vim ಅಥವಾ Neovim ನಲ್ಲಿ ಫೈಲ್ ಅನ್ನು ತೆರೆಯಿರಿ ಅದರ ಮೊದಲ ಅಥವಾ ಕೊನೆಯ ಸಾಲು ಹೇಳುತ್ತದೆ:

:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

ಮೂಲ! %" ಪ್ರಸ್ತುತ ಫೈಲ್‌ನಿಂದ ಆಜ್ಞೆಗಳನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ":!uname -a" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಕೊಟ್ಟಿರುವ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಔಟ್‌ಪುಟ್‌ನಿಂದ ಮರೆಮಾಡಲು ಕ್ಯಾಟ್ ಯುಟಿಲಿಟಿ ಎಸ್ಕೇಪ್ ಸೀಕ್ವೆನ್ಸ್‌ಗಳನ್ನು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಇದರಲ್ಲಿ ಮೂಲಮಾದರಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಿ ವಿಮ್‌ನಲ್ಲಿ ಫೈಲ್ ಅನ್ನು ತೆರೆಯುವಾಗ, ಬಲಿಪಶುವಿನ ಸಿಸ್ಟಮ್‌ಗೆ ಶೆಲ್ ಪ್ರವೇಶದೊಂದಿಗೆ ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಕ್ಯಾಟ್ ಯುಟಿಲಿಟಿಯೊಂದಿಗೆ ಟರ್ಮಿನಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಮಾಡಿದಾಗ ಈ ಫೈಲ್ ಅನುಮಾನವನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ.

":set ಮಾಡೆಲೈನ್?" ಆಜ್ಞೆಯೊಂದಿಗೆ ಮಾಡೆಲೈನ್ ಮೋಡ್ ಸಕ್ರಿಯವಾಗಿದೆಯೇ ಎಂದು ನೀವು ಪರಿಶೀಲಿಸಬಹುದು. ಇದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, ನೀವು "ಸೆಟ್ ನೊಮೊಡ್ಲೈನ್" ಸಾಲನ್ನು vimrc ಗೆ ಸೇರಿಸಬಹುದು. ವಿತರಣೆಗಳಲ್ಲಿ, ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ rhel, SUSE/openSUSE, ಫೆಡೋರಾ, ಫ್ರೀಬಿಎಸ್ಡಿ, ಉಬುಂಟು, ಆರ್ಚ್ ಲಿನಕ್ಸ್ и ALT. ದುರ್ಬಲತೆಯು ತೇಪೆಯಿಲ್ಲದೆ ಉಳಿದಿದೆ ಡೆಬಿಯನ್ (ಡೆಬಿಯನ್‌ನಲ್ಲಿ, ಮಾಡೆಲೈನ್ ಅನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ದುರ್ಬಲತೆಯು ಡೀಫಾಲ್ಟ್ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರಕಟವಾಗುವುದಿಲ್ಲ).

ಮೂಲ: opennet.ru

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