Vulnerabilities > CVE-2013-3906 - Code Injection vulnerability in Microsoft products

047910
CVSS 7.8 - HIGH
Attack vector
LOCAL
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
HIGH
Integrity impact
HIGH
Availability impact
HIGH
local
low complexity
microsoft
CWE-94
nessus
exploit available
metasploit

Summary

GDI+ in Microsoft Windows Vista SP2 and Server 2008 SP2; Office 2003 SP3, 2007 SP3, and 2010 SP1 and SP2; Office Compatibility Pack SP3; and Lync 2010, 2010 Attendee, 2013, and Basic 2013 allows remote attackers to execute arbitrary code via a crafted TIFF image, as demonstrated by an image in a Word document, and exploited in the wild in October and November 2013.

Common Attack Pattern Enumeration and Classification (CAPEC)

  • Leverage Executable Code in Non-Executable Files
    An attack of this type exploits a system's trust in configuration and resource files, when the executable loads the resource (such as an image file or configuration file) the attacker has modified the file to either execute malicious code directly or manipulate the target process (e.g. application server) to execute based on the malicious configuration parameters. Since systems are increasingly interrelated mashing up resources from local and remote sources the possibility of this attack occurring is high. The attack can be directed at a client system, such as causing buffer overrun through loading seemingly benign image files, as in Microsoft Security Bulletin MS04-028 where specially crafted JPEG files could cause a buffer overrun once loaded into the browser. Another example targets clients reading pdf files. In this case the attacker simply appends javascript to the end of a legitimate url for a pdf (http://www.gnucitizen.org/blog/danger-danger-danger/) http://path/to/pdf/file.pdf#whatever_name_you_want=javascript:your_code_here The client assumes that they are reading a pdf, but the attacker has modified the resource and loaded executable javascript into the client's browser process. The attack can also target server processes. The attacker edits the resource or configuration file, for example a web.xml file used to configure security permissions for a J2EE app server, adding role name "public" grants all users with the public role the ability to use the administration functionality. The server trusts its configuration file to be correct, but when they are manipulated, the attacker gains full control.
  • Manipulating User-Controlled Variables
    This attack targets user controlled variables (DEBUG=1, PHP Globals, and So Forth). An attacker can override environment variables leveraging user-supplied, untrusted query variables directly used on the application server without any data sanitization. In extreme cases, the attacker can change variables controlling the business logic of the application. For instance, in languages like PHP, a number of poorly set default configurations may allow the user to override variables.

Exploit-Db

descriptionMicrosoft Tagged Image File Format (TIFF) Integer Overflow. CVE-2013-3906. Remote exploit for windows platform
fileexploits/windows/remote/30011.rb
idEDB-ID:30011
last seen2016-02-03
modified2013-12-03
platformwindows
port
published2013-12-03
reportermetasploit
sourcehttps://www.exploit-db.com/download/30011/
titleMicrosoft Tagged Image File Format TIFF Integer Overflow
typeremote

Metasploit

descriptionThis module exploits a vulnerability found in Microsoft's Tagged Image File Format. It was originally discovered in the wild, targeting Windows XP and Windows Server 2003 users running Microsoft Office, specifically in the Middle East and South Asia region. The flaw is due to a DWORD value extracted from the TIFF file that is embedded as a drawing in Microsoft Office, and how it gets calculated with user-controlled inputs, and stored in the EAX register. The 32-bit register will run out of storage space to represent the large value, which ends up being 0, but it still gets pushed as a dwBytes argument (size) for a HeapAlloc call. The HeapAlloc function will allocate a chunk anyway with size 0, and the address of this chunk is used as the destination buffer of a memcpy function, where the source buffer is the EXIF data (an extended image format supported by TIFF), and is also user-controlled. A function pointer in the chunk returned by HeapAlloc will end up being overwritten by the memcpy function, and then later used in OGL!GdipCreatePath. By successfully controlling this function pointer, and the memory layout using ActiveX, it is possible to gain arbitrary code execution under the context of the user.
idMSF:EXPLOIT/WINDOWS/FILEFORMAT/MSWIN_TIFF_OVERFLOW
last seen2020-06-13
modified2017-09-14
published2013-11-22
references
reporterRapid7
sourcehttps://github.com/rapid7/metasploit-framework/blob/master//modules/exploits/windows/fileformat/mswin_tiff_overflow.rb
titleMS13-096 Microsoft Tagged Image File Format (TIFF) Integer Overflow

Msbulletin

bulletin_idMS13-096
bulletin_url
date2013-12-10T00:00:00
impactRemote Code Execution
knowledgebase_id2908005
knowledgebase_url
severityCritical
titleVulnerability in Microsoft Graphics Component Could Allow Remote Code Execution

Nessus

  • NASL familyWindows : Microsoft Bulletins
    NASL idSMB_NT_MS13-096.NASL
    descriptionThe version of Microsoft
    last seen2020-06-01
    modified2020-06-02
    plugin id71311
    published2013-12-11
    reporterThis script is Copyright (C) 2013-2018 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/71311
    titleMS13-096: Vulnerability in Microsoft Graphics Component Could Allow Remote Code Execution (2908005)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(71311);
      script_version("1.17");
      script_cvs_date("Date: 2018/11/15 20:50:31");
    
      script_cve_id("CVE-2013-3906");
      script_bugtraq_id(63530);
      script_xref(name:"EDB-ID", value:"30011");
      script_xref(name:"MSFT", value:"MS13-096");
      script_xref(name:"MSKB", value:"2901674");
      script_xref(name:"MSKB", value:"2850047");
      script_xref(name:"MSKB", value:"2817641");
      script_xref(name:"MSKB", value:"2817670");
      script_xref(name:"MSKB", value:"2899397");
      script_xref(name:"MSKB", value:"2899393");
      script_xref(name:"MSKB", value:"2899395");
      script_xref(name:"MSKB", value:"2850057");
    
      script_name(english:"MS13-096: Vulnerability in Microsoft Graphics Component Could Allow Remote Code Execution (2908005)");
      script_summary(english:"Checks file versions");
    
      script_set_attribute(attribute:"synopsis", value:"The remote Windows host has a remote code execution vulnerability.");
      script_set_attribute(attribute:"description", value:
    "The version of Microsoft's Graphics Component installed on the remote
    host is affected by a heap overflow vulnerability. Specially crafted
    TrueType font files are not processed properly. A remote,
    unauthenticated attacker could exploit this vulnerability by getting a
    user to view content that contains malicious TrueType font files,
    resulting in arbitrary code execution.
    
    Note that this issue is currently being exploited by malware in the
    wild.");
      # https://blogs.technet.microsoft.com/srd/2013/11/05/cve-2013-3906-a-graphics-vulnerability-exploited-through-word-documents/
      script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?6c6729d6");
      script_set_attribute(attribute:"see_also", value:"https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2013/ms13-096");
      script_set_attribute(attribute:"solution", value:
    "Microsoft has released a set of patches for Windows 2008, Windows
    Vista, Office 2003, Office 2007, Office 2010, Office Compatibility
    Pack, Lync 2010, Lync 2010 Attendee, Lync 2013, and Lync Basic 2013.
    
    Note: KB2896666 was previously released for this issue. The fix for
    KB2896666 can be removed after applying MS13-096 in order to view TIFF
    files.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:C/I:C/A:C");
      script_set_cvss_temporal_vector("CVSS2#E:H/RL:OF/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
      script_set_attribute(attribute:"exploit_framework_core", value:"true");
      script_set_attribute(attribute:"exploited_by_malware", value:"true");
      script_set_attribute(attribute:"metasploit_name", value:'MS13-096 Microsoft Tagged Image File Format (TIFF) Integer Overflow');
      script_set_attribute(attribute:"exploit_framework_metasploit", value:"true");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2013/11/05");
      script_set_attribute(attribute:"patch_publication_date", value:"2013/12/10");
      script_set_attribute(attribute:"plugin_publication_date", value:"2013/12/11");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:microsoft:windows");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:excel_viewer");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:lync");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:lync_basic");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:office");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:office_compatibility_pack");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:powerpoint_viewer");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:word_viewer");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Windows : Microsoft Bulletins");
    
      script_copyright(english:"This script is Copyright (C) 2013-2018 Tenable Network Security, Inc.");
    
      script_dependencies("smb_hotfixes.nasl", "office_installed.nasl", "ms_bulletin_checks_possible.nasl");
      script_require_keys("SMB/MS_Bulletin_Checks/Possible");
      script_require_ports(139, 445, "Host/patch_management_checks");
    
      exit(0);
    }
    
    include("audit.inc");
    include("smb_func.inc");
    include("smb_hotfixes.inc");
    include("smb_hotfixes_fcheck.inc");
    include("smb_reg_query.inc");
    include("misc_func.inc");
    
    global_var bulletin, vuln;
    
    # #########################
    #
    # Get list of all user Directories
    #
    # #########################
    function get_user_dirs()
    {
      local_var appdir, dirpat, domain, hklm, iter, lcpath, login, pass;
      local_var path, paths, pdir, port, rc, root, share, user, ver;
    
      paths = make_list();
    
      registry_init();
      hklm = registry_hive_connect(hive:HKEY_LOCAL_MACHINE, exit_on_fail:TRUE);
      pdir = get_registry_value(handle:hklm, item:"SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory");
      if (pdir && stridx(tolower(pdir), "%systemdrive%") == 0)
      {
        root = get_registry_value(handle:hklm, item:"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot");
        if (!isnull(root))
        {
          share = hotfix_path2share(path:root);
          pdir = share - '$' + ':' + substr(pdir, strlen("%systemdrive%"));
        }
      }
      RegCloseKey(handle:hklm);
      close_registry(close:FALSE);
    
      if (!pdir)
        return NULL;
    
      ver = get_kb_item_or_exit("SMB/WindowsVersion");
    
      share = hotfix_path2share(path:pdir);
      dirpat = ereg_replace(string:pdir, pattern:"^[A-Za-z]:(.*)", replace:"\1\*");
    
      port    =  kb_smb_transport();
      if (!get_port_state(port)) audit(AUDIT_PORT_CLOSED, port);
      login   =  kb_smb_login();
      pass    =  kb_smb_password();
      domain  =  kb_smb_domain();
    
      rc = NetUseAdd(login:login, password:pass, domain:domain, share:share);
      if (rc != 1)
      {
        NetUseDel(close:FALSE);
        return NULL;
      }
    
      # 2000 / XP / 2003
      if (ver < 6)
        appdir += "\Local Settings\Application Data";
      # Vista / 7 / 2008
      else
        appdir += "\AppData\Local";
    
      paths = make_array();
      iter = FindFirstFile(pattern:dirpat);
      while (!isnull(iter[1]))
      {
        user = iter[1];
        iter = FindNextFile(handle:iter);
    
        if (user == "." || user == "..")
          continue;
    
        path = pdir + '\\' + user + appdir;
    
        lcpath = tolower(path);
        if (isnull(paths[lcpath]))
          paths[lcpath] = path;
      }
    
      NetUseDel(close:FALSE);
    
      return paths;
    }
    
    
    # #########################
    #
    # Get file version
    #
    # #########################
    function get_ver()
    {
      local_var fh, path, rc, share, ver;
    
      path = _FCT_ANON_ARGS[0];
      share = hotfix_path2share(path:path);
    
      rc = NetUseAdd(share:share);
      if (rc != 1)
      {
        NetUseDel();
        audit(AUDIT_SHARE_FAIL, share);
      }
    
      ver = NULL;
      path = ereg_replace(string:path, pattern:"^[A-Za-z]:(.*)", replace:'\\1\\');
    
      fh = CreateFile(
        file               : path,
        desired_access     : GENERIC_READ,
        file_attributes    : FILE_ATTRIBUTE_NORMAL,
        share_mode         : FILE_SHARE_READ,
        create_disposition : OPEN_EXISTING
      );
      if (!isnull(fh))
      {
        ver = GetFileVersion(handle:fh);
        ver = join(ver, sep:".");
        CloseFile(handle:fh);
      }
    
      NetUseDel(close:FALSE);
    
      return ver;
    }
    
    
    # #########################
    #
    # Check if a file path/version is vulnerable
    #
    # #########################
    function check_vuln(fix, kb, name, path, ver, min_ver)
    {
      local_var info;
    
      if (isnull(ver))
        ver = get_ver(path);
    
      if (isnull(ver) || ver_compare(ver:ver, fix:fix, strict:FALSE) >= 0)
        return 0;
    
      # If min_ver is supplied, make sure the version is higher than the min_ver
      if (min_ver && ver_compare(ver:ver, fix:min_ver, strict:FALSE) == -1)
        return 0;
    
      info =
        '\n  Product           : ' + name +
        '\n  Path              : ' + path +
        '\n  Installed version : ' + ver +
        '\n  Fixed version     : ' + fix + '\n\n';
      hotfix_add_report(info, bulletin:bulletin, kb:kb);
    
      vuln = TRUE;
    }
    
    function _is_accessible_share()
    {
      local_var path, share;
      path = _FCT_ANON_ARGS[0];
    
      if (isnull(path))
        return FALSE;
    
      share = hotfix_path2share(path:path);
      if (is_accessible_share(share:share)) return TRUE;
    
      if (vuln)
        return FALSE;
    
      # only exit if nothing there is nothing to report (nothing has already been
      # identified as vulnerable)
      hotfix_check_fversion_end();
      audit(AUDIT_SHARE_FAIL, share);
    }
    
    # #########################
    #
    # Main
    #
    # #########################
    get_kb_item_or_exit('SMB/MS_Bulletin_Checks/Possible');
    bulletin = 'MS13-054';
    kbs = make_list(
      '2901674', # Windows Vista / 2008
      '2850047', # Office 2003 / Word Viewer
      '2817641', # Office 2007 / Compatibility Pack / Excel Viewer
      '2817670', # Office 2010 / PowerPoint Viewer
      '2899397', # Lync 2010
      '2899393', # Lync 2010 Attendee (user level)
      '2899395', # Lync 2010 Attendee (admin level)
      '2850057'  # Lync 2013
    );
    
    if (get_kb_item("Host/patch_management_checks"))
      hotfix_check_3rd_party(bulletin:bulletin, kbs:kbs, severity:SECURITY_HOLE);
    
    get_kb_item_or_exit("SMB/Registry/Enumerated", exit_code:1);
    vuln = FALSE;
    
    # Connect to the registry
    userpaths = get_user_dirs();
    arch = get_kb_item_or_exit("SMB/ARCH", exit_code:1);
    if (arch == "x64")
      extra = "\Wow6432Node";
    registry_init();
    hklm = registry_hive_connect(hive:HKEY_LOCAL_MACHINE, exit_on_fail:TRUE);
    
    
    # Microsoft Lync 2010
    lync2010_path = get_registry_value(
      handle : hklm,
      item   : 'SOFTWARE'+extra+'\\Microsoft\\Communicator\\InstallationDirectory'
    );
    
    # Microsoft Lync 2010 Attendee (admin level install)
    lync2010_att_admin_path = get_registry_value(
      handle : hklm,
      item   : 'SOFTWARE\\Microsoft\\AttendeeCommunicator\\InstallationDirectory'
    );
    
    # Microsoft Lync Basic 2013
    lync2013_path = get_registry_value(
      handle : hklm,
      item   : 'Software\\Microsoft\\Office\\15.0\\Lync\\InstallationDirectory'
    );
    
    # Microsoft Visual Studio .NET 2003
    vs2003_path = get_registry_value(
      handle : hklm,
      item   : 'Software\\Microsoft\\VisualStudio\\7.1\\InstallDir'
    );
    
    # Close connection to registry
    RegCloseKey(handle:hklm);
    close_registry(close:FALSE);
    
    # Lync 2010 #
    if (lync2010_path)
    {
      check_vuln(
        name    : 'Microsoft Lync 2010',
        kb      : "2899397",
        path    : lync2010_path + "\communicator.exe",
        min_ver : "4.0.0.0",
        fix     : "4.0.7577.4415"
      );
    }
    
    # Lync Attendee Admin Level Install #
    if (lync2010_att_admin_path)
    {
      check_vuln(
        name    : 'Microsoft Lync 2010 Attendee (admin level install)',
        kb      : "2899395",
        path    : lync2010_att_admin_path + "\MeetingJoinAxAOC.DLL",
        min_ver : "4.0.0.0",
        fix     : "4.0.7577.4415"
      );
    }
    
    # Lync 2010 Attendee User Level Install #
    foreach userdir (keys(userpaths))
    {
      check_vuln(
        name    : 'Microsoft Lync 2010 Attendee (user level install)',
        kb      : "2899393",
        path    : userdir + "\Microsoft Lync Attendee\MeetingJoinAxAOC.DLL",
        min_ver : "4.0.0.0",
        fix     : "4.0.7577.4415"
      );
    }
    
    # Lync 2013 #
    if (lync2013_path)
    {
      check_vuln(
        name    : 'Microsoft Lync 2013',
        kb      : "2850057",
        path    : lync2013_path + "\Lync.exe",
        min_ver : "15.0.0.0",
        fix     : "15.0.4551.1007"
      );
    }
    
    office_versions = hotfix_check_office_version();
    # Office 2003 SP3 #
    if (office_versions["11.0"])
    {
      office_sp = get_kb_item("SMB/Office/2003/SP");
      if (office_sp == 3)
      {
        path = hotfix_get_officeprogramfilesdir(officever:"11.0") + "\Microsoft Office\OFFICE11";
    
        if (
          hotfix_is_vulnerable(file:"Gdiplus.dll", version:"11.0.8408.0", min_version:"11.0.0.0", path:path, bulletin:bulletin, kb:'2850047')
        )
        {
          vuln++;
        }
        NetUseDel(close:FALSE);
      }
    }
    
    commonfiles = hotfix_get_commonfilesdir();
    # Office 2007 SP3 #
    if (office_versions["12.0"])
    {
      office_sp = get_kb_item("SMB/Office/2007/SP");
      if (office_sp == 3)
      {
        if (
          commonfiles &&
          hotfix_is_vulnerable(file:"Ogl.dll", version:"12.0.6688.5000", min_version:"12.0.0.0", path:commonfiles + "\Microsoft Shared\Office12", bulletin:bulletin, kb:'2817641')
        )
        {
          vuln++;
        }
        NetUseDel(close:FALSE);
      }
    }
    
    # Office 2010 SP1 #
    if (office_versions["14.0"])
    {
      office_sp = get_kb_item("SMB/Office/2010/SP");
      if (office_sp == 1 || office_sp == 2)
      {
        if (
          commonfiles &&
          hotfix_is_vulnerable(file:"Ogl.dll", version:"14.0.7110.5004", min_version:"14.0.0.0", path:commonfiles + "\Microsoft Shared\OFFICE14", bulletin:bulletin, kb:'2817670')
        )
        {
          vuln++;
        }
        NetUseDel(close:FALSE);
      }
    }
    
    systemroot = hotfix_get_systemroot();
    
    # Vista
    # Server 2008
    if (
      hotfix_check_sp_range(vista:'2') > 0
    )
    {
      kb = '2901674';
      login   =  kb_smb_login();
      pass    =  kb_smb_password();
      domain  =  kb_smb_domain();
      winsxs = ereg_replace(pattern:"^[A-Za-z]:(.*)", replace:"\1\WinSxS", string:systemroot);
      winsxs_share = hotfix_path2share(path:systemroot);
    
      rc = NetUseAdd(login:login, password:pass, domain:domain, share:winsxs_share);
      if (rc != 1)
        NetUseDel(close:FALSE);
    
      files = list_dir(basedir:winsxs, level:0, dir_pat:"microsoft.windows.gdiplus", file_pat:"^gdiplus\.dll$", max_recurse:1);
    
      vuln += hotfix_check_winsxs(os:'6.0', sp:2, files:files, versions:make_list('6.0.6002.18971', '6.0.6002.23256'), max_versions:make_list('6.0.6002.20000', '6.0.6002.99999'), bulletin:bulletin, kb:kb);
    }
    
    if (vuln)
    {
      set_kb_item(name:'SMB/Missing/'+bulletin, value:TRUE);
      hotfix_security_hole();
      hotfix_check_fversion_end();
      exit(0);
    }
    else
    {
      hotfix_check_fversion_end();
      audit(AUDIT_HOST_NOT, 'affected');
    }
    
  • NASL familyWindows
    NASL idSMB_KB2896666.NASL
    descriptionThe remote host is missing one of the workarounds referenced in KB 2896666. The remote host has a version of the Microsoft Graphics Component installed that is potentially affected by a code execution vulnerability due to the way the application handles specially crafted TIFF images.
    last seen2017-10-29
    modified2017-08-30
    plugin id70773
    published2013-11-06
    reporterTenable
    sourcehttps://www.tenable.com/plugins/index.php?view=single&id=70773
    titleMS KB2896666: Vulnerability in Microsoft Graphics Component Could Allow Remote Code Execution (deprecated)
    code
    #%NASL_MIN_LEVEL 999999
    
    #
    # (C) Tenable Network Security, Inc.
    #
    
    #@DEPRECATED@
    #
    # Disabled on 2013/12/11.  Deprecated by smb_nt_ms13-096.nasl
    
    include("compat.inc");
    
    if (description)
    {
      script_id(70773);
      script_version("1.11");
      script_cvs_date("Date: 2018/07/27 18:38:15");
    
      script_cve_id("CVE-2013-3906");
      script_bugtraq_id(63530);
      script_xref(name:"MSKB", value:"2896666");
    
      script_name(english:"MS KB2896666: Vulnerability in Microsoft Graphics Component Could Allow Remote Code Execution (deprecated)");
      script_summary(english:"Checks for Workaround");
    
      script_set_attribute(attribute:"synopsis", value:
    "The remote host is affected by a remote code execution
    vulnerability.");
      script_set_attribute(attribute:"description", value:
    "The remote host is missing one of the workarounds referenced in KB
    2896666. 
    
    The remote host has a version of the Microsoft Graphics Component
    installed that is potentially affected by a code execution vulnerability
    due to the way the application handles specially crafted TIFF images.");
      script_set_attribute(attribute:"see_also", value:"http://technet.microsoft.com/en-us/security/advisory/2896666");
      script_set_attribute(attribute:"solution", value:
    "Microsoft has provided a workaround for Windows Vista, 2008, Office
    2003, Office 2007, Office 2010, Office Compatibility Pack, Lync 2010 and
    Lync 2013.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:C/I:C/A:C");
      script_set_cvss_temporal_vector("CVSS2#E:H/RL:OF/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
      script_set_attribute(attribute:"metasploit_name", value:'Microsoft Tagged Image File Format (TIFF) Integer Overflow');
      script_set_attribute(attribute:"exploit_framework_metasploit", value:"true");
      script_set_attribute(attribute:"exploited_by_malware", value:"true");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2013/11/05");
      script_set_attribute(attribute:"plugin_publication_date", value:"2013/11/06");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:microsoft:windows");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:office");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:microsoft:office_compatibility_pack");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Windows");
    
      script_copyright(english:"This script is Copyright (C) 2013-2018 Tenable Network Security, Inc.");
    
      script_dependencies("office_installed.nasl", "smb_hotfixes.nasl", "microsoft_emet_installed.nasl");
      script_require_keys("SMB/Registry/Enumerated", "SMB/WindowsVersion");
      script_require_ports(139, 445);
      exit(0);
    }
    
    exit(0, "This plugin has been deprecated. Use smb_nt_ms13-096.nasl (plugin ID 71311) instead.");
    
    include("audit.inc");
    include("global_settings.inc");
    include("smb_hotfixes.inc");
    include("misc_func.inc");
    include("smb_func.inc");
    include("smb_hotfixes_fcheck.inc");
    include("smb_reg_query.inc");
    
    get_kb_item_or_exit('SMB/Registry/Enumerated', exit_code:1);
    vuln = FALSE;
    
    arch = get_kb_item_or_exit('SMB/ARCH', exit_code:1);
    if (arch == 'x64') extra = "\Wow6432Node";
    
    registry_init();
    hklm = registry_hive_connect(hive:HKEY_LOCAL_MACHINE, exit_on_fail:TRUE);
    
    # Check if the OS is Vista / 2008
    affected = FALSE;
    if (hotfix_check_sp_range(vista:'2') > 0) affected = TRUE;
    
    # Check for Office, Office Compat Pack, or Lync
    office_vers = hotfix_check_office_version();
    office = make_list();
    if (!affected && office_versions['11.0'])
    {
      sp = get_kb_item('SMB/Office/2003/SP');
      if (int(sp) == 3)
      {
        affected = TRUE;
        office = make_list(office, '11');
      }
    }
    if (!affected && office_versions['12.0'])
    {
      sp = get_kb_item('SMB/Office/2007/SP');
      if (int(sp) == 3)
      {
        affected = TRUE;
        office = make_list(office, '12');
      }
    }
    if (!affected && office_versions['13.0'])
    {
      office2010sp = get_kb_item('SMB/Office/2010/SP');
      if (int(office2010sp) == 1 || int(office2010sp) == 2)
      {
        affected = TRUE;
        office = make_list(office, '13');
      }
    }
    
    if (!affected && (get_kb_list('SMB/Office/WordViewer/*/ProductPath') || get_kb_list('SMB/Office/PowerPointViewer/*/ProductPath')))
      affected = TRUE;
    
    lync2010_path = get_registry_value(handle:hklm, item:'SOFTWARE'+extra+"\Microsoft\Communicator\InstallationDirectory");
    lync2010_att_admin_path = get_registry_value(handle:hklm, item:"SOFTWARE\Microsoft\AttendeeCommunicator\InstallationDirectory");
    lync2013_path = get_registry_value(handle:hklm, item:"SOFTWARE\Microsoft\Office\15.0\Lync\InstallationDirectory");
    
    if (!affected && (lync2010_path || lync2010_att_admin_path || lync2013_path)) affected = TRUE;
    
    if (!affected) exit(0, 'No affected operating systems or applications were found on the remote host.');
    
    # First check for the TIFF codec workaround
    ret = get_registry_value(handle:hklm, item:"SOFTWARE\Microsoft\Gdiplus\DisableTIFFCodec");
    if (!isnull(ret) && ret == 1) exit(0, 'The host is not affected since the \'DisableTIFFCodec\' workaround has been applied.');
    RegCloseKey(handle:hklm);
    close_registry();
    
    # Check for EMET
    emet_installed = FALSE;
    
    if (!isnull(get_kb_item("SMB/Microsoft/EMET/Installed")))
      emet_installed = TRUE;
    
    # Check if EMET is configured with Office, Lync, and
    # the Office compat pack
    emet_configured = make_array();
    wordviewers = get_kb_list('SMB/Office/WordViewer/*/ProductPath');
    pptviewers = get_kb_list('SMB/Office/PowerPointViewer/*/ProductPath');
    
    if (max_index(keys(office)) > 0)
    {
      for (i=0; i < max_index(office); i++)
      {
        item = office[i];
        if (path = get_kb_item('SMB/Office/Word/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
          emet_configured[path + "word.exe"] = FALSE;
        }
        if (path = get_kb_item('SMB/Office/Excel/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
          emet_configured[path + "excel.exe"] = FALSE;
        }
        if (path = get_kb_item('SMB/Office/Powerpoint/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
          emet_configured[path + "powerpoint.exe"] = FALSE;
        }
        if (path = get_kb_item('SMB/Office/Infopath/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
           emet_configured[path + "infopath.exe"] = FALSE;
        }
        if (path = get_kb_item('SMB/Office/Outlook/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
          emet_configured[path + "outlook.exe"] = FALSE;
        }
        if (path = get_kb_item('SMB/Office/Publisher/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
           emet_configured[path + "publisher.exe"] = FALSE;
         }
        if (path = get_kb_item('SMB/Office/Onenote/'+item+'.0/Path'))
        {
          path = str_replace(find:"\\", replace:'\\', string:path);
          emet_configured[path + "onenote.exe"] = FALSE;
        }
        foreach viewer (keys(wordviewers))
        {
          if ('WordViewer/'+item+'.0' >< viewer)
          {
            path = wordviewers[viewer];
            path = str_replace(find:"\\", replace:'\\', string:path);
            emet_configured[path + "wordview.exe"] = FALSE;
          }
        }
        foreach viewer (keys(pptviewers))
        {
          if ('PowerPointViewer/'+item+'.0' >< viewer)
          {
            path = pptviewers[viewer];
            path = str_replace(find:"\\", replace:'\\', string:path);
            emet_configured[path + "pptview.exe"] = FALSE;
          }
        }
      }
    }
    
    if (lync2010_path || lync2010_att_admin_path)
      emet_configured['communicator.exe'] = FALSE;
    
    if (lync2013_path)
      emet_configured['lync.exe'] = FALSE;
    
    emet_list = get_kb_list("SMB/Microsoft/EMET/*");
    if (!isnull(emet_list))
    {
      foreach entry (keys(emet_list))
      {
        foreach item (keys(emet_configured))
        {
          if (tolower(item) >< tolower(entry) && '/dep' >< entry)
          {
            dep = get_kb_item(entry);
            if (!isnull(dep) && dep == 1)
              emet_configured[item] = TRUE;
          }
        }
      }
    }
    
    # Check if any of the applications are not
    # configured with emet
    info = '';
    emet_info = '';
    if (!emet_installed)
    {
      emet_info =
        'Microsoft Enhanced Mitigation Experience Toolkit (EMET) is not' +
        '\ninstalled.\n';
    }
    else
    {
      foreach item (keys(emet_configured))
      {
        if (!emet_configured[item])
          info += '  Application : ' + item + '\n';
      }
      if (info)
      {
        emet_info =
          'Microsoft Enhanced Mitigation Experience Toolkit (EMET) is' +
          '\ninstalled, however the following applications are not configured' +
          '\nwith EMET :' +
          info;
      }
    }
    
    port = kb_smb_transport();
    
    if (report_verbosity > 0)
    {
      report =
        '\nThe remote host is missing the disable TIFF codec workaround.';
    
      if(emet_info)
        report += 'Further\nthe ' + emet_info;
      else report += '\n';
    
      security_hole(port:port, extra:report);
    }
    else security_hole(port);
    

Packetstorm

data sourcehttps://packetstormsecurity.com/files/download/124203/mswin_tiff_overflow.rb.txt
idPACKETSTORM:124203
last seen2016-12-05
published2013-11-27
reportersinn3r
sourcehttps://packetstormsecurity.com/files/124203/Microsoft-Tagged-Image-File-Format-TIFF-Integer-Overflow.html
titleMicrosoft Tagged Image File Format (TIFF) Integer Overflow

Seebug

bulletinFamilyexploit
descriptionNo description provided by source.
idSSV:83479
last seen2017-11-19
modified2014-07-01
published2014-07-01
reporterRoot
sourcehttps://www.seebug.org/vuldb/ssvid-83479
titleMicrosoft Tagged Image File Format (TIFF) Integer Overflow

The Hacker News