ಪ್ರತ್ಯೇಕ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿಂದ ಸಿಸ್ಟಮ್ ಆಜ್ಞೆಗಳನ್ನು ಕರೆಯಲು ಅನುಮತಿಸುವ ಪೈಥಾನ್‌ನಲ್ಲಿನ ದುರ್ಬಲತೆ

ಪೈಥಾನ್ 2.7 ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡ ದೀರ್ಘಕಾಲೀನ ದೋಷದ ಬಳಕೆಯನ್ನು ಆಧರಿಸಿ ಪೈಥಾನ್‌ನಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾದ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡುವ ವಿಧಾನವನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ, ಇದನ್ನು 2012 ರಲ್ಲಿ ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತು ಪೈಥಾನ್ 3 ನಲ್ಲಿ ಇನ್ನೂ ಸರಿಪಡಿಸಲಾಗಿಲ್ಲ. ವಿಶೇಷವಾಗಿ ಲಿಂಕ್ ಮಾಡಲಾದ ಬಳಸಲು ದೋಷವು ಅನುಮತಿಸುತ್ತದೆ. ಪೈಥಾನ್‌ನಲ್ಲಿ ಈಗಾಗಲೇ ಮುಕ್ತಗೊಂಡ ಮೆಮೊರಿಗೆ (ಉಚಿತವಾಗಿ ಬಳಸಿ) ಪ್ರವೇಶವನ್ನು ಪ್ರಾರಂಭಿಸಲು ಪೈಥಾನ್ ಕೋಡ್. ಆರಂಭದಲ್ಲಿ, ದೋಷವು ಭದ್ರತಾ ಬೆದರಿಕೆಯನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ ಎಂದು ಭಾವಿಸಲಾಗಿತ್ತು ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಕೃತಕವಾಗಿ ರಚಿಸಲಾದ ಅತ್ಯಂತ ಅಪರೂಪದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಮಾತ್ರ ಸ್ಕ್ರಿಪ್ಟ್ನ ಅಸಹಜ ಮುಕ್ತಾಯಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು.

kn32 ಎಂಬ ಗುಪ್ತನಾಮದ ಅಡಿಯಲ್ಲಿ ಭದ್ರತಾ ಸಂಶೋಧಕರು ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರು ಮತ್ತು os.system ನಂತಹ ವಿಧಾನಗಳಿಗೆ ನೇರ ಪ್ರವೇಶವಿಲ್ಲದೆ ಯಾವುದೇ ಸಿಸ್ಟಮ್ ಕಮಾಂಡ್ ಅನ್ನು ಕರೆಯಲು ಸಾಧ್ಯವಾಗುವಂತೆ ಕೆಲಸ ಮಾಡುವ ಶೋಷಣೆಯನ್ನು ಸಿದ್ಧಪಡಿಸುವಲ್ಲಿ ಯಶಸ್ವಿಯಾದರು. ಶೋಷಣೆಯನ್ನು ಶುದ್ಧ ಪೈಥಾನ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ ಮತ್ತು ಬಾಹ್ಯ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳದೆ ಮತ್ತು "ಕೋಡ್.__ಹೊಸ__" ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಸ್ಥಾಪಿಸದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕೊಕ್ಕೆಗಳಲ್ಲಿ, "ಬಿಲ್ಟಿನ್.__id__" ಅನ್ನು ಮಾತ್ರ ಬಳಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ನಿಷೇಧಿಸಲಾಗುವುದಿಲ್ಲ. ಪ್ರಾಯೋಗಿಕ ಭಾಗದಲ್ಲಿ, ಪ್ರಸ್ತಾವಿತ ಕೋಡ್ ಅನ್ನು ವಿವಿಧ ಸೇವೆಗಳು ಮತ್ತು ಪರಿಸರಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕತೆಯ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ಬಳಸಬಹುದು (ಉದಾಹರಣೆಗೆ, ಕಲಿಕೆಯ ಪರಿಸರದಲ್ಲಿ, ಆನ್‌ಲೈನ್ ಶೆಲ್‌ಗಳು, ಅಂತರ್ನಿರ್ಮಿತ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳು, ಇತ್ಯಾದಿ), ಇದು ಪೈಥಾನ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಮಿತಿ ಲಭ್ಯವಿರುವ ಕರೆಗಳು ಮತ್ತು os.system ನಂತಹ ಕರೆ ವಿಧಾನಗಳನ್ನು ಅನುಮತಿಸಬೇಡಿ.

ಪ್ರಸ್ತಾವಿತ ಕೋಡ್ os.system ಕರೆಯ ಅನಲಾಗ್ ಆಗಿದೆ, ಇದು CPython ನಲ್ಲಿ ದುರ್ಬಲತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಎಕ್ಸ್‌3-86 ಆರ್ಕಿಟೆಕ್ಚರ್ ಹೊಂದಿರುವ ಸಿಸ್ಟಂಗಳಲ್ಲಿ ಪೈಥಾನ್ 64 ನ ಎಲ್ಲಾ ಆವೃತ್ತಿಗಳೊಂದಿಗೆ ಎಕ್ಸ್‌ಪ್ಲೋಯಿಟ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು PIE, RELRO ಮತ್ತು CET ಪ್ರೊಟೆಕ್ಷನ್ ಮೋಡ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗಲೂ ಉಬುಂಟು 22.04 ನಲ್ಲಿ ಸ್ಥಿರ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಸಿಪಿಥಾನ್ ಕೋಡ್‌ನಲ್ಲಿನ ಒಂದು ಕಾರ್ಯದ ವಿಳಾಸದ ಕುರಿತು ಪೈಥಾನ್ ಕೋಡ್‌ನಿಂದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಕೆಲಸವು ಬರುತ್ತದೆ. ಈ ವಿಳಾಸವನ್ನು ಆಧರಿಸಿ, ಮೆಮೊರಿಯಲ್ಲಿ CPython ನ ಮೂಲ ವಿಳಾಸ ಮತ್ತು ಮೆಮೊರಿಯಲ್ಲಿ ಲೋಡ್ ಮಾಡಲಾದ libc ನಿದರ್ಶನದಲ್ಲಿ ಸಿಸ್ಟಮ್() ಕಾರ್ಯದ ವಿಳಾಸವನ್ನು ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ. ಕೊನೆಯಲ್ಲಿ, "/bin/sh" ಸಾಲಿಗೆ ಮೊದಲ ಆರ್ಗ್ಯುಮೆಂಟ್‌ನ ಪಾಯಿಂಟರ್ ಅನ್ನು ಬದಲಿಸುವುದರೊಂದಿಗೆ ನಿರ್ದಿಷ್ಟ ಸಿಸ್ಟಮ್ ವಿಳಾಸಕ್ಕೆ ನೇರ ಪರಿವರ್ತನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ.

ಪ್ರತ್ಯೇಕ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿಂದ ಸಿಸ್ಟಮ್ ಆಜ್ಞೆಗಳನ್ನು ಕರೆಯಲು ಅನುಮತಿಸುವ ಪೈಥಾನ್‌ನಲ್ಲಿನ ದುರ್ಬಲತೆ


ಮೂಲ: opennet.ru

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