piccolo SQL Injection via named transaction savepoints
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- SQL injection
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-89.
Summary
Piccolo is an object-relational mapping and query builder which supports asyncio. Prior to version 1.1.1, the handling of named transaction `savepoints` in all database implementations is vulnerable to SQL Injection via f-strings. While the likelihood of an end developer exposing a `savepoints` `name` parameter to a user is highly unlikely, it would not be unheard of. If a malicious user was able to abuse this functionality they would have essentially direct access to the database and the ability to modify data to the level of permissions associated with the database user. A non exhaustive list of actions possible based on database permissions is: Read all data stored in the database, including usernames and password hashes; insert arbitrary data into the database, including modifying existing records; and gain a shell on the underlying server. Version 1.1.1 fixes this issue.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- Yes
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| piccolo-orm | piccolo | before 1.1.1 | 1.1.1 | Patch available | CNA |
| — | piccolo (PyPI) | before 1.1.1 | 1.1.1 | Patch available | GHSA-xq59-7jf3-rjc6 |
- piccolo Vendorpiccolo-orm Affected before 1.1.1 Fixed in 1.1.1 Patch available CNA
- piccolo (PyPI) Vendor— Affected before 1.1.1 Fixed in 1.1.1 Patch available GHSA-xq59-7jf3-rjc6
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:piccolo-orm:piccolo:1.1.0:*:*:*:*:*:*:* | 1.1.0 | Vulnerable | piccolo-orm |
- cpe:2.3:a:piccolo-orm:piccolo:1.1.0:*:*:*:*:*:*:* Versions 1.1.0 Vulnerable ·piccolo-orm
Remediation
- Fix · CNA piccolo (piccolo-orm) Fixed in 1.1.1
- Fix · GHSA-xq59-7jf3-rjc6 piccolo (PyPI) Fixed in 1.1.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2023-47128
- 2026-10-03 Alias added: GHSA-xq59-7jf3-rjc6
References
More piccolo-orm Piccolo vulnerabilities
- TI-2023-22277 Piccolo's current `BaseUser.login` implementation is vulnerable to time based user enumeration CVSS 3.1MEDIUM 5.3
Sources
- CVE-2023-47128 · CVE Program
- CVE-2023-47128 · NVD
- FIRST EPSS
- GHSA-xq59-7jf3-rjc6 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences