【问题标题】:Virus Scanning Uploaded files from Azure Web/Worker Role病毒扫描从 Azure Web/Worker 角色上传的文件
【发布时间】:2015-12-10 15:20:10
【问题描述】:

我们正在设计一个 Azure 网站,允许用户上传内容(MP4、Docx...MSOffice 文件),然后可以访问这些内容。

我们将对一些视频内容进行编码以提供几种不同质量的格式,然后再进行流式传输(使用Azure Media Services)。

我们需要添加一个中间步骤,以便我们可以扫描上传的文件是否存在潜在的病毒风险。 azure(或第三方)中是否有内置功能,允许我们在处理内容之前调用 API 来扫描内容?理想情况下,我们正在寻找一种 API,而不仅仅是 VM 上的后台服务,因此我们可以获得潜在的反馈,以用于网络或工作人员角色。

快速浏览了 Symantec Endpoint 和 Windows Defender,但不确定它们是否提供 API

【问题讨论】:

  • 看看微软反恶意软件服务:azure.microsoft.com/en-us/blog/…
  • @GauravMantri 有可用的 API 吗?我们需要能够确定性地传入一个文件并获得响应,而不是上传并等待它是否被隔离。

标签: azure antivirus azure-media-services symantec


【解决方案1】:

我已经使用开源 ClamAV 成功完成了这项工作。您没有指定您使用的语言,但因为它是 Azure,所以我假设是 .Net。

有一个 .Net 包装器应该提供您正在寻找的 API:

https://github.com/tekmaven/nClam

这里是一些示例代码(注意:这是直接从 nClam GitHub 存储库页面复制并在此处复制只是为了防止链接失效)

using System;
using System.Linq;
using nClam;

class Program
{
    static void Main(string[] args)
    {

        var clam = new ClamClient("localhost", 3310);
        var scanResult = clam.ScanFileOnServer("C:\\test.txt");  //any file you would like!

        switch(scanResult.Result)
        {
            case ClamScanResults.Clean:
                Console.WriteLine("The file is clean!");
                break;
            case ClamScanResults.VirusDetected:
                Console.WriteLine("Virus Found!");
                Console.WriteLine("Virus name: {0}", scanResult.InfectedFiles.First().VirusName);
                break;
            case ClamScanResults.Error:
                Console.WriteLine("Woah an error occured! Error: {0}", scanResult.RawResult);
                break;
        }
    }
}

还有一些 API 可用于刷新病毒定义数据库。所有必要的 ClamAV 文件都可以包含在部署包中,任何配置都可以放入服务启动代码中。

【讨论】:

    【解决方案2】:

    ClamAV 是一个好主意,特别是现在 0.99 即将发布并支持 YARA 规则 - 它将使您非常容易编写自定义规则并允许 clamav 在今天开盘。

    另一条路线,有点无耻的插入,是查看scanii.com,它是一个用于恶意软件/病毒检测的 SaaS,它与 AWS 和 Azures 集成得非常好。

    【讨论】:

    • 我一直在尝试通过 Scanii.com 获得一个模拟账户,但即使我知道我的电子邮件地址是正确的,我也没有收到来自网站的验证电子邮件,所以我永远无法真正做到测试产品。 :-(
    • 很抱歉听到这个消息,你能不能给 support@uvasoftware.com 发邮件,我们会马上帮你解决的!
    【解决方案3】:

    有很多方法可以实现这一点:

    首先,您可以使用前面提到的 ClamAV。 ClamAV 的病毒数据库并不总是受到最好的报道,但正如其他人指出的那样,它易于使用且可扩展。

    您还可以安装商业扫描仪,例如 avg、kaspersky 等。其中许多都带有 C API,您可以直接与之交谈,尽管从许可的角度来看,访问它通常会很昂贵。

    或者,您可以使用以下内容直接调用可执行文件以捕获输出:

    var proc = new Process {
        StartInfo = new ProcessStartInfo {
            FileName = "scanner.exe",
            Arguments = "arguments needed",
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        }
    };
    proc.Start();
    while (!proc.StandardOutput.EndOfStream) {
        string line = proc.StandardOutput.ReadLine();
    }
    

    然后您需要解析输出以获取结果并在您的应用程序中使用它。

    最后,现在有一些商业 API 可用于执行此类操作,例如 attachmentscanner(免责声明我与此产品有关)或 scanii。这些将为您提供 API 和更具扩展性的选项来扫描特定文件并接收来自至少一个病毒检查引擎的响应。

    【讨论】:

    • 我用一个包含已知病毒的文件测试了 AttachmentScanner,我得到的响应是 "status": "ok",这不好。该 API 易于使用,但如果不起作用,则无用。
    【解决方案4】:

    2020 年春季/夏季推出新功能。Azure 存储的高级威胁防护包括恶意软件信誉筛选,它利用 Microsoft 威胁情报的强大功能使用哈希信誉分析检测恶意软件上传,其中包括病毒、特洛伊木马、间谍软件和勒索软件的哈希。注意:不能保证使用哈希信誉分析技术检测到所有恶意软件。

    https://techcommunity.microsoft.com/t5/Azure-Security-Center/Validating-ATP-for-Azure-Storage-Detections-in-Azure-Security/ba-p/1068131

    【讨论】:

    • 不幸的是,它会在用户上传文件后检查 blob 上的文件,并且完成时间未知
    【解决方案5】:

    我们有相同的问题和相同的用例。最终客户将多个文件上传到我们的网站,常规扩展名 - 图像、doc/docx、xls/xlsx、pdf - 他们需要即时扫描,然后用户付款,我们会发送整个信息包。我们需要扫描并展平它们以删除宏之类的东西。

    我们正在积极寻找解决方案。

    你是如何解决你的用例的?

    此外,还有另一个指针,除了我们需要展平文件的扫描之外,CDR - Deep Content Disarm, and Reconstruction,正如他们在 OPSWAT 中所说的那样。

    意味着上传到云端的 excel 中的宏可以运行破坏服务器的 cmd 行,因此需要在将文件插入存储 blob 之前将其删除。

    我们找到了 Metadefender,但它不适合。添加让其他人知道。 - 似乎 Cloud API 扫描很快,但 CDR 大约需要一分钟,并且每天上传文件有限,因此不适合。

    根据 Metadefender Core 似乎非常昂贵,因为 8 个引擎每年大约需要 3000 美元,病毒发现率高达 83%,而且它需要 Azure VM 至少要额外花费 160 美元(检查了 4 个 CPU 内核而不是 8 个)

    我只是希望有一个用于存储 blob 的插件可以轻松地做到这一点,并在检测到任何威胁时将删除文件的原因返回给我们的应用服务。

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 2010-10-02
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2011-05-30
      • 2019-09-01
      相关资源
      最近更新 更多