Solr 7.5 内存泄漏和 sql 注入类型查询崩溃

问题描述

我们有一组在 Solr 7.5 上运行的 solr 节点。我们最近有几集整个集群崩溃并一起死亡。深入挖掘一下,我们发现罪魁祸首是我们网站上发生的一些 sql 注入攻击,其中搜索词中有 sql 注入,并将其输入到 solr 中的 q 参数中。我能够使用稳定的 solr 并将其隔离,然后只运行 1 个查询并使其崩溃。每次我运行常规查询并看到它工作时,只需更改 q= 参数就会超时并最终使 solr 实例崩溃。这是我运行的查询的 q 参数:

q=-6792)))+UNION+ALL+SELECT+NULL,NULL,CHR(113)||CHR(98)||CHR(118)||CHR(113)||CHR (113)||CHR(104)||CHR(68)||CHR(86)||CHR(114)||CHR(109)||CHR(97)||CHR(89)||CHR(89) )||CHR(112)||CHR(76)||CHR(90)||CHR(105)||CHR(113)||CHR(86)||CHR(102)||CHR(97)| |CHR(108)||CHR(89)||CHR(83)||CHR(81)||CHR(107)||CHR(69)||CHR(111)||CHR(97)||CHR (75)||CHR(87)||CHR(68)||CHR(108)||CHR(73)||CHR(68)||CHR(86)||CHR(118)||CHR(101) )||CHR(71)||CHR(78)||CHR(106)||CHR(106)||CHR(76)||CHR(65)||CHR(82)||CHR(113)| |CHR(106)||CHR(98)||CHR(98)||CHR(113)+FROM+DUAL--+gKiW

我什至去掉了“||”字符并用“,”替换它们,它仍然崩溃。请注意,这些是 sql 注入攻击,并不是真正好的查询。 Solr GC 日志暴露了问题并显示内存占用膨胀(一分钟内从 2GB 增加到 18GB)到完全垃圾收集失败并且 Solr 实例无响应的程度。因此,1 个查询能够将其推至临界点并消耗 18GB 内存。

我曾尝试搜索长描述文本,但效果很好。所以这些字符的某些东西可能会导致这种情况。有谁知道这可能是如何/为什么发生的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)