安全漏洞的5个最危险安全漏洞

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全漏洞的5个最危险安全漏洞相关的知识,希望对你有一定的参考价值。

参考技术A

在应用程序将不可信的数据发送给解释器时,就有可能产生注入漏洞。这种漏洞很普遍,会影响到大量方案。最普遍的注入漏洞会影响到SQL、LDAP、XPath、XML解析器和程序参数。
其实,通过分析代码是可以发现注入漏洞的,但是,如果已经将系统部署到了生产环境中了,在测试期间就很难发现这些漏洞。
利用劫持漏洞的网络攻击带来的后果可能有:敏感数据被泄露、拒绝服务等。
攻击者可以运行劫持攻击,从而完全破坏目标系统,并获得其控制权。
注入漏洞可以影响多种软件,其影响依赖于有漏洞的应用程序的传播范围或传播水平。注入漏洞可能带来的一个典型影响就是Bash Bug漏洞。红帽子的安全团队在Linux 中的 Bash shell 中发现了一个危险的安全漏洞“Bash Bug”。对于用户的正常访问,该漏洞允许攻击者的代码如同在外壳 中一样被执行,这就为各种各样的攻击打开了方便之门。
这种类型的漏洞可能带来大规模影响,例如,物联网设备(例如,智能仪表,路由器,网络摄像机等设备)就有可能遭受这种漏洞的威胁。 如果应用程序试图将超过缓冲区容量的数据存放在其中时,就产生了缓冲区溢出漏洞的条件。从外部写入到缓冲区可以使攻击者覆盖邻近内存块的内容,从而导致数据遭到破坏,程序崩溃,甚至可以执行任何恶意代码。
缓冲区溢出攻击难以发现,但与注入攻击相比,也更难以利用。攻击者需要了解目标应用的内存管理,并且知道修改其内容运行攻击的方法。
在典型的攻击中,攻击者将数据发送给一个应用程序,而后者是一个将数据存储在小容量的堆栈缓冲区的程序,这会导致覆盖调用堆栈上的信息,其中包括函数的返回指针。通过这种方法,在合法的功能完成之后,攻击者就可以运行自己的恶意代码,并且可以将控制交给包含攻击者数据的漏洞利用代码。
由于针对SCADA的攻击日益增多,所以这种缓冲区溢出漏洞被利用的频率也会越来越高。 数据可以存储在系统中,或在两个实体(如服务器或浏览器)之间传输,如果缺乏足够的保护,就会发生敏感数据泄露的问题。
敏感数据的泄露可涉及到访问静态数据、正在传输数据,其中也包括备份和用户正在浏览的数据。
攻击者有多种选择,例如,如果要窃取或攻击数据存储器,他可以使用基于恶意软件的攻击,通过中间人攻击截获服务器和浏览器之间的数据,或者欺骗Web应用程序做出一些动作(例如,改变电子商务应用程序中购物车的内容,或者提升特权)等。
敏感数据泄露主要是由于敏感数据缺少加密造成的,但是即使实施了加密机制,其他事件也会造成信息泄露。密钥的生成和管理及算法等不够强健在许多行业和应用中是很普遍的事情。
近一年来发生的有许多事件都表明这种漏洞的严重性,特别是在两方面表面尤为突出:一是实施了错误的加密算法,二是移动和云的方案缺乏加密。
2014年九月,美国计算机紧急事件响应小组协调中心(CERT/CC)的专家对一些没有能够正确验证SSL证书的安卓应用进行了测试,并发布了测试报告。
CERT的报告认为,许多应用正使用有漏洞的库,如Flurry库。因此,安卓用户就会暴露在这种攻击中,并仅有少量公司采取措施保障其产品的安全。
攻击者往往并不直接破解加密,而是利用敏感数据的泄露缺陷。这就意味着攻击者会窃取加密密钥,运行中间人攻击,从服务器或用户的浏览器上窃取正在传输的明文数据。
注意,敏感数据泄露往往是攻击活动第一阶段的一个组成部分,也就是说攻击者随后会利用其它黑客技术。
管理敏感数据的每家企业都有可能遭受攻击,特别是那些有大量用户的企业,很多用户都有可能为网络攻击打开大门。 如果攻击者利用了认证或会话管理过程的漏洞或缺陷(例如,账户、口令、会话ID被泄露等),并假冒其他用户,就会发生认证和会话管理攻击。
这种攻击非常常见,许多黑客组织都利用这些漏洞访问受害者账户,实施网络间谍活动,或者窃取信息用于犯罪活动。
一个主要的威胁问题与认证和会话管理机制的自定义实施有关,在多数情况下,这种机制会导致攻击活动。这种漏洞影响到WEB应用程序,如用户登出、口令管理、超时、网站登录的“记住我”功能等,而且账户的更新也受到认证漏洞攻击影响。
最大的问题是,如果这种漏洞被成功地利用,攻击者就假冒受害者,用其获得的特权从事任何活动。
不幸的是,由于大量的认证机制是由每个不同的受害者实施的,所以认证和会话管理的攻击漏洞是很难对付的。认证和会话管理系统往往并不一致,这就使得大规模地采用最佳方法并非易事。
攻击者有多种方法可以绕过认证机制,其中包括使用SQL注入攻击对目标账户实施蛮力攻击、从URL中恢复会话标志、利用会话超时、重新利用已经使用的会话令牌,或者破坏用户的浏览器,等等。
最常见的攻击依靠会话,而认证机制往往基于服务器上与每个会话有关的的令牌。取得会话标志的攻击者能够假冒受害者而无需再次提供登录凭据。 这种漏洞其实是最常见也是最危险的。错误配置的服务器和应用程序在网络上数量众多,这为网络攻击打开了大门。
下面是一些典型的安全配置错误:
· 运行过时的软件  · 生产环境中的应用程序和产品仍运行在调试模式,或者仍包含调试模块。  · 在系统中运行不必要的服务。  · 没有配置对服务器资源和服务的访问,导致泄露敏感信息,或者导致攻击者破坏或窃取这些信息。  · 没有改变出厂设置(例如,默认密钥和口令)  · 不正确的异常管理,导致将系统信息泄露给攻击者。  · 使用默认账户。

不安全函数(转)

这些函数由于设计的时候比较淳朴,并没有做任何的越界检测,主要容易”被溢出”,只需要多设点检查边界,即安全。

函数 严重性 解决方案
gets 最危险 使用 fgets(buf, size, stdin)。这几乎总是一个大问题!
strcpy 很危险 改为使用 strncpy。
strcat 很危险 改为使用 strncat。
sprintf 很危险 改为使用 snprintf,或者使用精度说明符。
scanf 很危险 使用精度说明符,或自己进行解析。
sscanf 很危险 使用精度说明符,或自己进行解析。
fscanf 很危险 使用精度说明符,或自己进行解析。
vfscanf 很危险 使用精度说明符,或自己进行解析。
vsprintf 很危险 改为使用 vsnprintf,或者使用精度说明符。
vscanf 很危险 使用精度说明符,或自己进行解析。
vsscanf 很危险 使用精度说明符,或自己进行解析。
streadd 很危险 确保分配的目的地参数大小是源参数大小的四倍。
strecpy 很危险 确保分配的目的地参数大小是源参数大小的四倍。
strtrns 危险 手工检查来查看目的地大小是否至少与源字符串相等。
realpath 很危险(或稍小,取决于实现) 分配缓冲区大小为 MAXPATHLEN。同样,手工检查参数以确保输入参数不超过 MAXPATHLEN。
syslog 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getopt 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getopt_long 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getpass 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getchar 中等危险 如果在循环中使用该函数,确保检查缓冲区边界。
fgetc 中等危险 如果在循环中使用该函数,确保检查缓冲区边界。
getc 中等危险 如果在循环中使用该函数,确保检查缓冲区边界。
read 中等危险 如果在循环中使用该函数,确保检查缓冲区边界。
bcopy 低危险 确保缓冲区大小与它所说的一样大。
fgets 低危险 确保缓冲区大小与它所说的一样大。
memcpy 低危险 确保缓冲区大小与它所说的一样大。
snprintf 低危险 确保缓冲区大小与它所说的一样大。
strccpy 低危险 确保缓冲区大小与它所说的一样大。
strcadd 低危险 确保缓冲区大小与它所说的一样大。
strncpy 低危险 确保缓冲区大小与它所说的一样大。
vsnprintf 低危险 确保缓冲区大小与它所说的一样大。




以上是关于安全漏洞的5个最危险安全漏洞的主要内容,如果未能解决你的问题,请参考以下文章

主机高危热门漏洞

比“心脏流血”还危险?详解Bash漏洞安全事件!

CWE发布2021年最危险的25种软件缺陷

为啥 iframe 被认为是危险的和安全风险?

JavaEE中遗漏的10个最重要的安全控制

安全风险标准分两个指标控制分别是啥?