Sun Solaris CODE_GET_VERSION IOCTL本地拒绝服务漏洞
受影响系统:
Sun Solaris 10.0_x86
Sun OpenSolaris snv_69 - snv_133
描述:BUGTRAQ ID: 38016
CVE ID: CVE-2010-0453
Solaris是一款由Sun开发和维护的商业UNIX操作系统。
Solaris的内核中负责处理UCODE_GET_VERSION IOCTL请求的代码中存在空指针引用漏洞,本地用户可以通过发送特制的IOCTL请求导致拒绝服务。以下是intel/io/ucode_drv.c中的有漏洞代码段:
[..]
static int
ucode_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *cr, int
*rval)
{
..
switch (cmd) {
case UCODE_GET_VERSION: {
int size;
uint32_t *revp, *rev_array;
ucode_errno_t rc = EM_OK;
STRUCT_DECL(ucode_get_rev_struct, h);
STRUCT_INIT(h, mode);
[1] if (ddi_copyin((void *)arg,
STRUCT_BUF(h), STRUCT_SIZE(h), mode))
return (EFAULT);
[2] if ((size = STRUCT_FGET(h, ugv_size)) > NCPU)
return (EINVAL);
if ((rev_array = STRUCT_FGETP(h, ugv_rev)) == NULL)
return (EINVAL);
size *= sizeof (uint32_t);
[3] revp = kmem_zalloc(size, KM_SLEEP);
if (ddi_copyin((void *)rev_array, revp, size, mode) != 0) {
kmem_free(revp, size);
return (EINVAL);
}
[4] rc = ucode_get_rev(revp);
[..]
[1] h结构填充了用户控制的IOCTL输入数据。
[2] 从用户控制的数据中获得了size值。
[3] 如果size值为0,kmem_zalloc()会返回NULL,导致revp指向NULL。
[4] revp用作了ucode_get_rev()的函数指针。
i86pc/os/microcode.c:
[..]
/*
* Returns microcode revision from the machcpu structure.
*/
ucode_errno_t
ucode_get_rev(uint32_t *revp)
{
int i;
ASSERT(ucode);
ASSERT(revp);
if (!ucode->capable(CPU))
return (EM_NOTSUP);
mutex_enter(&cpu_lock);
for (i = 0; i < max_ncpus; i++) {
cpu_t *cpu;
if ((cpu = cpu_get(i)) == NULL)
continue;
[5] revp[i] = cpu->cpu_m.mcpu_ucode_info->cui_rev;
[..]
[5] 这个分配导致了空指针引用,因为revp == NULL。
<*来源:Tobias Klein
链接:http://marc.info/?l=bugtraq&m=126505373907787&q=p3
http://tk-blog.blogspot.com/2010/01/kernel-null-pointer-dereference-in.html
http://secunia.com/advisories/38452/
*>
建议:厂商补丁:
Sun
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://sunsolve.sun.com/search/document.do?assetkey=1-21-143913-01-1
- (MS09-051)Microsoft Windows Media Runtime文件压
- OpenLDAP CA SSL证书验证漏洞
- Linux Kernel 64位内核寄存器内存泄露漏洞
- (MS09-064)Microsoft Windows License Logging服务
- Hyperic HQ跨站脚本和脚本注入漏洞
- Kaspersky Anti-Virus kl1.sys驱动本地拒绝服
- FreeBSD fifo_vnops.c资源泄漏本地拒绝服务
- HP Operations Dashboard默认管理账号口令漏
- (MS10-002)Microsoft IE表格布局Col标签缓存
- GNU Gzip动态Huffman解压远程代码执行漏洞
相关热点
更多相关
- (MS09-051)Microsoft Windows Media Runtime文件压
- OpenLDAP CA SSL证书验证漏洞
- Linux Kernel 64位内核寄存器内存泄露漏洞
- (MS09-064)Microsoft Windows License Logging服务
- Hyperic HQ跨站脚本和脚本注入漏洞
- Kaspersky Anti-Virus kl1.sys驱动本地拒绝服
- FreeBSD fifo_vnops.c资源泄漏本地拒绝服务
- HP Operations Dashboard默认管理账号口令漏
- (MS10-002)Microsoft IE表格布局Col标签缓存
- GNU Gzip动态Huffman解压远程代码执行漏洞
- (MS09-052)Microsoft Windows Media Player ASF文件
- MyBB MYPS插件username参数跨站脚本执行漏
常见问题
- 服务器为什么要做双机热备?
- 浅析网络安全审计原理和技术
- 怎样防止域欺骗——阻止域名劫持
- 域名劫持是怎样劫持的?
- LINUX修改、增加IP的方法
- MySql 常用命令集
- 禁止ICP空链接入侵,删除默认共享.bat
- 服务器被黑,被写入隐藏账户怎么查啊?
服务项目
- 服务器安全维护服务
- 服务器安全加固服务
- 服务器安全设置服务
- 服安信息安全技术培训
- 服务器安全评估服务
- 服务器安全应急响应
- 服务器入侵检测服务
- 服务器安全维护包年
- 网站入侵检测服务
- 反黑、反DDOS攻击专案
成功案例
联系我们
- 专家信箱:sec@serversteam.com
- 专家热线:13542743816
- 安全客服:0755-82894338
- 应急传真:0755-82894338
- 地址:深圳市福田区群星广场A座
安全应急响应中心:


