网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
一种被忽视的构造和整数溢出重现
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
. = 0;

  while () {
    chomp;
    s/^\s+//;
    s/\s+$//;

  if (/\*\w+\+\+\s{0,}=\s{0,}\*\w+\+\+) {
   print $filename . " " . 一种被忽视的构造和整数溢出重现_网学
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
. "\n";
  }
}

注这段脚本只查找 *p++ 构造,而不查找 *++p 构造。

假定您发现了一个缺陷,使代码更安全的一种方法是限制被复制的数据不大于目标缓冲区:

HRESULT GetMachineName(WCHAR *pwszPath) {
    WCHAR  wszMachineName[N + 1])
    LPWSTR pwszServerName = wszMachineName;

    size_t cbMachineName = N;
    while (*pwszPath != L''\\'' && --cbMachineName)
        *pwszServerName++ = *pwszPath++;   
    
}

最后,对不为目标缓冲区的大小所限制的任何内存复制函数或构造都应该进行严格检查。

返回页首
关于整数溢出的更多介绍
在前面的文章 Reviewing Code for Integer Manipulation Vulnerabilities 中,我讨论了与所谓整数溢出 的简单数学运算相关的安全性缺陷。

最近,作为正在进行的可信赖计算工程系列 (Trustworthy Computing Engineering Series) 的一部分,我给 Microsoft 的工程师做了一次关于整数溢出的讲座。在讲座中,我概述了如何发现整数溢出以及如何修复整数溢出。让我感到吃惊的是,我接收到的许多电子邮件都说我的补救方法很好,但是充满危险。请允许我做一些解释。

在该专栏中,我提到过的代码如下所示:

if (A + B > MAX) return -1;

应该改成这样:

if (A + B >= A && A + B < MAX) {
   // cool!
}

三年前就有人指出,一些人会看到这段代码,但是不知道它有什么用,从而可能删除 A+B >= A 部分,因为它看起来纯属多余,而现在,整数溢出又重新出现在您面前。不会吧!

作为回应,我写了下面的头文件,它的意图再明白不过了。是的,它看起来像乱码,但这段乱码却是 x86 汇编语言。我之所以使用汇编语言,是因为它可以使我直接访问 jc 操作数,即按进位转移 (jump-on-carry)。换句话说,它检测数学运算是否会导致溢出。

#ifndef _INC_INTOVERFLOW_
#define _INC_INTOVERFLOW_

#ifdef _X86_

inline bool UAdd(size_t a, size_t b, size_t *r) {

   __asm {
      mov         eax,dword ptr [a]
      add         eax,dword ptr [b]
      mov         ecx,dword ptr [r]
      mov         dword ptr [ecx],eax
      jc         short j1
      mov         al,1
      jmp         short j2
j1:

#ifdef _DEBUG
      int         3
#endif
      xor         al,al
j2:
  &nbs

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号