SQL Server 集成的 SQL 注入漏洞更新

受影响的 SQL 数据库模板包括 MsSQL、MySQL 和 PostgreSQL。

继 CVE 报告 2023-49954 (https://cve-2023-49954.github.io/) 之后,3CX于 12 月 15 日通知客户禁用 SQL 数据库集成。该问题由独立安全研究员 Theo Stein 发现,涉及直接从 SQL 服务器数据库查询客户联系数据的遗留集成。

为公开起见,3CX将在今天发布热修复程序之前发布此更新。请继续阅读,了解时间安排、问题的技术描述和建议的解决方案。

技术说明:

如果使用了集成模板(MsSQL、MySQL、PostgreSQL),而 3CX 服务器在互联网上可用,且 3CX 机器前没有网络应用程序防火墙,则这些模板可能会受到 SQL 注入攻击。在这种情况下,就有可能篡改针对数据库执行的原始 SQL 查询。

只有上述 SQL 数据库模板(MsSQL、MySQL、PostgreSQL)会受到影响,其他网络 CRM 模板都不会受到影响。使用 MongoDB 或我们任何基于 Web 的 CRM 集成模板的客户不受此影响。

建议的解决方案

一般来说,3CX仍然强烈建议使用现代安全网络应用程序接口,而不是直接使用 SQL 查询。

客户关系管理(CRM)引擎已针对 SQL 数据库模板进行了扩展,以使用参数化查询,其中用户输入作为参数传递,用于构建针对数据库执行的 SQL 查询。这是避免 SQL 注入所必需的。

示例

SELECT id AS contactid, firstname AS firstname, lastname AS lastname, companyname AS companyname, email AS email, phonemobile AS phonemobile, phonemobile2 AS phonemobile2, phonehome AS phonehome, phonehome2 AS phonehome2, phonebusiness AS phonebusiness, phonebusiness2 AS phonebusiness2、 phoneother AS phoneother, faxbusiness AS faxbusiness, faxhome AS faxhome, pager AS pager, photourl AS photourl FROM contacts WHERE phonemobile LIKE CONCAT(‘%’,@Number,’%’) or phonebusiness LIKE CONCAT(‘%’,@Number,’%’) or faxbusiness LIKE CONCAT(‘%’,@Number,’%’)

这样可以确保用户输入被视为数据,而不是要执行的最终查询的一部分。

今日将提供如下热修复程序:

  • 18.0.9.23
  • 20.0.0.1494

如果不需要 SQL 数据库,请继续在当前版本上运行。如果确实需要启用,请转到更新,更新后重新启用 SQL 数据库。管理员需要更新集成代码,以便 SQL 集成工作 – 所有查询都必须参数化。这项工作需要由数据库专业人员完成,而且要非常谨慎。3CX再次重申,应改用现代安全的 REST API。