| 网站首页 | 硬件维修 | 应用学院 | 网络组建 | 网站制作 | 菜鸟黑客 | 编程之道 | 数码大全 | 娱乐休闲 | 软件下载 | 在线视频 | 请您留言 | 技术论坛 | 
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
  • IP分片重组的分析和常见碎片…

  • 用C语言轻松编写QQ挂机王

  • 网络安全基础 教你怎样关闭网…

  • 服务器安全:防范拒绝服务攻击…

  • 菜鸟必读之邮箱及IE安全技巧…

  • 解除安全隐患—让“命令提示…

  • 怀疑PC安装木马?学学网络安…

  • 预防DDoS攻击的十项安全策略

  • 服务器安全:防范拒绝服务攻击…

  • 网络安全之特洛伊木马攻防战…

  • Q
    您现在的位置: 我是IT人 >> 菜鸟黑客 >> 黑客攻防 >> 文章正文
    安全编程: 避免竞争条件(4)           
    安全编程: 避免竞争条件(4)
    作者:网络 文章来源:转载 点击数: 更新时间:2006-1-19
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:

      如果您正在编写 shell 脚本,那么可以使用管道,或者在用户的主目录存入临时文件。根本不要使用 /tmp 或 /var/tmp 目录;普通的 shell 通常无法支持文件描述符,所以临时文件清除器(tmpfile cleaners)最终将使它们失败。如果没有临时文件清除器,而且您只是必须在 /tmp 中创建临时文件,那么至少要使用 mktemp(1) 来防止更明显的攻击,因为 mktemp(1)(不是 mktemp(3))将使用 O_EXCL 来防止典型的竞争条件攻击。您可能做的最糟糕事情通常也是最令人不安的事:假定“$$”没有被攻击者猜出来,并且只是将信息重定向到这类文件;那么在创建时就不会按要求使用 O_EXCL 模式。攻击者可以简单地预创建类似的文件,或者反复创建和删除它们,最终接管程序。这样,类似的 shell 脚本几乎肯定有一个严重的缺陷:

    清单 4. 有缺陷的 shell 脚本

      echo "This is a test" > /tmp/test$$ # DON'T DO THIS.

      不要再次使用临时文件名称(即不要删除和重新创建文件),不管您最初是如何获得“安全的”临时文件名称。攻击者都有可能观察到原始的文件名称,并在您第二次重新创建它时非法控制它。当然,要始终使用合适的文件权限。

      做好自己的清理工作,或者通过使用退出处理器,或者利用 UNIX 文件系统语义,在创建后立即 unlink() 该文件,以便在清除目录条目的同时仍然可以访问该文件,直到指向它的最后一个文件描述符被关闭。于是,您就可以在自己的程序中通过传送文件描述符来访问该文件。对代码维护来说,解除文件的链接有很多好处:不管您的程序是怎样崩溃的,文件都会被自动删除。它还降低了维护者不安全地使用文件名的可能性(改为使用文件描述符)。立即解除链接也有一个小问题,即这使得管理员查看磁盘空间使用情况的难度稍有增加。

      使这些对策成为操作系统的一部分已经取得了一些成功,尽管它们当前还没有被广为使用。要获得更多资料,请参阅参考资料列表中关于来自 OpenWall 项目的 Solar Designer 的 Linux 内核补丁、RaceGuard,以及 Eugene Tsyrklevich 和 Bennet Yee 的工作链接。

    上一页  [1] [2] 

    文章录入:54iter    责任编辑:54iter 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |