DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > CC防护 > 正文

香港高防ip_防cc攻击cdn_解决方案

01-12 CC防护

香港高防ip_防cc攻击cdn_解决方案

简介:现代静态分析工具通常用于两个主要目的:查找bug和发现违反编码标准的情况。CodeSonar的主要用途是前者,它最初的设计目的是发现严重的安全和安全缺陷,如内存错误、API误用和并发问题;然而,dos和ddos攻击防御,它也完全可以用于后者,包括最流行的编码标准MISRA C 2012。当开发人员被要求遵守编码标准时,他们会寻找一种可以帮助他们发现违规行为的工具。他们用来比较工具的指标之一是覆盖率:工具声称要检查的规则的比例,天真的策略是选择声明覆盖率最高的工具。不幸的是,覆盖率的概念并没有很好的定义,而且由于没有可靠的信息来源可用于比较工具之间的覆盖率,客户必须信任供应商合理地解释该术语,并公平地报告其覆盖率。不幸的是,一些商家为了获得竞争优势,肆无忌惮地夸大覆盖范围,这样做也会迷惑消费者。在本文中,我解释了为什么覆盖率是一个模糊的概念,我希望这将反过来帮助客户做出明智的决定,选择哪种工具。相关:GrammaTech CodeSonar符合MISRA如何避免MISRA合规中的常见陷阱MISRA和CodeSonar有些报道很容易有些规则非常简单,所以编写一个检查器可以很容易地找到所有违规情况,而不会出现误报。对于这样的规则,覆盖范围很容易,高防cdn和高防服务器对比,工具可以发现违规或不违规,两者之间没有任何依据。在MISRA2012中,这样的规则被贴上了可判定的标签。如果只通过查看一个编译单元就可以检测到违反规则的情况,则该规则也被标记为"单个翻译单元"。例如,规则4.2禁止使用三元组,并以这种方式标记。如果一个工具声称覆盖了这类规则,那么完全有理由相信这种说法。然而,如果只有当工具需要同时查看多个编译单元(在标准中这些单元被标记为System)时,才能可靠地发现一个冲突,那么事情就会变得更加模糊。例如,MISRA C 2012规则5.1:"外部标识符应该是不同的"当然是可以判定的,但是工具能够可靠地发现冲突的唯一方法是检查所有编译单元并比较每个编译单元中找到的所有这样的标识符。如果一个工具声称在系统范围内完全覆盖了一个规则,那么只有合理地相信该工具也能够找到对程序有贡献的所有编译单元。集合的过逼近和欠逼近都会导致误报和漏报。人类通常会弄错这一点,因此,如果一个工具的用户没有提供自动确定集合的方法,那么就有可能得到错误的结果。自动化技术是非常棘手的。最有效的方法是与构建系统紧密集成的方法,因为构建系统通常是最可靠的来源。不可判定性在MISRA2012中,一些规则被贴上了"不可判定"的标签,这意味着根本不可能有一种方法,在一般情况下,可以确定是否存在违规行为。由于这个特性,checker的作者必须找到一个平衡假阳性风险和假阴性风险的最佳点。这些规则中的大多数都需要能够推理程序执行情况的分析,因此只有最复杂的静态分析工具才能做好这项工作。一个很好的例子是misrac2012规则17.2,它禁止直接和间接递归(即通过函数指针调用)。问题是,关于覆盖率的声明往往忽略了工具在发现违规行为方面的优劣。如果一个工具只能找到最明显和最肤浅的违规实例,那么它声称它涵盖了该规则,这是否合理?硬币的另一面也值得考虑——如果一个工具发现了所有的违规行为,但同时也报告了如此多的假阳性,以至于无法对其进行全面检查,那么它是否公平地说它有覆盖范围?覆盖宽度规则覆盖的最后一个使其变得复杂的方面是编码标准通常定义得非常松散,而静态分析工具必须对它们所寻找的属性有一个精确的定义。因此,检查器通常会检测一个属性,该属性是规则所需的超集或子集。例如,让我们考虑CodeSonar对MISRA C 2012规则2.2的报道:"不应该有死代码。"在这个规则中,死代码是执行的代码,但其删除不会影响程序行为。CodeSonar有一个未使用的值检查器,它可以找到为变量赋值的位置,而该值后来从未使用过。所有这些地方都违反了MISRA规则,但也有其他可能违反规则的方式,但此检查器没有检测到。因此,未使用的值检查器只覆盖规则指定内容的一个子集,其他CodeSonar checker将填补空白。在某些情况下,discuz如何防御ddos,规则和检查器不是严格的子集/超集关系。它们可能重叠很多或很少,或者检查器可能检测到一个不是直接违反规则但很可能导致违反规则的属性。在CodeSonar中,我们的策略是仅在规则指定的内容与我们的检查器将发现的内容之间存在很大的重叠,并且检查器没有生成合理判断为该规则的误报的警告(尽管它们可能是真阳性的),才声明覆盖范围。给他们打电话有一条规则有一个MISRA C 2012规则特别是这个问题是尖锐的。如果你看到一个静态分析工具(尤其是其中一个肤浅的工具)声称涵盖了MISRA C 2012规则1.3:"不应出现未定义或关键的未指定行为。"这条规则非常宽泛,需要额外的10页附录列出一些要避免的具体事项。这反过来又引用了C标准:C90/99的标准列举了230个未定义行为的实例(其中65个未被任何其他MISRA规则涵盖),以及51个关键的未指定行为实例(其中17个未被任何其他MISRA规则覆盖)。此外,指令4.1的基本原理补充道:"运行时错误的存在表明违反了规则1.3。"因此,规则1.3规定了大量禁止的行为,包括空指针取消引用、缓冲区溢出、未初始化内存的使用、数据竞争、释放错误后的使用,以及许多其他C编程的危险。规则覆盖声明的问题应该很清楚——虽然这条规则(标准中143条规则中的一条)只占标准的0.7%,但它可能涵盖了C程序可能遇到的真正令人不快的失败类型的50%。此外,如果一个工具要声明规则1.3的覆盖范围,那么它应该有一个与所有这些不良行为有一个良好交集的checker。如果一个工具只能找到其中的一小部分,那么它声称覆盖范围是不合理的。许多声称发现违反MISRA规则的静态分析工具都是相当肤浅的工具(例如Lint家族中的那些工具),因此,它们在发现1.3违规方面非常薄弱,尽管它们声称覆盖范围。相比之下,高级静态分析工具(如CodeSonar)被明确地设计为发现违反规则1.3的运行时错误。使他们能够以合理的精度找到此类缺陷的分析必须是整个程序、路径敏感的、了解危险信息流的,并且能够对并发执行的线程进行推理。评估保险索赔最后,让我总结一下最重要的几点:对于MISRA的覆盖范围,没有一个被广泛接受的好的定义,即使是对于可判定的规则。对于不可判定的规则,DDOS防御发展现状,根本不可能有一个完美的检查器。这些错误的肯定和错误的否定是不可避免的。方格和规则并不总是完美地相交。对MISRA规则的高覆盖率的索赔不应以表面价值为依据。供应商有不受惩罚的夸大动机。MISRA C 2012规则1.3包含了大量需要避免的行为。只有复杂的静态分析工具(其主要目的是发现此类错误)才能很好地发现违反此规则的情况。在决定使用哪种工具时,必须问的问题是:"我的代码中真正的问题是什么?他们只是在编写违反标准的代码,还是真正的bug?这个工具在多大程度上找到了我需要找到的问题?"回答这个问题的最好方法是在您自己的代码上尝试这个工具,服务器cc攻击怎么防御,并合理地评估结果。

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: /ddos/61075.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 8143267访问次数
  • 建站天数

    QQ客服

    400-0797-119

    X