安全研究

安全漏洞
Python PyLocale_strxfrm函数远程信息泄露漏洞

发布日期:2007-05-08
更新日期:2008-04-21

受影响系统:
Python Software Foundation Python 2.5
Python Software Foundation Python 2.4
描述:
BUGTRAQ  ID: 23887
CVE(CAN) ID: CVE-2007-2052

Python是一种开放源代码的脚本编程语言。

Python的Modules/_localemodule.c文件中的PyLocale_strxfrm函数中存在单字节溢出漏洞,允许攻击者读取部分内存内容。

Modules/_localemodule.c:361
356         n1 = strlen(s) + 1;
357         buf = PyMem_Malloc(n1);
358         if (!buf)
359             return PyErr_NoMemory();
360         n2 = strxfrm(buf, s, n1);

如果所转换的字符串长于原始字符串的话:

361         if (n2 > n1) {
362             /* more space needed */

在这里会分配n2字节:

363             buf = PyMem_Realloc(buf, n2);
364             if (!buf)
365                 return PyErr_NoMemory();

字符串会为n2字符长,终止的空字符不适合这个长度,因此字符串不会终止,在某些情况下可能导致信息泄露。

366             strxfrm(buf, s, n2);
367         }
368         result = PyString_FromString(buf);
369         PyMem_Free(buf);
370         return result;
371     }
372
373     #if defined(MS_WINDOWS)
374     static PyObject*
375     PyLocale_getdefaultlocale(PyObject* self)

<*来源:Piotr Engelking (inkerman42@gmail.com
  
  链接:http://secunia.com/advisories/25190
        http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=416934
        https://bugzilla.redhat.com/long_list.cgi?buglist=235093
        https://www.redhat.com/support/errata/RHSA-2007-1076.html
        https://www.redhat.com/support/errata/RHSA-2007-1077.html
        http://www.debian.org/security/2008/dsa-1551
        http://www.debian.org/security/2008/dsa-1620
*>

测试方法:

警 告

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

https://bugzilla.redhat.com/attachment.cgi?id=151611

建议:
厂商补丁:

Debian
------
Debian已经为此发布了一个安全公告(DSA-1620-1)以及相应补丁:
DSA-1620-1:New python2.5 packages fix several vulnerabilities
链接:http://www.debian.org/security/2008/dsa-1620

补丁下载:
Source archives:

http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1.dsc
Size/MD5 checksum:     1304 1849941ac328ba0bccc45535c5878d4d
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5.orig.tar.gz
Size/MD5 checksum: 11010528 2ce301134620012ad6dafb27bbcab7eb
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1.diff.gz
Size/MD5 checksum:   266589 dfbdc5caf7a95e68f68e0351228284d4

Architecture independent packages:

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-examples_2.5-5+etch1_all.deb
Size/MD5 checksum:   643494 f922c5e48339e5b535a1f23f6e061700
http://security.debian.org/pool/updates/main/p/python2.5/idle-python2.5_2.5-5+etch1_all.deb
Size/MD5 checksum:    63258 4add97730079e7894abbbca4ba5659d4

alpha architecture (DEC Alpha)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_alpha.deb
Size/MD5 checksum:   849132 28c76f70110314eab90c8ea31d0da51e
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_alpha.deb
Size/MD5 checksum:  2065734 270d593f08cdd06cbe55bdb804a5dc43
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_alpha.deb
Size/MD5 checksum:  3596900 64d12cc349030683dc125901dff56feb
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_alpha.deb
Size/MD5 checksum:  6079808 4105398688a96f54fb7e043a3bd536d7

amd64 architecture (AMD x86_64 (AMD64))

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_amd64.deb
Size/MD5 checksum:  6432058 b7e802bf4a19edfaddc28ebc06bed279
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_amd64.deb
Size/MD5 checksum:  3589530 9bbd2cea36b04746fa5437d984147f99
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_amd64.deb
Size/MD5 checksum:  1806598 98bfee87311a8950462a9ab78c7d5719
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_amd64.deb
Size/MD5 checksum:   849650 a95eeb3b45a0a3f74e314084d581fbd6

arm architecture (ARM)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_arm.deb
Size/MD5 checksum:  1656006 8e8d3d3b991f317384fc1646139712d4
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_arm.deb
Size/MD5 checksum:   781358 fbb5adac7469048405b2585475393475
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_arm.deb
Size/MD5 checksum:  3447404 4a10cad96ef0aefc9ba916a39677b826
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_arm.deb
Size/MD5 checksum:  6017500 f727562323c21bfb371e17ef9691f8e3

hppa architecture (HP PA RISC)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_hppa.deb
Size/MD5 checksum:  1984570 b083e1afffe4a93dd79ae4b8a7dca474
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_hppa.deb
Size/MD5 checksum:  3679122 cb5aa4f840a12ee13094089323f0b4f9
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_hppa.deb
Size/MD5 checksum:   887774 9cc756ce52e5380650ea754c4104c6ca
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_hppa.deb
Size/MD5 checksum:  6204820 65d3c59dcb56277d838b776f0b2d5176

i386 architecture (Intel ia32)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_i386.deb
Size/MD5 checksum:  5989758 79d6a1ed26f230a5b092603346cd31e3
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_i386.deb
Size/MD5 checksum:  1676014 5d7353787ab562d03bb967732cd7bf46
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_i386.deb
Size/MD5 checksum:  3445750 4b7b6629d5ee48d8413bd2ee7289726c
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_i386.deb
Size/MD5 checksum:   784320 f49d7ccf7cb106d200559169c4c013f2

ia64 architecture (Intel ia64)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_ia64.deb
Size/MD5 checksum:  1176036 fbc3971fbbcc8a37b2feec8570a4fa34
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_ia64.deb
Size/MD5 checksum:  6966656 ca0fe43224b9f329afac2673379ad958
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_ia64.deb
Size/MD5 checksum:  4037758 3be3cf7835a7e69b3189025edcdca799
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_ia64.deb
Size/MD5 checksum:  2477104 a5cafad9926f58504c44f980d490d979

mips architecture (MIPS (Big Endian))

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_mips.deb
Size/MD5 checksum:   819064 263a7a9496d171874461654ecc7db26f
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_mips.deb
Size/MD5 checksum:  1907220 2175a2f625925e95be148d62f279c210
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_mips.deb
Size/MD5 checksum:  3525088 a257c17981d12f9f0eb0a86fde85ca71
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_mips.deb
Size/MD5 checksum:  6507214 8306549937264c9f1cf57288ae7e738b

mipsel architecture (MIPS (Little Endian))

http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_mipsel.deb
Size/MD5 checksum:  3456110 1a7675c9de9abd3671786d36d3ea263f
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_mipsel.deb
Size/MD5 checksum:   817730 1a656308b4c158a6d0594f08132f8e16
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_mipsel.deb
Size/MD5 checksum:  6336980 a01b93c916c6c658747effa637bbb58d
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_mipsel.deb
Size/MD5 checksum:  1896534 b2b39e4d4e79b6afa13b24beccc5ab7c

powerpc architecture (PowerPC)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_powerpc.deb
Size/MD5 checksum:  3590820 f419e6c0b439e8391ce118a22f66179e
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_powerpc.deb
Size/MD5 checksum:   843170 ae9e553f9c5e278f42bb6bc2bef215aa
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_powerpc.deb
Size/MD5 checksum:  6648508 512e75472dcb919d7987472f7ea1c57c
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_powerpc.deb
Size/MD5 checksum:  1809928 1f43ae54d0b5836abbbfc59083d60bb4

s390 architecture (IBM S/390)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_s390.deb
Size/MD5 checksum:   841474 9e0a8a5eaf9100fb03caa3ac77aa2d63
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_s390.deb
Size/MD5 checksum:  1816794 a718f4d0c010ca9686068e0bbd8ec919
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_s390.deb
Size/MD5 checksum:  6535426 4aa0738ecf30b99614440f134a2096fb
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_s390.deb
Size/MD5 checksum:  3614770 6fdb0e38779312a7a66d57e373c38a38

sparc architecture (Sun SPARC/UltraSPARC)

http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dev_2.5-5+etch1_sparc.deb
Size/MD5 checksum:  1759842 5897eefdb79bfeb3cc470959e04dcb7c
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-dbg_2.5-5+etch1_sparc.deb
Size/MD5 checksum:  5995652 13848fd47c5a9047172d246c12dee03e
http://security.debian.org/pool/updates/main/p/python2.5/python2.5_2.5-5+etch1_sparc.deb
Size/MD5 checksum:  3493896 d327f5fc4dbd282db977eade02c9b7eb
http://security.debian.org/pool/updates/main/p/python2.5/python2.5-minimal_2.5-5+etch1_sparc.deb
Size/MD5 checksum:   778284 bd2ad97592529526e7c08862baf28cdc

补丁安装方法:

1. 手工安装补丁包:

  首先,使用下面的命令来下载补丁软件:
  # wget url  (url是补丁下载链接地址)

  然后,使用下面的命令来安装补丁:  
  # dpkg -i file.deb (file是相应的补丁名)

2. 使用apt-get自动安装补丁包:

   首先,使用下面的命令更新内部数据库:
   # apt-get update
  
   然后,使用下面的命令安装更新软件包:
   # apt-get upgrade

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2007:1077-01)以及相应补丁:
RHSA-2007:1077-01:Moderate: python security update
链接:https://www.redhat.com/support/errata/RHSA-2007-1077.html

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

http://svn.python.org/view/python/branches/release25-maint/Modules/_localemodule.c?rev=54670&r1=51333&r2=54670

浏览次数:2815
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障