ಸೈಟಿಪ್‌ಗಳಲ್ಲಿ ಮೌಲ್ಯೀಕರಿಸದ ಭಿನ್ನರಾಶಿ ಸಂಖ್ಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಪೈಥಾನ್‌ನಲ್ಲಿನ ದುರ್ಬಲತೆ

ಪೈಥಾನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ 3.7.10 ಮತ್ತು 3.6.13 ನ ಸರಿಪಡಿಸುವ ಬಿಡುಗಡೆಗಳು ಲಭ್ಯವಿವೆ, ಇದು ದುರ್ಬಲತೆಯನ್ನು (CVE-2021-3177) ಸರಿಪಡಿಸುತ್ತದೆ, ಇದು ctypes ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು C ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳಲ್ಲಿ ಮೌಲ್ಯೀಕರಿಸದ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್‌ಗೆ ಕಾರಣವಾಗಬಹುದು. . ಸಮಸ್ಯೆಯು ಪೈಥಾನ್ 3.8 ಮತ್ತು 3.9 ಶಾಖೆಗಳ ಮೇಲೂ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ, ಆದರೆ ಅವುಗಳಿಗೆ ನವೀಕರಣಗಳು ಇನ್ನೂ ಬಿಡುಗಡೆ ಅಭ್ಯರ್ಥಿಯ ಸ್ಥಿತಿಯಲ್ಲಿವೆ (ಮಾರ್ಚ್ 1 ರಂದು ಬಿಡುಗಡೆಯನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ).

ctypes ಫಂಕ್ಷನ್ PyCArg_repr() ನಲ್ಲಿನ ಬಫರ್ ಓವರ್‌ಫ್ಲೋನಿಂದ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ, ಇದು sprintf ನ ಅಸುರಕ್ಷಿತ ಬಳಕೆಯಿಂದಾಗಿ ಸಂಭವಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ರೂಪಾಂತರದ ಫಲಿತಾಂಶವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು 'sprintf(ಬಫರ್, " ", self->tag, self->value.b)' 256 ಬೈಟ್‌ಗಳ ("ಚಾರ್ ಬಫರ್[256]") ಸ್ಥಾಯೀ ಬಫರ್ ಅನ್ನು ನಿಯೋಜಿಸಿದೆ, ಆದರೆ ಫಲಿತಾಂಶವು ಈ ಮೌಲ್ಯವನ್ನು ಮೀರಬಹುದು. ದುರ್ಬಲತೆಗೆ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ದುರ್ಬಲತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು, ನೀವು "1e300" ಮೌಲ್ಯವನ್ನು ರವಾನಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು, ಇದು c_double.from_param ವಿಧಾನದಿಂದ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದಾಗ, ಕ್ರ್ಯಾಶ್‌ಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಫಲಿತಾಂಶದ ಸಂಖ್ಯೆಯು 308 ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಅದು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ 256-ಬೈಟ್ ಬಫರ್. ಸಮಸ್ಯಾತ್ಮಕ ಕೋಡ್‌ನ ಉದಾಹರಣೆ: ಆಮದು ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

ಸಮಸ್ಯೆಯು Debian, Ubuntu ಮತ್ತು FreeBSD ಯಲ್ಲಿ ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಉಳಿದಿದೆ, ಆದರೆ ಈಗಾಗಲೇ Arch Linux, Fedora, SUSE ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗಿದೆ. RHEL ನಲ್ಲಿ, FORTIFY_SOURCE ಮೋಡ್‌ನಲ್ಲಿ ಪ್ಯಾಕೇಜ್ ಅಸೆಂಬ್ಲಿಯಿಂದಾಗಿ ದುರ್ಬಲತೆಯು ಸಂಭವಿಸುವುದಿಲ್ಲ, ಇದು ಸ್ಟ್ರಿಂಗ್ ಫಂಕ್ಷನ್‌ಗಳಲ್ಲಿ ಅಂತಹ ಬಫರ್ ಓವರ್‌ಫ್ಲೋಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.

ಮೂಲ: opennet.ru

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