libmariadb ( mariadb-connector-c ): stack overflow via server-controlled field->length in prepared-statement codec
该报告还没有中文解读。
原文摘录
摘自原文(4851 字符中的一小部分)
MariaDB Connector/C (libmariadb) calls `alloca()` with a length value read directly from the server's column-definition packet without any upper bound. A malicious MariaDB/MySQL server, or a MITM attacker on a non-TLS connection, can set `field->length` to a value exceeding the process stack size, …
原文中的代码
static void convert_from_long(MYSQL_BIND *r_param, const MYSQL_FIELD *field,
long long val)
{
// ...
default:
{
char *buffer;
buffer = alloca(MAX(field->length, 22)); // <-- no upper bound
// ...
}
}默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 MariaDB 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @fg0x0 · 版权归作者与 MariaDB 所有