Connector/C++: heap out-of-bounds read when malicious server field length exceeds declared column length in binary result path
该报告还没有中文解读。
原文摘录
摘自原文(5977 字符中的一小部分)
MariaDB Connector/C++ sizes each result-column bind buffer to the column length the server declared at PREPARE time, but then reads `bind.length_value` - the actual field length the server reports in each row packet - bytes out of that buffer. libmariadb sets `length_value` to the full server-sent …
原文中的代码
length = columnInfo->getLength(); // server-declared column length
bind.back().buffer_length =
columnInfo->getColumnType().binarySize() != 0 ?
columnInfo->getColumnType().binarySize() :
getLengthMaxFieldSize(); // == declared column length for string/blob types …默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 MariaDB 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @fg0x0 · 版权归作者与 MariaDB 所有