Citrix ADC

缓冲区溢出检查

缓冲区溢出检查检测在web服务器上导致缓冲区溢出的尝试。如果Web应用防火墙检测到URL、cookie或报头比配置的长度长,它会阻止请求,因为它会导致缓冲区溢出。

缓冲区溢出检查可以防止对不安全的操作系统或web服务器软件的攻击,当它接收到超过其处理能力的数据字符串时,这些攻击可能会崩溃或表现出不可预测的行为。适当的编程技术可以通过检查传入数据和拒绝或截断过长的字符串来防止缓冲区溢出。然而,许多程序并不检查所有传入的数据,因此很容易出现缓冲区溢出。这个问题尤其影响到旧版本的web服务器软件和操作系统,其中许多仍在使用。

缓冲区溢出安全检查允许您配置日志,统计数据行动。此外,您还可以配置以下参数:

  • 最大URL长度.Web应用防火墙允许的请求URL的最大长度。url较长的请求将被阻止。可能的值: 0 - 65535。默认的: 1024
  • 最大Cookie长度.Web应用防火墙在请求中允许所有cookie的最大长度。具有较长的cookie的请求会触发违规。可能的值: 0 - 65535。默认的: 4096
  • 最大报头长度.Web应用防火墙允许HTTP头的最大长度。头部较长的请求将被阻止。可能的值: 0 - 65535。默认的: 4096
  • 查询字符串长度.传入请求中允许查询字符串的最大长度。具有较长查询的请求将被阻塞。取值范围:0 ~ 65535。默认值:1024
  • 请求总长度.允许传入请求的最大请求长度。长度较长的请求将被阻止。取值范围:0 ~ 65535。默认值:24820

使用命令行配置Buffer Overflow安全检查

使用命令行配置缓冲区溢出安全检查动作和其他参数

在命令提示符下,输入:

add appfw profile - bufferoverflowmaxurllength - bufferoverflowmaxheaderlength - bufferOverflowMaxCookieLength - bufferoverflowmaxquerylength - bufferoverflowmaxtotalheaderlength . add appfw profile - bufferoverflowmaxurllength

例子:

add appfw profile profile1 - bufferoverflowmaxurllength 7000 - bufferoverflowmaxheaderlength 7250 - bufferOverflowMaxCookieLength 7100 - bufferoverflowmaxquerylength 7300 - bufferoverflowmaxtotalheaderlength 7300

该任务指导管理员通过Citrix ADC图形界面配置缓冲区溢出安全检查

  1. 导航到安全>Web应用防火墙而且配置文件
  2. 配置文件页签中,选择目标配置文件,单击编辑
  3. Citrix Web App防火墙配置文件页面,转到高级设置部分,单击安全检查
  4. 安全检查部分中,选择缓冲区溢出并点击动作设置
  5. 缓冲区溢出设置页,设置以下参数。一个行动。选择一个或多个需要执行的命令注入安全检查操作。b.最大URL长度。受保护网站上的url的最大长度(以字符为单位)。url较长的请求将被阻止。c.最大Cookie长度。发送到受保护网站的cookie的最大长度(以字符为单位)。cookie较长的请求将被阻止。d.最大头长。 Maximum length, in characters, for HTTP headers in requests sent to your protected websites. Requests with longer headers are blocked. e. Maximum Query Length. Maximum length, in bytes, for query string sent to your protected websites. Requests with longer query strings are blocked. f. Maximum Total Header Length. Maximum length, in bytes, for the total HTTP header length in requests sent to your protected websites. The minimum value of this and maxHeaderLen in httpProfile will be used. Requests with longer length are blocked.
  6. 点击好吧而且关闭

    缓冲区溢出检查配置

使用日志特性和缓冲区溢出安全检查

当日志操作被启用时,缓冲区溢出安全检查违规记录在审计日志中APPFW_BUFFEROVERFLOW_URLAPPFW_BUFFEROVERFLOW_COOKIE,APPFW_BUFFEROVERFLOW_HDR违规。Web应用防火墙同时支持Native和CEF日志格式。您也可以将日志发送到远端syslog服务器。

如果使用GUI查看日志,则可以使用单击部署特性应用日志指示的放松。

使用命令行访问日志消息

切换到外壳和尾部的ns。登录/var/log/文件夹访问有关缓冲区溢出违规的日志消息:

> **Shell** > **tail -f /var/log/ns.log | grep APPFW_BUFFEROVERFLOW** 

在非阻塞模式下,CEF日志消息显示bufferOverflowMaxCookieLength冲突

Oct 22 17:35:20  10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|**APPFW_BUFFEROVERFLOW_COOKIE**|6|src=10.217.253.62 geolocation=Unknown spt=41198 method=GET request=http://aaron.stratum8.net/FFC/sc11.html **msg=Cookie header length(43) is greater than maximum allowed(16)。** cn1=119 cn2=465 cs1=owa_profile cs2=PPE1 cs3=wvOOOb+cJ2ZRbstZpyeNXIqLj7Y0001 cs4=ALERT cs5=2015 **act=not blocking ** 

在非阻塞模式下显示bufferOverflowMaxURLLength冲突的CEF日志消息示例

Oct 22 18:39:56  10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|**APPFW_BUFFEROVERFLOW_URL**|6|src=10.217.253.62 geolocation=Unknown spt=19171 method=GET request=http://aaron.stratum8.net/FFC/sc11.html **msg=URL length(39) is greater than maximum allowed(20)。** cn1=707 cn2=402 cs1=owa_profile cs2=PPE0 cs3=kW49GcKbnwKByByi3+jeNzfgWa80000 cs4=ALERT cs5=2015 **act=not blocking ** 

本地格式日志在阻塞模式下显示bufferOverflowMaxHeaderLength冲突

Oct 22 18:44:00  10.217.31.98 10/22/2015:18:44:00 GMT ns 0- ppe -2: default APPFW **APPFW_BUFFEROVERFLOW_HDR** 155 0: 10.217.253.62 374-PPE2 khhBEeY4DB8V2D3H2sMLkXmfWnA0002 owa_profile **Header(User-Agent) length(82) is greater than maximum allowed(10)**: http://aaron.stratum8.net/ **** 

通过GUI访问日志消息

Citrix GUI包括一个有用的工具(Syslog查看器),用于分析日志消息。您有多个选项来访问Syslog查看器:

  • 导航到应用防火墙>配置文件,选择目标配置文件,单击安全检查.突出了缓冲区溢出行,单击日志.当您直接从配置文件的缓冲区溢出安全检查访问日志时,GUI会过滤掉日志消息,只显示与这些安全检查违规相关的日志。

  • 您也可以通过导航到进入Syslog查看器NetScaler>系统>审计.在审计消息部分中,单击Syslog消息链接,显示“Syslog查看器”,显示所有日志消息,包括其他安全检查违规日志。当请求处理期间可能触发多个安全检查违规时,这对于调试很有用。

  • 导航到应用防火墙>政策>审计.在审计信息部分,单击Syslog消息链接,显示“Syslog查看器”,显示所有日志消息,包括其他安全检查违规日志。

基于XML的Syslog查看器提供了各种过滤选项,用于仅选择您感兴趣的日志消息。属性的日志消息缓冲区溢出检查,过滤选择APPFW在下拉列表中选择模块.的事件类型List提供了三个选项,APPFW_BUFFEROVERFLOW_URLAPPFW_BUFFEROVERFLOW_COOKIE,和APPFW_BUFFEROVERFLOW_HDR,以查看与缓冲区溢出安全检查有关的所有日志消息。您可以选择一个或多个选项来进一步细化您的选择。例如,如果您选择APPFW_BUFFEROVERFLOW_COOKIE复选框,然后单击应用按钮,只记录属于缓冲区溢出安全性检查违规Cookie报头出现在Syslog查看器中。如果将光标放在特定日志消息的行中,则有多个选项,例如模块事件类型标识符,客户端IP,出现在日志信息下方。您可以选择这些选项中的任何一个,以突出显示日志消息中的相应信息。

Click-to-Deploy: GUI提供了单击部署功能,该功能目前仅支持用于缓冲区溢出日志消息URL长度违规。您可以使用Syslog Viewer不仅查看触发的违规,还可以根据观察到的阻塞消息的长度运行明智的决策。如果当前值限制太大,会触发误报,则可以选择一条消息并部署它,用消息中看到的URL长度值替换当前值。该操作的日志信息必须为CEF日志格式。控件的右边缘将出现一个复选框Syslog查看器在这一行框起来。复选框,然后从行动列表来部署松弛。编辑和部署部署,部署所有可按行动选项。您可以使用APPFW_BUFFEROVERFLOW_URL过滤器隔离与配置的URL长度违规相关的所有日志消息。

如果选择单个日志消息,则所有三个操作选项编辑和部署部署,部署所有是可用的。如果您选择编辑和部署,缓冲区溢出设置弹出对话框。在请求中观察到的新URL长度插入到最大URL长度输入字段。如果你点击关闭如果没有任何编辑,当前配置的值将保持不变。如果你点击好吧按钮时,新的最大URL长度值将替换之前的值。

请注意

日志而且统计数据系统显示“操作”复选框缓冲区溢出设置对话,并需要重新配置编辑和部署选择。请确保在单击之前启用这些复选框好吧,否则新的URL长度被配置,但动作被设置为没有一个

如果选中多个日志消息的复选框,则可以使用部署部署所有选择。如果部署的日志消息具有不同的URL长度,则配置的值将被所选消息中观察到的最高URL长度值替换。部署规则只会导致更改bufferOverflowMaxURLLength价值。配置的操作将被保留并保持不变。

在GUI中使用单击部署功能

  1. 在“Syslog查看器”中,选择APPFW模块选项。
  2. 启用APPFW_BUFFEROVERFLOW_URL复选框作为事件类型过滤对应的日志消息。
  3. 启用复选框以选择规则。
  4. 使用行动下拉列表选项来部署放松。
  5. 导航到应用防火墙>配置文件,选择目标配置文件,单击安全检查访问缓冲区溢出设置窗格以验证最大URL长度值被更新。

缓冲区溢出违反的统计信息

当启用统计动作时,当Web应用程序防火墙对此安全检查采取任何操作时,缓冲区溢出安全检查的计数器将增加。收集流量、违规和日志的速率和总计数的统计信息。日志计数器增量的大小可以根据配置的设置而变化。例如,如果阻塞动作被启用,对包含三次缓冲区溢出违规的页面的请求将使统计计数器加1,因为当检测到第一次违规时该页将被阻塞。但是,如果block被禁用,则处理相同的请求会增加违规的统计计数器,因为每次违规都会生成单独的日志消息。

使用实例使用命令行显示缓冲区溢出安全检查的统计信息

在命令提示符下,输入:

> sh appfw统计信息

要显示特定配置文件的统计信息,使用以下命令:

> stat appfw profile <配置文件名称>

以GUI方式显示缓冲区溢出统计信息

  1. 导航到系统>安全>应用防火墙
  2. 在右窗格中,访问统计数据链接。
  3. 使用滚动条可以查看缓冲区溢出违规和日志的统计信息。统计表提供实时数据,每7秒更新一次。

突出了

  • 缓冲区溢出安全检查允许您配置限制,以强制允许的url、cookie和header的最大长度。

  • 日志而且统计数据操作使您能够监视流量并为应用程序配置最佳保护。

  • Syslog查看器使您能够过滤和查看与缓冲区溢出违规有关的所有日志消息。

  • Click-to-Deploy的功能支持bufferOverflowMaxURLLength违规。您可以选择和部署单个规则,也可以选择多个日志消息来调整和放宽URL允许的最大长度的当前配置值。所选组中URL的最高值被设置为新值,以允许当前标记为违规的所有请求。

  • Web应用防火墙现在在检查传入请求时评估单个cookie。如果在cookie报头中接收到的任何一个cookie的长度超过了配置的长度BufferOverflowMaxCookieLength,则触发Buffer Overflow违例。

重要的

release 10.5。E(在59.13xx之前的一些临时增强版本中。e版本)和11.0版本(在65.x之前的版本中),Web应用防火墙对Cookie头的处理被改变了。在这些版本中,每个cookie都单独评估,如果cookie报头中接收到的任何一个cookie的长度超过了配置的BufferOverflowMaxCookieLength,就会触发缓冲区溢出违规。这个变化的结果是,在10.5和更早的版本中被阻止的请求可能会被允许,因为整个cookie头的长度不会被计算来确定cookie长度。**在某些情况下,转发给服务器的cookie总大小可能比接受的值大,服务器可能会响应“400个坏请求”。

这一变化已被逆转。10.5中的行为。e - > 59.13 xx。E和后续的10.5。E增强是11.0 65版之外的新版本。X和后续版本现在类似于版本10.5的非增强版本。现在在计算Cookie长度时考虑整个原始Cookie头。周围的空格和分隔名称-值对的分号(;)字符也包括在确定cookie长度中。