ಡೈನಾಮಿಕ್ ಲೋಡರ್
ಸಮಸ್ಯೆಯ ಸಾರ: ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ, ld.so ಮೊದಲು ಪರಿಸರದಿಂದ LD_LIBRARY_PATH ವೇರಿಯೇಬಲ್ನ ಮೌಲ್ಯವನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ ಮತ್ತು _dl_split_path() ಕಾರ್ಯವನ್ನು ಬಳಸಿಕೊಂಡು ಅದನ್ನು ಸ್ಟ್ರಿಂಗ್ಗಳ ಒಂದು ಶ್ರೇಣಿಯಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ - ಡೈರೆಕ್ಟರಿಗಳಿಗೆ ಮಾರ್ಗಗಳು. ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯನ್ನು SUID/SGID ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ ಎಂದು ನಂತರ ತಿರುಗಿದರೆ, ನಂತರ ರಚಿಸಲಾದ ಅರೇ ಮತ್ತು ವಾಸ್ತವವಾಗಿ, LD_LIBRARY_PATH ವೇರಿಯೇಬಲ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, _dl_split_path() ಮೆಮೊರಿ ಖಾಲಿಯಾಗಿದ್ದರೆ (ಪರಿಸರದ ಅಸ್ಥಿರಗಳ ಗಾತ್ರದಲ್ಲಿ ಸ್ಪಷ್ಟವಾದ 256 kB ಮಿತಿಯಿಂದಾಗಿ ಇದು ಕಷ್ಟಕರವಾಗಿದೆ, ಆದರೆ ಸೈದ್ಧಾಂತಿಕವಾಗಿ ಸಾಧ್ಯ), ನಂತರ _dl_libpath ವೇರಿಯೇಬಲ್ ಮೌಲ್ಯವನ್ನು NULL ಪಡೆಯುತ್ತದೆ ಮತ್ತು ನಂತರದ ಪರಿಶೀಲನೆ ಈ ವೇರಿಯಬಲ್ನ ಮೌಲ್ಯವು _dl_unsetenv("LD_LIBRARY_PATH") ಗೆ ಕರೆಯನ್ನು ಬಿಟ್ಟುಬಿಡಲು ಕಾರಣವಾಗುತ್ತದೆ.
ತಜ್ಞರು ಕಂಡುಹಿಡಿದ ದುರ್ಬಲತೆ
ಸೇರ್ಪಡೆ: ಸಮಸ್ಯೆಗೆ ಸಂಖ್ಯೆಯನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ
amd64 ಮತ್ತು i386 (ಶೋಷಣೆಯನ್ನು ಇತರ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಿಗೆ ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು).
ಡೀಫಾಲ್ಟ್ ಇನ್ಸ್ಟಾಲೇಶನ್ನಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು ಮತ್ತು chpass ಅಥವಾ passwd suid ಯುಟಿಲಿಟಿಗಳನ್ನು ಚಲಾಯಿಸುವಾಗ ಲೈಬ್ರರಿ ಪರ್ಯಾಯದ ಮೂಲಕ ಕೋಡ್ ಅನ್ನು ರೂಟ್ ಆಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸವಲತ್ತು ಇಲ್ಲದ ಸ್ಥಳೀಯ ಬಳಕೆದಾರರಿಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕಾರ್ಯಾಚರಣೆಗೆ ಅಗತ್ಯವಾದ ಕಡಿಮೆ-ಮೆಮೊರಿ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ರಚಿಸಲು, ಸೆಟ್ರ್ಲಿಮಿಟ್ ಮೂಲಕ RLIMIT_DATA ಮಿತಿಯನ್ನು ಹೊಂದಿಸಿ.
ಮೂಲ: opennet.ru