CVE-2026-77387
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used 4.0
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
CVE-2026-77387- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-1333
- Updated
- 2026-11-02
EUVDEUVD-2026-90923 4.0
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
EUVD-2026-90923- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mhvh-fq92-pfmr 4.0
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
Impact
geopy.Point and Point.from_string() may take excessive CPU time when parsing long, malformed coordinate strings due to inefficient regular-expression behavior. The numeric Point constructor is not affected.
Geocoders' reverse methods called with string inputs exercise the vulnerable path.
Applications are affected when they pass attacker-controlled strings to these APIs without an appropriate length limit. Repeated requests may cause denial of service.
Patches
Fixed in geopy 2.5.0 by rejecting overly long (over 256 characters) coordinate strings before parsing.
Workarounds
Limit coordinate strings to a reasonable maximum length, such as 256 characters, before passing them to geopy.
- Record
GHSA-mhvh-fq92-pfmr- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-1333
- Updated
- 2026-11-02
NVD 4.0
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
CVE-2026-77387- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSV 4.0
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
CVE-2026-77387- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-77387 4.0
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
DEBIAN-CVE-2026-77387- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
Show 4 moreShow less
OSVGHSA-mhvh-fq92-pfmr 4.0
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
Impact
geopy.Point and Point.from_string() may take excessive CPU time when parsing long, malformed coordinate strings due to inefficient regular-expression behavior. The numeric Point constructor is not affected.
Geocoders' reverse methods called with string inputs exercise the vulnerable path.
Applications are affected when they pass attacker-controlled strings to these APIs without an appropriate length limit. Repeated requests may cause denial of service.
Patches
Fixed in geopy 2.5.0 by rejecting overly long (over 256 characters) coordinate strings before parsing.
Workarounds
Limit coordinate strings to a reasonable maximum length, such as 256 characters, before passing them to geopy.
- Record
GHSA-mhvh-fq92-pfmr- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSVPYSEC-2026-4218 4.0
geopy: Regular Expression Denial of Service (ReDoS) in geopy.Point
Impact
geopy.Point and Point.from_string() may take excessive CPU time when parsing long, malformed coordinate strings due to inefficient regular-expression behavior. The numeric Point constructor is not affected.
Geocoders' reverse methods called with string inputs exercise the vulnerable path.
Applications are affected when they pass attacker-controlled strings to these APIs without an appropriate length limit. Repeated requests may cause denial of service.
Patches
Fixed in geopy 2.5.0 by rejecting overly long (over 256 characters) coordinate strings before parsing.
Workarounds
Limit coordinate strings to a reasonable maximum length, such as 256 characters, before passing them to geopy.
- Record
PYSEC-2026-4218- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-77387 4.0
geopy is a geocoding library for Python. Prior to 2.5.0, geopy.Point and Point.from_string() can spend excessive CPU time due to inefficient regular-expression behavior when an application passes a long malformed coordinate string without the 256-character input limit used by the fix. Geocoder reverse methods also reach the vulnerable parsing path when called with string inputs. Repeated attacker-controlled requests can cause a denial of service, while the numeric Point constructor is unaffected. This issue is fixed in version 2.5.0.
- Record
UBUNTU-CVE-2026-77387- CVSS 3.1
- 4.0 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11724-1No score
python313-geopy-2.5.0-1.1 on GA media
These are all security issues fixed in the python313-geopy-2.5.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11724-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
geopyPyPI | through 2.4.1 | 2.5.0 |
geopyDebian:12 | All versions, plus listed versions 2.3.0-12.4.1-12.4.1-22.4.1-3 | None known |
geopyDebian:13 | All versions, plus listed versions 2.4.1-12.4.1-22.4.1-3 | None known |
geopyDebian:14 | All versions, plus listed versions 2.4.1-12.4.1-22.4.1-3 | None known |
geopyPyPI | before 2.5.0, plus listed versions 0.920.930.940.94.10.94.2 Show 45 moreShow less0.950.95.10.96.00.96.10.96.20.96.30.970.97.10.980.98.10.98.20.98.30.991.0.01.0.11.1.01.1.11.1.21.1.31.1.41.1.51.10.01.11.01.12.01.13.01.14.01.15.01.16.01.17.01.18.01.18.11.19.01.2.01.20.01.21.01.22.01.23.01.3.01.4.01.5.01.6.01.6.11.7.01.7.11.8.0 | 2.5.0 |
geopyUbuntu:16.04:LTS | All versions, plus listed versions 1.3.0-1build11.11.0+ds1-1 | None known |
geopyUbuntu:18.04:LTS | All versions, plus listed versions 1.11.0+ds1-1 | None known |
geopyUbuntu:20.04:LTS | All versions, plus listed versions 1.20.0-1 | None known |
geopyUbuntu:22.04:LTS | All versions, plus listed versions 2.0.0-12.2.0-1 | None known |
geopyUbuntu:24.04:LTS | All versions, plus listed versions 2.3.0-12.3.0-1ubuntu1 | None known |
geopyUbuntu:26.10 | All versions, plus listed versions 2.4.1-12.4.1-3 | None known |
geopyUbuntu:26.04:LTS | All versions, plus listed versions 2.4.1-1 | None known |
python-geopyopenSUSE:Tumbleweed | before 2.5.0-1.1 | 2.5.0-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-77387 is a medium vulnerability (CVSS 4.0) in Geopy, published September 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.20%, the 10th percentile. Fixed in geopy 2.5.0.
References
github.com/geopy/geopy/security/advisories/GHSA-mhvh-fq92-pfmr
github.com/geopy/geopy/issues/608
github.com/geopy/geopy/pull/610
github.com/geopy/geopy/commit/5d09fa843f90ec80788b61552539c9fd3ae6c528
github.com/geopy/geopy/releases/tag/2.5.0
nvd.nist.gov/vuln/detail/CVE-2026-77387
Show 8 moreShow less
github.com/advisories/GHSA-mhvh-fq92-pfmr
github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77387.json
security-tracker.debian.org/tracker/CVE-2026-77387
github.com/geopy/geopy
pypi.org/project/geopy
ubuntu.com/security/CVE-2026-77387
cve.org/CVERecord?id=CVE-2026-77387
suse.com/security/cve/CVE-2026-77387
Left out here: 10 versions. The JSON record has them.