ರಿಮೋಟ್ ಮತ್ತು ಸ್ಥಳೀಯ ರೂಟ್ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವ OpenSMTPD ಯಲ್ಲಿನ ದೋಷಗಳು

ಕ್ವಾಲಿಸ್ ಕಂಪನಿ ಬಹಿರಂಗವಾಯಿತು ಮೇಲ್ ಸರ್ವರ್‌ನಲ್ಲಿ ಮತ್ತೊಂದು ರಿಮೋಟ್ ಕ್ರಿಟಿಕಲ್ ದುರ್ಬಲತೆ (CVE-2020-8794) OpenSMTPD, OpenBSD ಯೋಜನೆಯಿಂದ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಜನವರಿ ಅಂತ್ಯದಲ್ಲಿ ಗುರುತಿಸಿದ ಹಾಗೆ ದುರ್ಬಲತೆ, ಹೊಸ ಸಮಸ್ಯೆಯು ರೂಟ್ ಬಳಕೆದಾರರ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಸರ್ವರ್‌ನಲ್ಲಿ ಅನಿಯಂತ್ರಿತ ಶೆಲ್ ಆಜ್ಞೆಗಳನ್ನು ದೂರದಿಂದಲೇ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ದುರ್ಬಲತೆ ನಿವಾರಿಸಲಾಗಿದೆ ಸಂಚಿಕೆಯಲ್ಲಿ OpenSMTPD 6.6.4p1.

ರಿಮೋಟ್ ಮೇಲ್ ಸರ್ವರ್‌ಗೆ ಮೇಲ್ ಅನ್ನು ತಲುಪಿಸುವ ಕೋಡ್‌ನಲ್ಲಿನ ದೋಷದಿಂದ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ (ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಕೋಡ್‌ನಲ್ಲಿ ಅಲ್ಲ). ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲಿ ಮತ್ತು ಸರ್ವರ್ ಬದಿಯಲ್ಲಿ ದಾಳಿ ಸಾಧ್ಯ. ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲಿ, OpenSMTPD ಯ ಡೀಫಾಲ್ಟ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಆಕ್ರಮಣವು ಸಾಧ್ಯ, ಇದರಲ್ಲಿ OpenSMTPD ಆಂತರಿಕ ನೆಟ್‌ವರ್ಕ್ ಇಂಟರ್‌ಫೇಸ್ (ಲೋಕಲ್ ಹೋಸ್ಟ್) ನಲ್ಲಿ ಮಾತ್ರ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ಬಾಹ್ಯ ಸರ್ವರ್‌ಗಳಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ದುರ್ಬಲತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಲು, ಪತ್ರದ ವಿತರಣೆಯ ಸಮಯದಲ್ಲಿ, OpenSMTPD ಆಕ್ರಮಣಕಾರರಿಂದ ನಿಯಂತ್ರಿಸಲ್ಪಡುವ ಮೇಲ್ ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸೆಶನ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ ಅಥವಾ ಆಕ್ರಮಣಕಾರನು ಕ್ಲೈಂಟ್ ಸಂಪರ್ಕಕ್ಕೆ ಬೆಣೆಯಬಹುದು (MITM ಅಥವಾ DNS ಅಥವಾ BGP ಮೂಲಕ ದಾಳಿಯ ಸಮಯದಲ್ಲಿ ಮರುನಿರ್ದೇಶನ )

ಸರ್ವರ್-ಸೈಡ್ ದಾಳಿಗಾಗಿ, ಇತರ ಮೇಲ್ ಸರ್ವರ್‌ಗಳಿಂದ ಬಾಹ್ಯ ನೆಟ್‌ವರ್ಕ್ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಅಥವಾ ಅನಿಯಂತ್ರಿತ ಇಮೇಲ್‌ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸೇವೆಗಳನ್ನು ಒದಗಿಸಲು OpenSMTPD ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕು (ಉದಾಹರಣೆಗೆ, ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿನ ವಿಳಾಸ ದೃಢೀಕರಣ ಫಾರ್ಮ್‌ಗಳು). ಉದಾಹರಣೆಗೆ, ಆಕ್ರಮಣಕಾರರು OpenSMTPD ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕಿಸಬಹುದು ಮತ್ತು ತಪ್ಪಾದ ಪತ್ರವನ್ನು (ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಬಳಕೆದಾರರಿಗೆ) ಕಳುಹಿಸಬಹುದು, ಇದು ಆಕ್ರಮಣಕಾರರ ಸರ್ವರ್‌ಗೆ ದೋಷ ಕೋಡ್ (ಬೌನ್ಸ್) ನೊಂದಿಗೆ ಪತ್ರವನ್ನು ಕಳುಹಿಸುವ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಆಕ್ರಮಣಕಾರರ ಸರ್ವರ್‌ಗೆ ಅಧಿಸೂಚನೆಯನ್ನು ತಲುಪಿಸಲು OpenSMTPD ಸಂಪರ್ಕಿಸಿದಾಗ ಆಕ್ರಮಣಕಾರರು ದುರ್ಬಲತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ದಾಳಿಯ ಸಮಯದಲ್ಲಿ ಇಂಜೆಕ್ಟ್ ಮಾಡಲಾದ ಶೆಲ್ ಆಜ್ಞೆಗಳನ್ನು OpenSMTPD ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ರೂಟ್ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ಫೈಲ್‌ನಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಆಕ್ರಮಣಕಾರರು OpenSMTPD ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಅಥವಾ ಆಕ್ರಮಣವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು OpenSMTPD ಯ ಕ್ರ್ಯಾಶ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಕಾಯಬೇಕು.

ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ ರಿಮೋಟ್ ಸರ್ವರ್‌ನಿಂದ ಹಿಂತಿರುಗಿಸಲಾದ ಮಲ್ಟಿಲೈನ್ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವ ಕೋಡ್‌ನಲ್ಲಿ mta_io() ಕಾರ್ಯದಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ (ಉದಾಹರಣೆಗೆ, "250-EnHANCEDSTATUSCODES" ಮತ್ತು "250 ಸಹಾಯ"). ಮೊದಲ ಸಾಲಿನಲ್ಲಿ ಮೂರು-ಅಂಕಿಯ ಸಂಖ್ಯೆ ಮತ್ತು ಪಠ್ಯವನ್ನು "-" ಅಕ್ಷರದಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿದೆ ಎಂದು OpenSMTPD ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಎರಡನೇ ಸಾಲಿನಲ್ಲಿ ಮೂರು-ಅಂಕಿಯ ಸಂಖ್ಯೆ ಮತ್ತು ಪಠ್ಯವನ್ನು ಸ್ಪೇಸ್‌ನಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿದೆ. ಮೂರು-ಅಂಕಿಯ ಸಂಖ್ಯೆಯನ್ನು ಎರಡನೇ ಸಾಲಿನಲ್ಲಿ ಸ್ಪೇಸ್ ಮತ್ತು ಪಠ್ಯದಿಂದ ಅನುಸರಿಸದಿದ್ದರೆ, ಪಠ್ಯವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಬಳಸುವ ಪಾಯಿಂಟರ್ ಅನ್ನು '\0' ಅಕ್ಷರದ ನಂತರ ಬೈಟ್‌ಗೆ ಹೊಂದಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಂತ್ಯದ ನಂತರ ಡೇಟಾವನ್ನು ನಕಲಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ ಬಫರ್ ಒಳಗೆ ಲೈನ್ ನ.

ಓಪನ್‌ಬಿಎಸ್‌ಡಿ ಯೋಜನೆಯ ಕೋರಿಕೆಯ ಮೇರೆಗೆ, ಬಳಕೆದಾರರು ತಮ್ಮ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ನವೀಕರಿಸಲು ಅನುಮತಿಸಲು ದುರ್ಬಲತೆಯ ಶೋಷಣೆಯ ಕುರಿತು ವಿವರಗಳ ಪ್ರಕಟಣೆಯನ್ನು ಫೆಬ್ರವರಿ 26 ರವರೆಗೆ ವಿಳಂಬಗೊಳಿಸಲಾಗಿದೆ. ಡಿಸೆಂಬರ್ 2015 ರಿಂದ ಕೋಡ್‌ಬೇಸ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ, ಆದರೆ ರೂಟ್ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಕೋಡ್ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು ಶೋಷಣೆಯು ಮೇ 2018 ರಿಂದ ಸಾಧ್ಯವಾಗಿದೆ. ಸಂಶೋಧಕರು ಶೋಷಣೆಯ ಕೆಲಸದ ಮೂಲಮಾದರಿಯನ್ನು ಸಿದ್ಧಪಡಿಸಿದರು, ಇದನ್ನು OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (ಪರೀಕ್ಷೆ) ಮತ್ತು Fedora 31 ಗಾಗಿ OpenSMTPD ಬಿಲ್ಡ್‌ಗಳಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿ ಪರೀಕ್ಷಿಸಲಾಯಿತು.

OpenSMTPD ಯಲ್ಲಿಯೂ ಸಹ ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತೊಂದು ದುರ್ಬಲತೆ (CVE-2020-8793) ಇದು ಸಿಸ್ಟಂನಲ್ಲಿ ಯಾವುದೇ ಫೈಲ್‌ನ ಮೊದಲ ಸಾಲನ್ನು ಓದಲು ಸ್ಥಳೀಯ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ರೂಟ್ ಬಳಕೆದಾರರ ಪಾಸ್‌ವರ್ಡ್ ಹ್ಯಾಶ್ ಅನ್ನು ಒಳಗೊಂಡಿರುವ /etc/master.passwd ನ ಮೊದಲ ಸಾಲನ್ನು ನೀವು ಓದಬಹುದು. ಈ ಕಡತವು /var/spool/smtpd/ ಡೈರೆಕ್ಟರಿಯಂತೆಯೇ ಅದೇ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿದ್ದರೆ ಬೇರೊಬ್ಬ ಬಳಕೆದಾರರ ಮಾಲೀಕತ್ವದ ಫೈಲ್‌ನ ಸಂಪೂರ್ಣ ವಿಷಯಗಳನ್ನು ಓದಲು ದುರ್ಬಲತೆ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. /proc/sys/fs/protected_hardlinks ಮೌಲ್ಯವನ್ನು 1 ಗೆ ಹೊಂದಿಸಿರುವ ಅನೇಕ ಲಿನಕ್ಸ್ ವಿತರಣೆಗಳಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ.

ಸಮಸ್ಯೆಯು ಅಪೂರ್ಣ ನಿರ್ಮೂಲನದ ಪರಿಣಾಮವಾಗಿದೆ ಸಮಸ್ಯೆಗಳು2015 ರಲ್ಲಿ ಕ್ವಾಲಿಸ್ ನಡೆಸಿದ ಲೆಕ್ಕಪರಿಶೋಧನೆಯ ಸಮಯದಲ್ಲಿ ಧ್ವನಿ ನೀಡಿದ್ದಾರೆ. ಆಕ್ರಮಣಕಾರನು "PATH=." ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸುವ ಮೂಲಕ "_smtpq" ಗುಂಪಿನ ಹಕ್ಕುಗಳೊಂದಿಗೆ ತನ್ನ ಕೋಡ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಾಧಿಸಬಹುದು. ಮತ್ತು ಪ್ರಸ್ತುತ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಮೇಕ್‌ಮ್ಯಾಪ್ ಎಂಬ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಇರಿಸುವುದು (smtpctl ಯುಟಿಲಿಟಿ ಪಥವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸದೆ ಮೇಕ್‌ಮ್ಯಾಪ್ ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ). "_smtpq" ಗುಂಪಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯುವ ಮೂಲಕ, ಆಕ್ರಮಣಕಾರನು ಓಟದ ಸ್ಥಿತಿಯನ್ನು ಉಂಟುಮಾಡಬಹುದು (ಆಫ್‌ಲೈನ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ದೊಡ್ಡ ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ ಮತ್ತು SIGSTOP ಸಂಕೇತವನ್ನು ಕಳುಹಿಸಬಹುದು) ಮತ್ತು ಪ್ರಕ್ರಿಯೆಯು ಪೂರ್ಣಗೊಳ್ಳುವ ಮೊದಲು, ಆಫ್‌ಲೈನ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿರುವ ಫೈಲ್ ಅನ್ನು ಹಾರ್ಡ್‌ನೊಂದಿಗೆ ಬದಲಾಯಿಸಿ symlink ಗುರಿ ಕಡತವನ್ನು ಸೂಚಿಸುವ ಅದರ ವಿಷಯಗಳನ್ನು ಓದಲು ಅಗತ್ಯವಿದೆ .

ಫೆಡೋರಾ 31 ರಲ್ಲಿ ದುರ್ಬಲತೆಯು ರೂಟ್ ಗುಂಪಿನ ಸವಲತ್ತುಗಳನ್ನು ತಕ್ಷಣವೇ ಪಡೆಯಲು ಅನುಮತಿಸುತ್ತದೆ ಎಂಬುದು ಗಮನಾರ್ಹವಾಗಿದೆ, ಏಕೆಂದರೆ smtpctl ಪ್ರಕ್ರಿಯೆಯು setgid smtpq ಫ್ಲ್ಯಾಗ್ ಬದಲಿಗೆ setgid ರೂಟ್ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿದೆ. ರೂಟ್ ಗುಂಪಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯುವ ಮೂಲಕ, ನೀವು /var/lib/sss/mc/passwd ನ ವಿಷಯಗಳನ್ನು ಮೇಲ್ಬರಹ ಮಾಡಬಹುದು ಮತ್ತು ಸಿಸ್ಟಮ್‌ಗೆ ಸಂಪೂರ್ಣ ರೂಟ್ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಬಹುದು.

ಮೂಲ: opennet.ru

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