错误,崩溃和漏洞


通过 马克·韦伯·约翰逊, 首席技术官, 网络盒

应用3d综合走势图带图表或操作系统崩溃似乎是现代计算机的常态。我们都习惯于经常保存我们的工作,‘Relaunch’按钮,然后从我们被打扰的地方继续前进。

但是您是否曾经想过导致崩溃的原因,以及是否还有其他重大影响?好吧,有充分的理由要担心。通常,3d综合走势图带图表由于某些意外输入而崩溃,并且该崩溃可能是恶意黑客进入您的系统的途径。

是什么导致应用3d综合走势图带图表崩溃?

可能有很多原因,但是绝大多数是因为3d综合走势图带图表执行了操作系统不喜欢的操作。要么使用无效的参数调用了某些系统函数,要么应用3d综合走势图带图表尝试访问它不应该访问的资源,最常见的是‘out of bounds’内存访问,应用3d综合走势图带图表尝试从其允许的所有权之外访问内存。

对于3d综合走势图带图表员来说,要求一些输入(例如用户名),然后将该输入复制到存储变量以供以后使用很简单。在流行‘C’编程语言,看起来像这样:

字符用户名[32];

strcpy(用户名,输入);

历史上,strcpy()函数非常常用,它将字符串从第二个参数(输入)复制到第一个参数(用户名)指向的内存区域。当到达字符串结尾标记(字节零)时,它将停止复制。

但是,如果提供的输入大于32个字符(或31,作为零终止字节,则占用一个)怎么办?答案是strcpy()不会’请注意,并会进行复制。用户名之后的所有内容都会被覆盖。如果username变量位于内存顶部,则将导致‘memory 越界’崩溃。即使不是这种情况,其他内容也可能被覆盖并弄乱3d综合走势图带图表流程或引起其他问题。

Another common approach is for the input to come in the form of a protocol 信息 in a network communication stream. In many cases, such protocols encode data as

<length><message>, sending the 长度 to expect first, followed 通过 that number of 通过tes of the variable-length 信息. What if an attacker hand-crafts protocol 信息s, with malicious 长度s designed to overwrite memory arbitrarily?

当然,3d综合走势图带图表开发人员应彻底验证此类情况。纵观此类漏洞的历史,很明显有些漏洞(也许大多数)并非如此。

对安全有何影响?

让’让我们看一下当今使用的典型计算机内存体系结构。代码和数据驻留在同一内存中。代码位于底部,全局变量内存位于其上方,而堆栈位于顶部。可能还有一个区域叫做‘heap’用于动态内存(必要时可以向上扩展)。这里的关键是代码和全局变量的大小是固定的,但是堆栈向下增长。看起来像这样:

堆栈是一项有趣的技术。让’请看我们上面的strcpy()示例。发生的情况是,当3d综合走势图带图表调用strcpy()函数时,该3d综合走势图带图表的当前地址为‘pushed’到堆栈上,然后控制流到strcpy()函数本身。该功能完成工作后,它将调用‘return’ function, which ‘pops’ the 返回 address off the stack and resumes control flow at that point. This scheme allows for functions to call other functions in a nested fashion 上 ly limited 通过 the stack’s size.

It is also common for local variables, such as the username, to be stored 上 the stack. 让’在运行strcpy()函数时,请看一下我们原始的strcpy()3d综合走势图带图表的内存安排:

让’s说攻击者提供了一个‘payload’ as input:

■用户名的32个字节(不包含零个字符)

■指向有效负载目标的4字节指针(正上方)

■剩余的有效载荷中包含要执行的代码

■零终止以结束strcpy()

Now, the strcpy() function dutifully copies all that into the username, overwrites the 返回 pointer, and then overwrites the upper stack with the 有效载荷 provided. The strcpy() function 返回s, and the CPU dutifully 流行音乐 the 返回 address (now pointing to the code in the 有效载荷 provided 通过 the attacker) and transfers control to the attacker. Game over, and the attacker wins.

好消息

以上听起来很糟糕。但是,好消息是,如今,它已不再那么简单了。防御者和攻击者之间正在进行一场猫捉老鼠的游戏,防御者增加了越来越多的复杂性和控制力,使攻击者变得更加困难。诸如以下技术:

■将不同的存储区域标记为不可执行,例如堆栈

■地址随机化,因此存储器布局不可预测

■堆栈金丝雀,在堆栈上的唯一值,如果修改则表示信号堆栈损坏

这些都使攻击者难以成功进行此类攻击。

行业合作伙伴关系(例如Microsoft Active Protection计划– MAPP –也存在Network Box参与者)共享详细的漏洞信息。像Network Box这样的安全提供3d综合走势图带图表可以释放保护,使用户有时间更新其应用3d综合走势图带图表。

如今,大多数流行的操作系统都允许您以低特权用户身份登录并使用该系统(仅在需要时升级为管理特权)。这样登录最初限制了任何利用对用户的影响’的访问权限,再次获得了时间。

就是说,每天都会发布新的漏洞(当前最受欢迎的跟踪服务在其数据库中有140,000多个),尽管并非全部都可以利用,但有些可以被利用。成功的零日漏洞利用(没有人知道的)的回报可能在数十万美元左右。

因此,下次3d综合走势图带图表崩溃时,也许是个不错的选择‘check for updates’并查看是否已发布修复3d综合走势图带图表。您还可以选择与应用3d综合走势图带图表开发人员共享崩溃数据,以便可以将此类问题通知他们并进行迭代改进。

马克·韦伯·约翰逊(Mark Webb-Johnson)是该公司的联合创始人兼首席技术官 网络盒。是Mark的技术天才推动Network Box的网络安全创新。他和他的团队不断提出解决方案,使Network Box领先于其他公司。多年来,Mark承担了许多项目和极其棘手的技术问题,并始终提出一个优雅的解决方案。难怪他赢得了哈尔舍姆勋爵计算机科学奖。


Follow 华晨安全杂志on 推特, 脸书领英 以确保您收到有关最新安全和网络安全新闻和信息的警报。