Critical · published March 23, 2019
⚠️ A sneaky flaw in Python's urllib could let attackers access local files with just a crafty URL! This is like finding a backdoor into a secured building using a cleverly disguised invitation! 🔍 Imagine a hotel where someone finds a secret door behind a bookshelf that leads directly to the staff's private rooms. That’s what this vulnerability does for attackers—bypasses security measures to peek into sensitive files! If exploited, an attacker could easily read critical system files, like '/etc/passwd', which contains user account information. This could lead to unauthorized access and potentially compromise the entire system. It’s a surprisingly simple way to gain insight into sensitive data, making it a risk to keep an eye on!
Imagine a hotel where someone finds a secret door behind a bookshelf that leads directly to the staff's private rooms. That’s what this vulnerability does for attackers—bypasses security measures to peek into sensitive files! This vulnerability allows urllib in Python 2.x (up to 2.7.16) to support the 'local_file:' scheme, enabling attackers to bypass blacklists that would normally prevent access to 'file:' URIs. An attacker can construct a URL that prompts urllib to access local files on the server.
If exploited, an attacker could easily read critical system files, like '/etc/passwd', which contains user account information. This could lead to unauthorized access and potentially compromise the entire system. It’s a surprisingly simple way to gain insight into sensitive data, making it a risk to keep an eye on! To mitigate this risk, switch to Python 3.x, where this issue is no longer present. If migration isn't possible, ensure that all inputs are strictly validated and consider implementing additional checks to block 'local_file:' access. Don't let your guard down! You've got this! Follow these steps and your system will be much safer in no time! 🛡️
| Product | Versions | Fixed in |
|---|---|---|
| python/python | ≥ 2.0, < 2.7.17 | 2.7.17 |
| python/python | ≥ 3.5.0, < 3.5.8 | 3.5.8 |
| python/python | ≥ 3.6.0, < 3.6.9 | 3.6.9 |
| python/python | ≥ 3.7.0, < 3.7.4 | 3.7.4 |
| opensuse/leap | all versions | — |
| opensuse/leap | all versions | — |
| debian/debian_linux | all versions | — |
| debian/debian_linux | all versions | — |
| fedoraproject/fedora | all versions | — |
| fedoraproject/fedora | all versions | — |
| canonical/ubuntu_linux | all versions | — |
| canonical/ubuntu_linux | all versions | — |
| canonical/ubuntu_linux | all versions | — |
| canonical/ubuntu_linux | all versions | — |
| canonical/ubuntu_linux | all versions | — |
| redhat/enterprise_linux_desktop | all versions | — |
| redhat/enterprise_linux_desktop | all versions | — |
| redhat/enterprise_linux_eus | all versions | — |
| redhat/enterprise_linux_eus | all versions | — |
| redhat/enterprise_linux_eus | all versions | — |
| redhat/enterprise_linux_eus | all versions | — |
| redhat/enterprise_linux_server | all versions | — |
| redhat/enterprise_linux_server | all versions | — |
| redhat/enterprise_linux_server_eus | all versions | — |
| redhat/enterprise_linux_tus | all versions | — |
| redhat/enterprise_linux_tus | all versions | — |
| redhat/enterprise_linux_tus | all versions | — |
| redhat/enterprise_linux_workstation | all versions | — |
| redhat/enterprise_linux_workstation | all versions | — |