缓冲区溢出检查
缓冲区溢出检查检测试图导致Web服务器上的缓冲区溢出。如果Web应用防火墙检测到URL,饼干或标头的长度超过配置的长度,则会阻止请求,因为它可能导致缓冲区溢出。
缓冲区溢出检查可防止攻击不安全的操作系统或Web服务器软件,这些软件可能会崩溃或行为不可预测,当它收到的数据字符串大于它可以处理的数据字符串时。正确的编程技术通过检查传入数据并拒绝或截断超长字符串来防止缓冲区溢出。但是,许多程序并不检查所有传入的数据,因此容易受到缓冲区溢出的影响。此问题特别影响旧版本的网站服务器软件和操作系统,其中许多仍在使用中。
缓冲区溢出安全检查允许您配置”阻止","日志“和”统计操作。此外,您还可以配置以下参数:
- 最大url长度。Web应用防火墙在请求的URL中允许的最大长度。具有较长url的请求将被阻止。可能的值: 0 - 65535。默认值:1024
- 最大饼干长度。Web应用程序防火墙允许请求中所有Cookie的最大长度。使用较长Cookie的请求触发冲突行为。可能的值: 0 - 65535。默认值:4096
- 最大报头长度。Web应用程序防火墙允许HTTP标头的最大长度。具有较长标头的请求将被阻止。可能的值: 0 - 65535。默认值:4096
- 查询字符串长度。传入请求中的查询字符串允许的最大长度。查询较长的请求将被阻止。可能的值: 0 - 65535。默认值:1024
- 总请求长度。传入请求允许的最大请求长度。长度较长的请求将被阻止。可能的值: 0 - 65535。默认值:24820
使用命令行配置缓冲区溢出安全检查
使用命令行配置缓冲区溢出安全检查操作和其他参数
在命令提示符下,键入:
add appfw profile
示例:
添加appfw profile profile1 - bufferoverflowmaxurllength 7000 - bufferoverflowmaxheaderlength 7250 - bufferOverflowMaxCookieLength 7100 - bufferoverflowmaxquerylength 7300 - bufferoverflowmaxtotalheaderlength 7300
使用Citrix ADC GUI配置缓冲区溢出安全检查
- 导航到安全>Web应用防火墙和配置文件。
- 在配置文件页面上,选择一个配置文件,然后单击编辑。
- 在Citrix Web应用程序防火墙配置文件页面上,转到”高级设置“部分,然后单击”安全检查”。
- 在安全检查部分中,选择缓冲区溢出,然后单击操作设置。
- 在“缓冲区溢出设置页中,设置以下参数。A.操作。选择要执行命令注入安全性检查的一个或多个操作。b.最大URL长度。受保护网站上url的最大长度(以字符为单位)。具有较长url的请求将被阻止。c.最大Cookie长度。发送到您受保护网站的Cookie的最大长度(以字符为单位)。使用较长cookie的请求将被阻止。D.最大标题长度。发送到受保护网站的请求中HTTP标头的最大长度(以字符为单位)。具有较长标头的请求将被阻止。E.最大查询长度。发送到受保护网站的查询字符串的最大长度(以字节为单位)。查询字符串较长的请求将被阻止。 f. 最大总报头长度。发送到受保护网站的请求中 HTTP 标头总长度的最大长度(以字节为单位)。将使用最小值和最大值在 Http配置文件中。长度较长的请求将被阻止。
单击确定和关闭。
将日志功能与缓冲区溢出安全检查结合使用
启用日志操作后,缓冲区溢出安全检查冲突将作为APPFW_BUFFEROVERFLOW_URL、APPFW_BUFFEROVERFLOW_COOKIE和APPFW_BUFFEROVERFLOW_HDR冲突记录在审核日志中。Web应用程序防火墙支持本机和CEF日志格式。您也可以将日志发送到远程syslog服务器。
如果使用GUI查看日志,则可以使用点击部署功能应用日志指示的放宽。
使用命令行访问日志消息
切换到shell并将/var/log/文件夹中的ns.log结尾,以访问与缓冲区溢出违规相关的日志消息:
> \ * \ *壳 \*\* > \*\* tail - f /var/log/ns.log | grep APPFW_BUFFEROVERFLOW \ * \ * < !——NeedCopy >
在非块模式下显示bufferOverflowMaxCookieLength冲突的CEF日志消息示例
10月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头长度(43)大于最大允许(16)。\*\* cn1=119 cn2=465 cs1=owa_profile cs2=PPE1 cs3=wvOOOb+cJ2ZRbstZpyeNXIqLj7Y0001 cs4=ALERT cs5=2015 \*\*act=not blocked\*\*
在非块模式下显示bufferOverflowMaxURLLength冲突的CEF日志消息示例
10月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 blocked\*\*
在块模式下显示bufferOverflowMaxHeaderLength冲突的本机格式日志消息示例
10月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) greater than maximum allowed(10)\*\*: http://aaron.stratum8.net/ \*\*\*\*
使用GUI访问日志消息
Citrix GUI包括一个用于分析日志消息的有用工具(Syslog查看器)。您有多个用于访问Syslog查看器的选项:
导航到应用程序防火墙>配置文件,选择目标配置文件,然后单击安全检查。突出显示缓冲区溢出行并单击日志。当您直接从配置文件的缓冲区溢出安全检查访问日志时,GUI会筛选出日志消息,并仅显示与这些安全检查冲突有关的日志。
您还可以通过导航到NetScaler>系统>审核访问系统日志查看器。在审计消息部分,单击Syslog消息链接以显示Syslog查看器,该查看器显示所有日志消息,包括其他安全检查违规日志。这对于在请求处理过程中可能触发多个安全检查冲突时进行调试非常有用。
导航到应用程序防火墙>策略>审核。在审计消息部分,单击Syslog消息链接以显示Syslog查看器,该查看器显示所有日志消息,包括其他安全检查违规日志。
基于XML的Syslog查看器提供了各种筛选器选项,用于仅选择您感兴趣的日志消息。要为缓冲区溢出检查选择日志消息,请在模块的下拉列表选项中选择APPFW进行筛选。事件类型列表提供三个选项,即APPFW_BUFFEROVERFLOW_URL、APPFW_BUFFEROVERFLOW_COOKIE和APPFW_BUFFEROVERFLOW_HDR,以查看与缓冲区溢出安全检查有关的所有日志消息。您可以选择一个或多个选项以进一步优化您的选择。例如,如果您选中APPFW_Bufferoverflow_Cookie复选框并单击应用按钮,则系统日志查看器中只会显示与缓冲区溢出安全检查违规相关的日志消息。如果将游标放在特定日志消息的行中,则日志消息下方会显示多个选项,如模块、事件类型、事件ID和客户端IP。您可以选择这些选项中的任何一个以突出显示日志消息中的相应信息。
点击部署: gui提供点击部署功能,目前仅支持与URL长度冲突相关的缓冲区溢出日志消息。您可以使用Syslog查看器,不仅可以查看触发的违规,还可以根据被阻止的消息的观察长度运行明智的决策。如果当前值限制太大,并且触发误报,您可以选择一条消息并将其部署以将当前值替换为消息中看到的 URL 长度值。此操作的日志消息必须采用 CEF 日志格式。如果可以为日志消息部署松弛,则会在该行的Syslog查看器框的右边缘显示一个复选框。选中该复选框,然后从”操作”列表中选择一个选项来部署放宽。“全部编辑和部署”、“部署“和”全部部署“均可用作”操作”选项。您可以使用APPFW_BUFFEROVERFLOW_URL筛选器隔离与配置的url长度冲突有关的所有日志消息。
如果选择单个日志消息,则所有三个操作选项”编辑和部署”、“部署“和”全部部署”都可用。如果选择”编辑和部署",则会显示"缓冲区溢出设置对话框。请求中观察到的新url长度将插入到最大url长度输入字段中。如果单击”关闭而不进行任何编辑,则当前配置的值将保持不变。如果单击”确定“按钮”,“最大url长度”的新值将替换以前的值。
注意
在显示的”缓冲区溢出设置“对话框中未选中”块、日志和统计数据“操作复选框,如果您选择”编辑和部署选项,则需要重新配置。请确保在单击“确定”之前启用这些复选框,否则将配置新的url长度,但操作设置为无。
如果选中多条日志消息的复选框,则可以使用”部署“或”全部部署选项。如果已部署的日志消息具有不同的URL长度,则配置的值将替换为所选消息中观察到的最高URL长度值。部署规则只会导致更改bufferOverflowMaxURLLength值。已配置的操作将保留并保持不变。
在GUI中使用点击部署功能
- 在Syslog查看器中,在模块选项中选择APPFW。
- 启用APPFW_BUFFEROVERFLOW_URL复选框作为事件类型来筛选相应的日志消息。
- 启用该复选框以选择规则。
- 使用”操作”下拉列表的选项来部署放宽。
- 导航到”应用程序防火墙“>”配置文件",选择目标配置文件,然后单击"安全检查“以访问”缓冲区溢出设置”窗格以验证最大url长度值是否已更新。
缓冲区溢出冲突的统计信息
启用统计操作时,Web应用程序防火墙对此安全检查采取任何操作时,缓冲区溢出安全检查的计数器会递增。这些统计数据是针对流量、冲突和日志的速率和总计数收集的。日志计数器的增量大小可能会因配置的设置而异。例如,如果启用了阻止操作,则对包含三个缓冲区溢出违规的页面的请求会逐一增加统计数器,因为检测到第一个违规时该页面会被阻止。但是,如果禁用块,处理相同的请求会增加违规的统计计数器,因为每个违规都会生成单独的日志消息。
使用命令行显示缓冲区溢出安全检查统计信息
在命令提示符下,键入:
> sh appfw stats . sh
要显示特定配置文件的统计信息,请使用以下命令:
> stat appfw配置文件<配置文件名称>
使用GUI显示缓冲区溢出统计信息
- 导航到系统>安全>应用程序防火墙。
- 在右窗格中,访问统计信息链接。
- 使用滚动条查看有关缓冲区溢出冲突和日志的统计信息。统计表提供实时数据,每 7 秒更新一次。
重要内容
缓冲区溢出安全检查允许您配置限制以强制执行允许的URL, Cookie和标题的最大长度。
”阻止”、“日志“和”统计操作使您能够监视流量并为您的应用程序配置最佳保护。
Syslog查看器允许您筛选和查看与缓冲区溢出冲突有关的所有日志消息。
”点击部署功能支持bufferOverflowMaxURLLength冲突。您可以选择和部署单个规则,也可以选择多条日志消息来调整和放宽url允许的最大长度的当前配置值。选定组中url的最高值设置为新值,以允许当前标记为冲突的所有这些请求。
Web应用程序防火墙现在在检查传入请求时评估各个Cookie。如果在cookie标头中接收到的任何一个cookie的长度超过配置的BufferOverflowMaxCookieLength,则触发缓冲区溢出冲突。
重要
在10.5。E版本(在59.13xx)。E版本之前的一些临时增强版本中)和11.0版本(在);x之前的版本中)中,对Cookie标头的Web应用防火墙处理发生了更改。在这些版本中,每个 cookie 都是单独评估的,如果 cookie 标头中接收到的任何一个 cookie 的长度超过配置的 BufferOverflowMaxCookieLength,则触发缓冲区溢出冲突。 由于此更改,可能允许在 10.5 和更早版本版本中被阻止的请求,因为不计算整个 cookie 标头的长度来确定 cookie 长度。**在某些情况下,转发给服务器的饼干总大小可能大于接受的值,服务器可能会以“400错误请求”作出响应。
此更改已恢复. 10.5.e->59.13xx。E和后续10.5。E增强版本以及11.0版本65。X和后续版本中的行为现在类似于版本10.5的非增强版本。现在在计算Cookie的长度时考虑整个原始Cookie标头。在确定cookie 长度时,还包括周围空格和分号 (;) 字符分隔名称-值对。