【问题标题】:.NET access an infected Excel File (with a ransomware) via Microsoft Jet engine, can this affect or infect the server?.NET 通过 Microsoft Jet 引擎访问受感染的 Excel 文件(带有勒索软件),这会影响或感染服务器吗?
【发布时间】:2019-02-22 10:03:35
【问题描述】:

我们有一个简单的 ASP.NET Web 应用程序,它通过上传页面读取 Excel 文件并在数据库中插入行。 用户正在上传一个填充 MSSQL 数据库中的表的 Excel 文件。

我们正在通过这样一个简单的代码块读取 Excel 文件。

Dim con As New OleDb.OleDbConnection()
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & filePath & ";Extended Properties=Excel 12.0"
'Get data from Exel into a DataFile
Try
    con.Open()
    Dim cmd As New OleDb.OleDbCommand("SELECT * FROM [Sheet1$]", con)
    Dim da As New OleDb.OleDbDataAdapter()
    da.SelectCommand = cmd
    Dim ds As New DataSet()
    da.Fill(ds, "DataSet")
    Return ds.Tables(0)
Catch ex As Exception
    HttpContext.Current.Session("Error") = "err: " & ex.Message
    Throw ex
    Return New DataTable()
Finally
    con.Close()
End Try

通过我们的应用程序读取恶意 Excel 文件会感染运行页面的服务器吗?

Jet Engine 功能是否强大到通过代码访问行时可能会运行嵌入在受感染的 Excel 文件中的恶意代码

【问题讨论】:

  • 您的真正问题是什么? Jet 提供程序不执行宏。您甚至不需要它来读取 xlsx 文件,这是过去 12 年使用的格式。 xlsx 是一个 xml 文件的 zip 包。您可以使用 Open XML SDK 或 Epplus 之类的库来读取它,而无需安装 Jet 驱动程序
  • 您应该担心如何将数据插入数据库。如果您创建动态 SQL 查询,则 SQL 注入攻击只需在字段中写入 '); drop table users;--

标签: asp.net excel database vb.net security


【解决方案1】:

简单的答案是肯定的,这是可能的。 世界上有两种类型的恶意标准办公文档:

  • 基于宏的恶意活动

在您的情况下,基于宏的受感染文件并不那么危险,因为它们是嵌入在文档中并由用户交互或您的应用程序中的某些代码触发的额外对象,它们会自动执行宏,所以如果您没有任何代码可以在办公文件中执行宏,不用担心被宏脚本感染的办公文件!

  • 利用恶意活动

另一方面,受感染的文档包含针对某些错误或逻辑功能等的漏洞利用。这些文件非常危险,因为它们利用了文档的标准功能(如解析器)。因此,如果您解析此类文件的底层 API 或引擎实现并使用了被利用的此功能,您的程序可能会受到影响!

最后,如果您想保护服务器免受这种情况的感染,您应该实施或使用现有的沙盒产品,这些产品可以防止执行文件更改系统上的任何内容,并防止执行文件的网络和 IO 活动,以提高安全性最好不要直接在主服务器上在单独的机器或 VM 中进行解析过程,然后将结果返回给服务器。但总的来说沙盒解决方案就足够了。

例如,这里列出了一些仅通过谷歌搜索“Microsoft Jet driver Exploit”发现的 Jet 驱动程序漏洞:

也许它根本不会发生,因为安全专家在发布前流行软件和工具背后的代码审查、模糊测试、渗透测试和错误赏金,这就是为什么你看到底层流行软件和工具的漏洞利用如此之少的原因就像喷气机司机一样,但即使在安全方面,也没有什么是绝对的,没有人可以声称他的产品是安全的。

最后,这取决于您开发的平台以及安全性对您和您的产品有多重要。我的回答是学术性的,可能不会发生。但即使是绝对有可能的。所以你应该根据你的需要和风险选择最好的解决方案;)

【讨论】:

  • @Enovator 答案至少有 50% 错误。 Jet 提供程序不执行宏。只有 Excel 执行宏。至于Exploit malicious activity,这意味着利用Jet 提供程序 中的错误,而不是Excel。攻击者也会尝试利用 .NET 漏洞。答案是修补您的系统并使用最新的驱动程序。没有沙盒或虚拟机可以保护您 - 托管和云服务器已经在虚拟机上运行
  • @PanagiotisKanavos 我说宏在这种情况下并不危险!我再说一遍,如果底层 API 或提供者使用标准实现会受到影响!所以答案是完全正确的。对于您更新系统和驱动程序的答案,如果今天启动了漏洞利用并且补丁甚至没有发布您会做什么?只看感染?!所以不要安装 AV 和其他保护工具,只需更新您的机器和驱动程序并保持放松......关于;看来您对安全性没有很好的了解。如果在Sandbox中进行解析操作,就更安全了。
  • OP 正在使用 ACE 驱动程序。我没有发现“Microsoft ace driver Exploit”列出的任何漏洞。当然,这并不意味着没有,但会不会是 ACE 驱动程序本身使用了某种沙盒技术?
  • @Enovator 最新的 Jet 引擎漏洞利用:thezdi.com/blog/2018/9/20/…
猜你喜欢
  • 2018-09-20
  • 2013-07-14
  • 2011-03-03
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
相关资源
最近更新 更多