Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / FreeBSD OPIE实现__opiereadrec()函数单字节栈溢出漏洞

发布日期:2010-05-27
更新日期:2010-05-28受影响系统:
FreeBSD FreeBSD 8.0
FreeBSD FreeBSD 7.3
FreeBSD FreeBSD 7.2
FreeBSD FreeBSD 7.1
FreeBSD FreeBSD 6.4
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 40403
CVE ID: CVE-2010-1938FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统。FreeBSD所使用的OPIE认证系统中readrec.c文件的__opiereadrec()函数存在单字节栈溢出漏洞,在启用了栈保护的情况下,攻击者可以远程导致使用OPIE的服务进程崩溃。以下是有漏洞的代码段:"/src/contrib/opie/opie.h"
/* Maximum length of a principal (read: user name) */
#define OPIE_PRINCIPAL_MAX 32"./src/contrib/opie/libopie/readrec.c"
int __opiereadrec FUNCTION((opie), struct opie *opie)
{
  ...
  ...
  {
    char *c, principal[OPIE_PRINCIPAL_MAX];
    int i;    if (c = strchr(opie->opie_principal, ":"))
      *c = 0;
[1] if (strlen(opie->opie_principal) > OPIE_PRINCIPAL_MAX)
[2]   (opie->opie_principal)[OPIE_PRINCIPAL_MAX] = 0;[3] strcpy(principal, opie->opie_principal);
    ...
    ...
  }
  ...
  ...
ret:
  if (f)
    fclose(f);
  return rval;
}[1]处函数检查受控变量opie->opie_principal的长度。如果长度大于OPIE_PRINCIPAL_MAX(32字节),程序就会在这个位置写入空字节。实际上字符串确实为32字节长。漏洞出现在[3]。strcpy()将最多可为32字节的受控变量拷贝到了也为32字节长的principal缓冲区中,但由于strcpy()在拷贝了32字节后还要向字符串末尾添加一个空字节,因此可以触发单字节溢出。越界发生在*(principal+32)位置。<*来源:Maksymilian Arciemowicz (max@jestsuper.pl)
        Adam Zabrocki (pi3ki31ny@wp.pl)
 
  链接:http://secunia.com/advisories/39966/
        http://marc.info/?l=full-disclosure&m=127495284225644&w=2
        http://marc.info/?l=full-disclosure&m=127498386415933&w=2
        ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-10:05.opie.asc
*>测试方法:
--------------------------------------------------------------------------------警 告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!Connected to localhost.
Escape character is "^]".
220 127.cx FTP server (Version 6.00LS) ready.
user cx
331 Password required for cx.
user AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Connection closed by foreign host.
127#建议:
--------------------------------------------------------------------------------
厂商补丁:FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-10:05)以及相应补丁:
FreeBSD-SA-10:05:OPIE off-by-one stack overflow
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-10:05.opie.asc补丁下载:执行以下步骤之一;1) 将有漏洞的系统升级到6-STABLE、7-STABLE或8-STABLE,,或修改日期之后的RELENG_8_0、RELENG_7_3或RELENG_7_2、RELENG_7_1、RELENG_6_4安全版本。2) 如果要通过源码路径升级有漏洞的系统:以下补丁确认可应用于FreeBSD 6.4、7.1、7.2、7.3和8.0系统。a) 从以下位置下载相关补丁,并使用PGP工具验证附带的PGP签名。# fetch http://security.FreeBSD.org/patches/SA-10-05/opie.patch
# fetch http://security.FreeBSD.org/patches/SA-10-05/opie.patch.ascb) 以root执行以下命令:# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/lib/libopie
# make obj && make depend && make && make install3) 如果要通过二进制补丁升级有漏洞的系统:# freebsd-update fetch
# freebsd-update installFreeBSD jail(8)实现本地权限提升漏洞Google Chrome 5.0.375.55更新修复多个安全漏洞相关资讯      FreeBSD 
  • FreeBSD 11发布  (今 14:22)
  • FreeBSD 10.3-BETA2 发布下载  (02月16日)
  • FreeBSD 10.3-BETA1 发布下载  (02月07日)
  • FreeBSD 10.3-BETA3 发布下载  (02月29日)
  • FreeBSD下zfs: failed with error   (02月14日)
  • 如何在树莓派 2B 上安装 FreeBSD  (12/24/2015 17:25:16)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明