编码员征服安全。分享与学习系列 - CRLF注入
对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。
但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。
在不改变文本的情况下,它可以使处理信息变得更加困难!
这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。
在这一集里,我们将学习。
- 攻击者如何触发CRLF注入
- 为什么注射CRLF是危险的
- 可以修复这个漏洞的技术。
攻击者如何触发CRLF注入?
在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。
但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。
例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。
https://validsite.com/index.php?page=home%0d%0a
如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。
为什么CRLF注射剂是危险的?
虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。
但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。
CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。
消除CRLF注入漏洞
如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。
在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。
关于CRLF注射液的更多信息
要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。


对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。
但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。
在不改变文本的情况下,它可以使处理信息变得更加困难!
这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。
在这一集里,我们将学习。
- 攻击者如何触发CRLF注入
- 为什么注射CRLF是危险的
- 可以修复这个漏洞的技术。
攻击者如何触发CRLF注入?
在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。
但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。
例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。
https://validsite.com/index.php?page=home%0d%0a
如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。
为什么CRLF注射剂是危险的?
虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。
但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。
CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。
消除CRLF注入漏洞
如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。
在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。
关于CRLF注射液的更多信息
要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。

对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。
但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。
在不改变文本的情况下,它可以使处理信息变得更加困难!
这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。
在这一集里,我们将学习。
- 攻击者如何触发CRLF注入
- 为什么注射CRLF是危险的
- 可以修复这个漏洞的技术。
攻击者如何触发CRLF注入?
在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。
但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。
例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。
https://validsite.com/index.php?page=home%0d%0a
如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。
为什么CRLF注射剂是危险的?
虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。
但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。
CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。
消除CRLF注入漏洞
如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。
在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。
关于CRLF注射液的更多信息
要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。
但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。
在不改变文本的情况下,它可以使处理信息变得更加困难!
这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。
在这一集里,我们将学习。
- 攻击者如何触发CRLF注入
- 为什么注射CRLF是危险的
- 可以修复这个漏洞的技术。
攻击者如何触发CRLF注入?
在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。
但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。
例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。
https://validsite.com/index.php?page=home%0d%0a
如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。
为什么CRLF注射剂是危险的?
虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。
但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。
CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。
消除CRLF注入漏洞
如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。
在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。
关于CRLF注射液的更多信息
要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。
资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。