ಸರ್ವರ್‌ನಲ್ಲಿ ರಿಮೋಟ್ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಅನ್ನು ಅನುಮತಿಸುವ php-fpm ನಲ್ಲಿನ ದುರ್ಬಲತೆ

ಲಭ್ಯವಿದೆ PHP 7.3.11, 7.1.33 ಮತ್ತು 7.2.24 ನ ಸರಿಪಡಿಸುವ ಬಿಡುಗಡೆಗಳು, ಇದರಲ್ಲಿ ನಿವಾರಿಸಲಾಗಿದೆ ನಿರ್ಣಾಯಕ ದುರ್ಬಲತೆ (CVE-2019-11043) PHP-FPM (FastCGI ಪ್ರಕ್ರಿಯೆ ನಿರ್ವಾಹಕ) ವಿಸ್ತರಣೆಯಲ್ಲಿ, ಸಿಸ್ಟಂನಲ್ಲಿ ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ರಿಮೋಟ್ ಆಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. PHP ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಚಲಾಯಿಸಲು Nginx ಜೊತೆಗೆ PHP-FPM ಅನ್ನು ಬಳಸುವ ಸರ್ವರ್‌ಗಳ ಮೇಲೆ ದಾಳಿ ಮಾಡಲು, ಇದು ಈಗಾಗಲೇ ಸಾರ್ವಜನಿಕವಾಗಿ ಲಭ್ಯವಿದೆ ಕೆಲಸಗಾರ ಶೋಷಣೆ.

"fastcgi_split_path_info" ಅನ್ನು ಬಳಸಿಕೊಂಡು URL ನ ಭಾಗಗಳನ್ನು ಬೇರ್ಪಡಿಸುವ ಮೂಲಕ ಮತ್ತು PATH_INFO ಪರಿಸರ ವೇರಿಯೇಬಲ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮೂಲಕ PHP-FPM ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವ ಮೂಲಕ nginx ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳಲ್ಲಿ ದಾಳಿ ಸಾಧ್ಯ, ಆದರೆ ಮೊದಲು "try_files $fastcgi_script" ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್ ಅಸ್ತಿತ್ವವನ್ನು ಪರಿಶೀಲಿಸದೆ. ನಿರ್ದೇಶನ ಅಥವಾ "if (!-f $) document_root$fastcgi_script_name)". ಸಮಸ್ಯೆಯೂ ಆಗಿದೆ ಪ್ರಾಯೋಗಿಕ NextCloud ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಾಗಿ ನೀಡಲಾದ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ. ಉದಾಹರಣೆಗೆ, ರಚನೆಗಳೊಂದಿಗೆ ಸಂರಚನೆಗಳು:

ಸ್ಥಳ ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

ಈ ಪುಟಗಳಲ್ಲಿ ವಿತರಣಾ ಕಿಟ್‌ಗಳಲ್ಲಿ ಸಮಸ್ಯೆಯ ಪರಿಹಾರವನ್ನು ನೀವು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು: ಡೆಬಿಯನ್, rhel, ಉಬುಂಟು, SUSE/openSUSE, ಫ್ರೀಬಿಎಸ್ಡಿ, ಆರ್ಚ್, ಫೆಡೋರಾ. ಪರಿಹಾರವಾಗಿ, "fastcgi_split_path_info" ಸಾಲಿನ ನಂತರ ವಿನಂತಿಸಿದ PHP ಫೈಲ್‌ನ ಅಸ್ತಿತ್ವಕ್ಕಾಗಿ ನೀವು ಚೆಕ್ ಅನ್ನು ಸೇರಿಸಬಹುದು:

try_files $fastcgi_script_name =404;

ಫೈಲ್‌ನಲ್ಲಿ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಮ್ಯಾನಿಪುಲೇಟ್ ಮಾಡುವಾಗ ದೋಷದಿಂದ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ sapi/fpm/fpm/fpm_main.c. ಪಾಯಿಂಟರ್ ಅನ್ನು ನಿಯೋಜಿಸುವಾಗ, PATH_INFO ಪರಿಸರ ವೇರಿಯೇಬಲ್‌ನ ಮೌಲ್ಯವು PHP ಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಮಾರ್ಗಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ಊಹಿಸಲಾಗಿದೆ.
fastcgi_split_path_info ನಿರ್ದೇಶನವು ಹೊಸ ಲೈನ್-ಸೆನ್ಸಿಟಿವ್ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ರಿಪ್ಟ್ ಮಾರ್ಗವನ್ನು ವಿಭಜಿಸುವುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದರೆ (ಉದಾಹರಣೆಗೆ, ಅನೇಕ ಉದಾಹರಣೆಗಳು "^(.+?\.php)(/.*)$" ಅನ್ನು ಬಳಸುವುದನ್ನು ಸೂಚಿಸುತ್ತವೆ), ಆಗ ಆಕ್ರಮಣಕಾರರು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು ಖಾಲಿ ಮೌಲ್ಯವನ್ನು PATH_INFO ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗೆ ಬರೆಯಲಾಗಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಮರಣದಂಡನೆಯ ಉದ್ದಕ್ಕೂ ಮತ್ತಷ್ಟು ನಿಭಾಯಿಸಿದೆ path_info[0] ಅನ್ನು ಸೊನ್ನೆಗೆ ಬರೆಯುವುದು ಮತ್ತು FCGI_PUTENV ಗೆ ಕರೆ ಮಾಡಲಾಗುತ್ತಿದೆ.

ನಿರ್ದಿಷ್ಟ ರೀತಿಯಲ್ಲಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾದ URL ಅನ್ನು ವಿನಂತಿಸುವ ಮೂಲಕ, ಆಕ್ರಮಣಕಾರರು “_fcgi_data_seg” ರಚನೆಯ ಮೊದಲ ಬೈಟ್‌ಗೆ path_info ಪಾಯಿಂಟರ್‌ನ ಶಿಫ್ಟ್ ಅನ್ನು ಸಾಧಿಸಬಹುದು ಮತ್ತು ಈ ಬೈಟ್‌ಗೆ ಶೂನ್ಯವನ್ನು ಬರೆಯುವುದು “char* pos” ನ ಚಲನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಹಿಂದೆ ಇರುವ ಮೆಮೊರಿ ಪ್ರದೇಶಕ್ಕೆ ಪಾಯಿಂಟರ್. FCGI_PUTENV ಎಂಬ ಮುಂದಿನದು ಈ ಮೆಮೊರಿಯಲ್ಲಿನ ಡೇಟಾವನ್ನು ಆಕ್ರಮಣಕಾರರು ನಿಯಂತ್ರಿಸಬಹುದಾದ ಮೌಲ್ಯದೊಂದಿಗೆ ಓವರ್‌ರೈಟ್ ಮಾಡುತ್ತದೆ. ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮೆಮೊರಿಯು ಇತರ FastCGI ವೇರಿಯೇಬಲ್‌ಗಳ ಮೌಲ್ಯಗಳನ್ನು ಸಹ ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ಡೇಟಾವನ್ನು ಬರೆಯುವ ಮೂಲಕ ಆಕ್ರಮಣಕಾರರು ಕಾಲ್ಪನಿಕ PHP_VALUE ವೇರಿಯೇಬಲ್ ಅನ್ನು ರಚಿಸಬಹುದು ಮತ್ತು ಅವರ ಕೋಡ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಾಧಿಸಬಹುದು.

ಮೂಲ: opennet.ru

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