Vulnerabilities > CVE-2016-3320 - 7PK - Security Features vulnerability in multiple products

047910
CVSS 4.9 - MEDIUM
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
HIGH
Confidentiality impact
NONE
Integrity impact
HIGH
Availability impact
NONE
network
low complexity
microsoft
fedoraproject
CWE-254
nessus

Summary

Microsoft Windows 8.1, Windows Server 2012 Gold and R2, Windows RT 8.1, and Windows 10 Gold and 1511 allow attackers to bypass the Secure Boot protection mechanism by leveraging (1) administrative or (2) physical access to install a crafted boot manager, aka "Secure Boot Security Feature Bypass."

Common Weakness Enumeration (CWE)

Msbulletin

bulletin_idMS16-100
bulletin_url
date2016-08-09T00:00:00
impactSecurity Feature Bypass
knowledgebase_id3179577
knowledgebase_url
severityImportant
titleSecurity Update for Secure Boot

Nessus

  • NASL familyWindows : Microsoft Bulletins
    NASL idSMB_NT_MS16-100.NASL
    descriptionThe remote Windows host is missing a security update. It is, therefore, affected by a security bypass vulnerability in Secure Boot due to improper handling of malicious boot managers. An attacker with administrative privileges can exploit this vulnerability to bypass code integrity checks and load test-signed executables and drivers.
    last seen2020-06-01
    modified2020-06-02
    plugin id92822
    published2016-08-09
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/92822
    titleMS16-100: Security Update for Secure Boot (3179577)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(92822);
      script_version("1.10");
      script_cvs_date("Date: 2019/11/14");
    
      script_cve_id("CVE-2016-3320");
      script_bugtraq_id(92304);
      script_xref(name:"MSFT", value:"MS16-100");
      script_xref(name:"MSKB", value:"3172729");
      script_xref(name:"IAVB", value:"2016-B-0122");
    
      script_name(english:"MS16-100: Security Update for Secure Boot (3179577)");
      script_summary(english:"Checks the version of tpmtasks.dll.");
    
      script_set_attribute(attribute:"synopsis", value:
    "The remote Windows host is affected by a security bypass
    vulnerability.");
      script_set_attribute(attribute:"description", value:
    "The remote Windows host is missing a security update. It is,
    therefore, affected by a security bypass vulnerability in Secure Boot
    due to improper handling of malicious boot managers. An attacker with
    administrative privileges can exploit this vulnerability to bypass
    code integrity checks and load test-signed executables and drivers.");
      script_set_attribute(attribute:"see_also", value:"https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2016/ms16-100");
      script_set_attribute(attribute:"solution", value:
    "Microsoft has released a set of patches for Windows 2012, 8.1, RT 8.1,
    2012 R2, and 10. Alternatively, as a workaround, configure BitLocker
    to use Trusted Platform Module (TPM)+PIN protection or disable Secure
    Boot integrity protection of BitLocker per the vendor advisory.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:N/I:P/A:N");
      script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N");
      script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
      script_set_attribute(attribute:"cvss_score_source", value:"CVE-2016-3320");
    
      script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"false");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2016/08/09");
      script_set_attribute(attribute:"patch_publication_date", value:"2016/08/09");
      script_set_attribute(attribute:"plugin_publication_date", value:"2016/08/09");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:microsoft:windows");
      script_set_attribute(attribute:"stig_severity", value:"II");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Windows : Microsoft Bulletins");
    
      script_copyright(english:"This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
    
      script_dependencies("smb_hotfixes.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_hotfixes_fcheck.inc");
    include("smb_hotfixes.inc");
    include("smb_func.inc");
    include("smb_reg_query.inc");
    include("misc_func.inc");
    include("datetime.inc");
    
    get_kb_item_or_exit("SMB/MS_Bulletin_Checks/Possible");
    
    bulletin = 'MS16-100';
    kbs = make_list('3172729');
    rls_vuln = FALSE;
    vuln = FALSE;
    
    if (get_kb_item("Host/patch_management_checks")) hotfix_check_3rd_party(bulletin:bulletin, kbs:kbs, severity:SECURITY_WARNING);
    
    get_kb_item_or_exit("SMB/Registry/Enumerated");
    os_version = get_kb_item_or_exit("SMB/WindowsVersion", exit_code:1);
    local_arch = get_kb_item("SMB/ARCH");
    
    if(hotfix_check_sp_range(win8:'0', win81:'0', win10:'0') <= 0)
      audit(AUDIT_OS_SP_NOT_VULN);
    
    productname = get_kb_item_or_exit("SMB/ProductName", exit_code:1);
    if ("Windows 8" >< productname && "Windows 8.1" >!< productname)
      audit(AUDIT_OS_SP_NOT_VULN);
    
    systemroot = hotfix_get_systemroot();
    if (!systemroot) audit(AUDIT_PATH_NOT_DETERMINED, 'system root');
    
    # No file version to check in windows 10
    # So check registry to see if update was installed.
    if(os_version == "10")
    {
      registry_init();
      hklm = registry_hive_connect(hive:HKEY_LOCAL_MACHINE, exit_on_fail:TRUE);
    
      # Check release (10 base and 1511 are vuln, 1607 is not)
      key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion";
      release = NULL;
    
      key_h = RegOpenKey(handle:hklm, key:key, mode:MAXIMUM_ALLOWED);
      if (!isnull(key_h))
      {
        release = RegQueryValue(handle:key_h, item:'ReleaseId');
        if (!isnull(release)) release = release[1];
    
        RegCloseKey(handle:key_h);
      }
    
      if(release == "1511" || empty_or_null(release)) rls_vuln = TRUE;
    
      if(local_arch == "x64")
      {
        key="SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_1_for_KB3172729~31bf3856ad364e35~amd64~~10.0.1.1";
      }
      else
      {
        key="SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_1_for_KB3172729~31bf3856ad364e35~x86~~10.0.1.1";
      }
      key_h = RegOpenKey(handle:hklm, key:key, mode:MAXIMUM_ALLOWED);
      if (!isnull(key_h))
      {
        value = RegQueryValue(handle:key_h, item:'InstallName');
        if (!isnull(value)) entry = value[1];
    
        RegCloseKey(handle:key_h);
      }
    
      RegCloseKey(handle:hklm);
      NetUseDel(close:FALSE);
    
      if ("KB3172729" >< entry || !rls_vuln)
      {
        audit(AUDIT_HOST_NOT, 'affected');
      }
    
      vuln = TRUE;
      report = '\nKB3046269 is not installed on this Windows 10 System\n';
      hotfix_add_report(bulletin:bulletin, kb:"3172729", report);
    }
    if (
      # Windows 8.1 / Windows Server 2012 R2
      hotfix_is_vulnerable(os:"6.3", sp:0, file:"tpmtasks.dll", version:"6.3.9600.18408", dir:"\system32", bulletin:bulletin, kb:"3172729") ||
    
      # Windows Server 2012
      hotfix_is_vulnerable(os:"6.2", sp:0, file:"tpmtasks.dll", version:"6.2.9200.21926", dir:"\system32", bulletin:bulletin, kb:"3172729") ||
    
      vuln
    )
    {
      set_kb_item(name:'SMB/Missing/'+bulletin, value:TRUE);
      hotfix_security_warning();
      hotfix_check_fversion_end();
      exit(0);
    }
    else
    {
      hotfix_check_fversion_end();
      audit(AUDIT_HOST_NOT, 'affected');
    }
    
  • NASL familyFedora Local Security Checks
    NASL idFEDORA_2016-0F013AEE39.NASL
    descriptionThis is the update to add blacklist items for CVE-2016-3320 (Microsoft bootloaders). See https://support.microsoft.com/en-us/kb/3179577 for more details. Before applying,
    last seen2020-06-05
    modified2016-11-15
    plugin id94775
    published2016-11-15
    reporterThis script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/94775
    titleFedora 25 : dbxtool (2016-0f013aee39)
    code
    #%NASL_MIN_LEVEL 80502
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from Fedora Security Advisory FEDORA-2016-0f013aee39.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(94775);
      script_version("2.5");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/04");
    
      script_cve_id("CVE-2016-3320");
      script_xref(name:"FEDORA", value:"2016-0f013aee39");
      script_xref(name:"IAVB", value:"2016-B-0122");
    
      script_name(english:"Fedora 25 : dbxtool (2016-0f013aee39)");
      script_summary(english:"Checks rpm output for the updated package.");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote Fedora host is missing a security update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "This is the update to add blacklist items for CVE-2016-3320 (Microsoft
    bootloaders). See https://support.microsoft.com/en-us/kb/3179577 for
    more details.
    
    Before applying, 'dbxtool -l' should show something around 14 entries
    in dbx on UEFI systems (though possibly several fewer). After updating
    the package and rebooting, it should list something around 77.
    
    Note that Tenable Network Security has extracted the preceding
    description block directly from the Fedora update system website.
    Tenable has attempted to automatically clean and format it as much as
    possible without introducing additional issues."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://bodhi.fedoraproject.org/updates/FEDORA-2016-0f013aee39"
      );
      # https://support.microsoft.com/en-us/kb/3179577
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?a18c5b88"
      );
      script_set_attribute(
        attribute:"solution", 
        value:"Update the affected dbxtool package."
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:N/I:P/A:N");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fedoraproject:fedora:dbxtool");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:fedoraproject:fedora:25");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2016/08/09");
      script_set_attribute(attribute:"patch_publication_date", value:"2016/08/19");
      script_set_attribute(attribute:"plugin_publication_date", value:"2016/11/15");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_set_attribute(attribute:"stig_severity", value:"II");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"Fedora Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("global_settings.inc");
    include("rpm.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    release = get_kb_item("Host/RedHat/release");
    if (isnull(release) || "Fedora" >!< release) audit(AUDIT_OS_NOT, "Fedora");
    os_ver = pregmatch(pattern: "Fedora.*release ([0-9]+)", string:release);
    if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "Fedora");
    os_ver = os_ver[1];
    if (! preg(pattern:"^25([^0-9]|$)", string:os_ver)) audit(AUDIT_OS_NOT, "Fedora 25", "Fedora " + os_ver);
    
    if (!get_kb_item("Host/RedHat/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    cpu = get_kb_item("Host/cpu");
    if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
    if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "Fedora", cpu);
    
    
    flag = 0;
    if (rpm_check(release:"FC25", reference:"dbxtool-7-2.fc25")) flag++;
    
    
    if (flag)
    {
      security_report_v4(
        port       : 0,
        severity   : SECURITY_WARNING,
        extra      : rpm_report_get()
      );
      exit(0);
    }
    else
    {
      tested = pkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "dbxtool");
    }