r2dbc-mariadb: server message accepted with no command in flight desynchronises the connection and serves one user's rows to another
该报告还没有中文解读。
原文摘录
摘自原文(12991 字符中的一小部分)
r2dbc-mariadb accepts a server packet that arrives while the client has no command outstanding, buffers it, and hands it to the next unrelated statement. Nothing correlates a response with the request it is delivered to, and the driver reads the protocol's sequence id without ever validating it. …
原文中的代码
this.receiverDemands.decrementAndGet();
Exchange exchange = this.exchangeQueue.peek();
// nothing buffered => directly emit message
ReferenceCountUtil.retain(message);
if (this.receiverQueue.isEmpty()
&& exchange != null
&& (exchange.hasDemand() || …默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 MariaDB 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @fg0x0 · 版权归作者与 MariaDB 所有