GHSA-XV6X-43GQ-4HFJ
Vulnerability from github – Published: 2022-05-02 03:40 – Updated: 2024-02-08 21:31
VLAI
Summary
PyGreSQL Might Be Vulnerable to Encoding-Based SQL Injection
Details
PyGreSQL 3.8 did not use PostgreSQL’s safe string and bytea functions in its own escaping functions. As a result, applications written to use PyGreSQL’s escaping functions are vulnerable to SQL injections when processing certain multi-byte character sequences. Because the safe functions require a database connection, to maintain backwards compatibility, pg.escape_string() and pg.escape_bytea() are still available, but applications will have to be adjusted to use the new pyobj.escape_string() and pyobj.escape_bytea() functions. For example, code containing:
import pg
connection = pg.connect(...)
escaped = pg.escape_string(untrusted_input)
should be adjusted to use:
import pg
connection = pg.connect(...)
escaped = connection.escape_string(untrusted_input)
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "PyGreSQL"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "3.8.1"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "PyPI",
"name": "PyGreSQL"
},
"ranges": [
{
"events": [
{
"introduced": "4.0"
},
{
"fixed": "4.1"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"4.0"
]
}
],
"aliases": [
"CVE-2009-2940"
],
"database_specific": {
"cwe_ids": [
"CWE-89"
],
"github_reviewed": true,
"github_reviewed_at": "2024-02-08T21:31:52Z",
"nvd_published_at": "2009-10-22T16:30:00Z",
"severity": "HIGH"
},
"details": "PyGreSQL 3.8 did not use PostgreSQL\u2019s safe `string` and `bytea` functions in its own escaping functions. As a result, applications written to use PyGreSQL\u2019s escaping functions are vulnerable to SQL injections when processing certain multi-byte character sequences. Because the safe functions require a database connection, to maintain backwards compatibility, `pg.escape_string()` and `pg.escape_bytea()` are still available, but applications will have to be adjusted to use the new `pyobj.escape_string()` and `pyobj.escape_bytea()` functions. For example, code containing:\n\n```python\nimport pg\nconnection = pg.connect(...)\nescaped = pg.escape_string(untrusted_input)\n```\nshould be adjusted to use:\n\n```python\nimport pg\nconnection = pg.connect(...)\nescaped = connection.escape_string(untrusted_input)\n```",
"id": "GHSA-xv6x-43gq-4hfj",
"modified": "2024-02-08T21:31:52Z",
"published": "2022-05-02T03:40:08Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2009-2940"
},
{
"type": "WEB",
"url": "https://github.com/PyGreSQL/PyGreSQL/commit/8e19320b130946eed6f043297e3e4e005a523612"
},
{
"type": "WEB",
"url": "https://github.com/PyGreSQL/PyGreSQL/commit/f7237d773e6f4d5a7da3d99bb6bc5062bd07935e"
},
{
"type": "PACKAGE",
"url": "https://github.com/PyGreSQL/PyGreSQL"
},
{
"type": "WEB",
"url": "http://ubuntu.com/usn/usn-870-1"
},
{
"type": "WEB",
"url": "http://www.debian.org/security/2009/dsa-1911"
}
],
"schema_version": "1.4.0",
"severity": [],
"summary": "PyGreSQL Might Be Vulnerable to Encoding-Based SQL Injection"
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…