ರೂಟ್ ಸವಲತ್ತುಗಳೊಂದಿಗೆ ಸರ್ವರ್‌ನಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುವ ಎಕ್ಸಿಮ್‌ನಲ್ಲಿನ ನಿರ್ಣಾಯಕ ದುರ್ಬಲತೆ

Exim ಮೇಲ್ ಸರ್ವರ್‌ನಲ್ಲಿ ಗುರುತಿಸಲಾಗಿದೆ ನಿರ್ಣಾಯಕ ದುರ್ಬಲತೆ (CVE-2019-10149), ವಿಶೇಷವಾಗಿ ರಚಿಸಲಾದ ವಿನಂತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ರೂಟ್ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಸರ್ವರ್‌ನಲ್ಲಿ ರಿಮೋಟ್ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್‌ಗೆ ಕಾರಣವಾಗಬಹುದು. ಸಮಸ್ಯೆಯ ದುರ್ಬಳಕೆಯ ಸಾಧ್ಯತೆಯನ್ನು 4.87 ರಿಂದ 4.91 ವರೆಗಿನ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಅಥವಾ EXPERIMENTAL_EVENT ಆಯ್ಕೆಯೊಂದಿಗೆ ನಿರ್ಮಿಸುವಾಗ ಗುರುತಿಸಲಾಗಿದೆ.

ಡೀಫಾಲ್ಟ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ, ಸ್ಥಳೀಯ ಬಳಕೆದಾರರಿಂದ ಅನಗತ್ಯ ತೊಡಕುಗಳಿಲ್ಲದೆ ದಾಳಿಯನ್ನು ನಡೆಸಬಹುದು, ಏಕೆಂದರೆ "ಪರಿಶೀಲಿಸು = ಸ್ವೀಕರಿಸುವವರ" ACL ಅನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ, ಇದು ಬಾಹ್ಯ ವಿಳಾಸಗಳಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ಪರಿಶೀಲನೆಗಳನ್ನು ಮಾಡುತ್ತದೆ. ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿದಾಗ ರಿಮೋಟ್ ಅಟ್ಯಾಕ್ ಸಂಭವಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಮತ್ತೊಂದು ಡೊಮೇನ್‌ಗಾಗಿ ದ್ವಿತೀಯ MX ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದು, "verify=recipient" ACL ಅನ್ನು ತೆಗೆದುಹಾಕುವುದು ಅಥವಾ local_part_suffix ಗೆ ಕೆಲವು ಬದಲಾವಣೆಗಳು). ಆಕ್ರಮಣಕಾರರು ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕವನ್ನು 7 ದಿನಗಳವರೆಗೆ ತೆರೆದಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ, ಸಮಯ ಮೀರುವಿಕೆಯನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ ಒಂದು ಬೈಟ್ ಕಳುಹಿಸುವುದು) ರಿಮೋಟ್ ಅಟ್ಯಾಕ್ ಸಹ ಸಾಧ್ಯವಿದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಸಮಸ್ಯೆಯ ರಿಮೋಟ್ ಶೋಷಣೆಗಾಗಿ ಸರಳವಾದ ದಾಳಿ ವಾಹಕಗಳು ಇರುವ ಸಾಧ್ಯತೆಯಿದೆ.

/src/deliver.c ಫೈಲ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ deliver_message() ಕಾರ್ಯದಲ್ಲಿ ಸ್ವೀಕರಿಸುವವರ ವಿಳಾಸದ ತಪ್ಪಾದ ಪರಿಶೀಲನೆಯಿಂದ ದುರ್ಬಲತೆ ಉಂಟಾಗುತ್ತದೆ. ವಿಳಾಸದ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಅನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವ ಮೂಲಕ, ಆಕ್ರಮಣಕಾರನು ತನ್ನ ಡೇಟಾವನ್ನು ಮೂಲ ಹಕ್ಕುಗಳೊಂದಿಗೆ execv() ಕಾರ್ಯದ ಮೂಲಕ ಕರೆಯಲಾಗುವ ಆಜ್ಞೆಯ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳಿಗೆ ಪರ್ಯಾಯವಾಗಿ ಸಾಧಿಸಬಹುದು. ಕಾರ್ಯಾಚರಣೆಗೆ ಬಫರ್ ಓವರ್‌ಫ್ಲೋಗಳಿಗೆ ಬಳಸಲಾಗುವ ಸಂಕೀರ್ಣ ತಂತ್ರಗಳ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ ಅಥವಾ ಸರಳವಾದ ಅಕ್ಷರ ಪರ್ಯಾಯವು ಸಾಕಾಗುತ್ತದೆ.

ಸಮಸ್ಯೆಯು ವಿಳಾಸ ಪರಿವರ್ತನೆಗಾಗಿ ರಚನೆಯ ಬಳಕೆಗೆ ಸಂಬಂಧಿಸಿದೆ:

deliver_localpart = Expand_string(
string_sprintf("${local_part:%s}", ಹೊಸ->ವಿಳಾಸ));
deliver_domain = Expand_string(
string_sprintf("${ಡೊಮೇನ್:%s}", ಹೊಸ->ವಿಳಾಸ));

Expand_string() ಕಾರ್ಯವು "${run{ಕಮಾಂಡ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಸ್}" ಆಜ್ಞೆಯನ್ನು ಗುರುತಿಸುವುದನ್ನು ಒಳಗೊಂಡಂತೆ ಅತಿ ಜಟಿಲವಾದ ಸಂಯೋಜಕವಾಗಿದೆ, ಇದು ಬಾಹ್ಯ ಹ್ಯಾಂಡ್ಲರ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಹೀಗಾಗಿ, SMTP ಸೆಶನ್‌ನೊಳಗೆ ದಾಳಿ ಮಾಡಲು, ಸ್ಥಳೀಯ ಬಳಕೆದಾರರು 'RCPT TO “username+${run{...}}@localhost”' ನಂತಹ ಆಜ್ಞೆಯನ್ನು ಮಾತ್ರ ಕಳುಹಿಸಬೇಕಾಗುತ್ತದೆ, ಅಲ್ಲಿ local_domains ಪಟ್ಟಿಯಿಂದ ಸ್ಥಳೀಯ ಹೋಸ್ಟ್ ಹೋಸ್ಟ್‌ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಮತ್ತು ಬಳಕೆದಾರಹೆಸರು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸ್ಥಳೀಯ ಬಳಕೆದಾರರ ಹೆಸರಾಗಿದೆ.

ಸರ್ವರ್ ಮೇಲ್ ರಿಲೇ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದ್ದರೆ, ರಿಮೋಟ್‌ನಲ್ಲಿ 'RCPT TO "${run{...}}@relaydomain.com"' ಆದೇಶವನ್ನು ಕಳುಹಿಸಲು ಸಾಕು, ಅಲ್ಲಿ relaydomain.com ರಿಲೇ_ಟೊ_ಡೊಮೈನ್‌ಗಳಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಹೋಸ್ಟ್‌ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಸೆಟ್ಟಿಂಗ್ಗಳ ವಿಭಾಗ. ಸವಲತ್ತು ಮೋಡ್ ಅನ್ನು ಬಿಡಲು Exim ಡೀಫಾಲ್ಟ್ ಆಗದ ಕಾರಣ (deliver_drop_privilege = ತಪ್ಪು), "${run{...}}" ಮೂಲಕ ರವಾನಿಸಲಾದ ಆಜ್ಞೆಗಳನ್ನು ರೂಟ್ ಆಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.

ದುರ್ಬಲವಾಗಿತ್ತು ಎಂಬುದು ಗಮನಾರ್ಹ ನಿವಾರಿಸಲಾಗಿದೆ ಫೆಬ್ರವರಿಯಲ್ಲಿ ಬಿಡುಗಡೆಯಾದ 4.92 ಬಿಡುಗಡೆಯಲ್ಲಿ, ಸರಿಪಡಿಸುವಿಕೆಯು ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು ಎಂದು ಒತ್ತಿಹೇಳದೆ. ಎಕ್ಸಿಮ್ ಡೆವಲಪರ್‌ಗಳಿಂದ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ದುರ್ಬಲತೆಯ ಮರೆಮಾಚುವಿಕೆ ಇದೆ ಎಂದು ನಂಬಲು ಯಾವುದೇ ಕಾರಣವಿಲ್ಲ, ಏಕೆಂದರೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ ತಿದ್ದುಪಡಿಗಳು ತಪ್ಪಾದ ವಿಳಾಸಗಳನ್ನು ರವಾನಿಸಿದಾಗ ವೈಫಲ್ಯ ಸಂಭವಿಸುತ್ತದೆ ಮತ್ತು ಎಕ್ಸಿಮ್‌ನಲ್ಲಿನ ಬದಲಾವಣೆಗಳ ಲೆಕ್ಕಪರಿಶೋಧನೆಯ ಸಮಯದಲ್ಲಿ ಕ್ವಾಲಿಸ್‌ನಿಂದ ದುರ್ಬಲತೆಯನ್ನು ಗುರುತಿಸಲಾಗಿದೆ.

ವಿತರಣೆಗಳಲ್ಲಿ ಬಳಸುವುದನ್ನು ಮುಂದುವರಿಸುವ ಹಿಂದಿನ ಆವೃತ್ತಿಗಳಿಗೆ ಪರಿಹಾರವು ಪ್ರಸ್ತುತವಾಗಿ ಮಾತ್ರ ಲಭ್ಯವಿದೆ ತೇಪೆ. ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಹಿಂದಿನ ಶಾಖೆಗಳಿಗೆ ಸರಿಪಡಿಸುವ ಬಿಡುಗಡೆಗಳನ್ನು ಜೂನ್ 11 ರಂದು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ಪ್ಯಾಕೇಜ್ ನವೀಕರಣಗಳು ಸಿದ್ಧವಾಗಿವೆ ಡೆಬಿಯನ್, ಉಬುಂಟು, ತೆರೆದ ಸೂಸು. ಆರ್ಚ್ ಲಿನಕ್ಸ್ и ಫೆಡೋರಾ ಅವರು ಆವೃತ್ತಿ 4.92 ಅನ್ನು ಪೂರೈಸುತ್ತಾರೆ, ಇದರಲ್ಲಿ ಸಮಸ್ಯೆ ಕಾಣಿಸುವುದಿಲ್ಲ. RHEL ಮತ್ತು CentOS ಸಮಸ್ಯೆ ಒಳಗಾಗುವುದಿಲ್ಲ, Exim ಅನ್ನು ಅವರ ನಿಯಮಿತ ಪ್ಯಾಕೇಜ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿಲ್ಲ.

ಮೂಲ: opennet.ru

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