← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2013-3900 · CWE-347 · Disclosed 2013-12-11

Why is Microsoft republishing a CVE from 2013?

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a tamper seal that still looks intact after someone stuffs new parts into the box

CVE-2013-3900 is a WinVerifyTrust / Authenticode signature-validation flaw in Windows. A signed portable executable can be modified by appending or abusing unverified data in the WIN_CERTIFICATE area without obviously breaking trust checks, which can let a malicious file still appear signed to vulnerable validation paths. Microsoft originally shipped code to tighten this in KB2893294 on 2013-12-10, but on supported Windows 10 and Windows 11 the protection is still opt-in via the EnableCertPaddingCheck registry setting rather than on by default.

Microsoft's MEDIUM 5.5 score reflects the important friction: this is not an Internet-facing service bug, it needs a crafted file and user or application execution. But in enterprise reality the vendor score undersells the risk because this CVE is KEV-listed, has a very high EPSS signal, and targets a trust boundary that defenders routinely lean on for software reputation, publisher rules, and install confidence. The republish in November 2024 was not a new bug; it was Microsoft clarifying that the control exists on currently supported Windows 10/11 and still must be explicitly enabled.

"KEV-listed trust bypass on Windows is not “just Medium,” but execution friction keeps it below Critical."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Prepare a signed PE carrier

The attacker starts with a legitimately signed PE or another signed carrier that vulnerable WinVerifyTrust paths will accept. Using custom PE-signing manipulation tooling or public research on Authenticode padding abuse, they place malicious data where legacy validation logic does not fully enforce strict padding rules. The result is a file that can still look signed on systems missing EnableCertPaddingCheck.
Conditions required:
  • Attacker can obtain, steal, or reuse a signed PE as a carrier
  • Target relies on embedded Authenticode trust evaluation
  • Target host has not enabled EnableCertPaddingCheck
Where this breaks in practice:
  • Requires PE/signing internals knowledge rather than commodity spray-and-pray exploitation
  • Many malware families never need this technique because unsigned loaders already work
  • Catalog-signed PE handling is a notable limitation; Microsoft's current documentation says the registry key does not affect WinVerifyTrust evaluation of catalog-signed PE files
Detection/coverage: Microsoft documents current Defender coverage with Exploit:Win32/CVE-2013-3900.G. Static scanners usually cannot prove exploitability from binaries alone; host-state checks for the registry hardening are more reliable.
STEP 02

Deliver the file

The crafted file still has to reach a user or a software distribution path. In practice that means phishing, drive-by download, remote management abuse, or a supply-chain style delivery where the signed appearance improves acceptance. This CVE is an execution amplifier, not an initial-access primitive by itself.
Conditions required:
  • Attacker can place or send a malicious file to the victim
  • User or software workflow will accept files from that channel
Where this breaks in practice:
  • Email security, web filtering, attachment detonation, and SmartScreen add real drag
  • A signed-looking file is helpful, but reputation and behavior engines still catch plenty of payloads
Detection/coverage: Mail gateways, browser/download protection, SmartScreen events, proxy logs, sandbox verdicts, and EDR file-prevalence telemetry are the right choke points.
STEP 03

Trigger execution on an un-hardened host

The victim or an application launches or installs the file, causing the relevant trust checks to run. On hosts where EnableCertPaddingCheck is absent or mis-set, WinVerifyTrust may accept the embedded signature despite the crafted padding abuse. That creates the opening for execution or for higher trust than the file deserves.
Conditions required:
  • User interaction or application execution path occurs
  • Embedded-signature validation path is used
  • Registry hardening is not correctly enabled
Where this breaks in practice:
  • This is not wormable and not unauthenticated remote
  • WDAC, AppLocker, ASR, and EDR behavior rules can still stop the binary after signature validation
  • User interaction is mandatory in the common case
Detection/coverage: Vulnerability scanners are good at registry-state checks. Execution telemetry should come from EDR, WDAC/AppLocker logs, Defender alerts, and process lineage from the launched PE.
STEP 04

Exploit trust to land payload impact

Once the malicious PE is accepted and run, the attacker gets whatever the launched code can do under that user's context: install malware, modify data, or stage follow-on access. The CVE's real value is that it can help a malicious file look trustworthy enough to pass softer policy or operator judgment. That matters most in phishing and software-delivery chains, not in direct Internet exploitation.
Conditions required:
  • Payload executes after trust decision
  • User privileges or local policy allow the next stage
Where this breaks in practice:
  • Impact is bounded by the execution context unless paired with another privilege escalation or administrative user
  • Modern EDR often catches post-launch behavior even if signature trust was initially misleading
Detection/coverage: Process creation, child-process spawning, unsigned memory loads, persistence writes, and Defender exploit-family alerts are the main post-execution signals.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusYes. CISA lists it in KEV as Microsoft WinVerifyTrust function Remote Code Execution, added 2022-01-10. Microsoft also maintains a current Defender detection family page for Exploit:Win32/CVE-2013-3900.G published 2025-05-20.
Why Microsoft republished itThe November 2024 republish was a documentation/coverage refresh, not a new flaw: Microsoft says it updated the Security Updates table and clarified that EnableCertPaddingCheck exists on all currently supported Windows 10 and Windows 11 builds but must be set.
Proof-of-concept availabilityPublic research and GitHub material exist. Exploit crafting is well understood in the Authenticode/PE-signing community, though this is not a one-click mass-exploitation bug. Public repos also exist for hardening and validation workflows.
EPSS0.76161 from your intel, which is extremely high for a CVE this old and consistent with it being more than archival noise. I did not verify the exact percentile from a primary EPSS response in this session.
KEV detailsKEV: YES. CISA catalog entry shows Date Added: 2022-01-10 and the federal due date was 2022-07-10.
CVSS splitMicrosoft CNA score is 5.5 / MEDIUM with CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N, which treats this as a local execution/trust issue. NVD and CISA ADP both score it 8.8 / HIGH, reflecting the practical RCE consequence once a crafted signed file is executed.
Affected versionsOriginally affected a broad Windows set from XP/Server 2003 through 8.1/Server 2012 R2 in MS13-098. Microsoft now explicitly says the supporting code for the opt-in stricter check is present on all currently supported Windows 10 and Windows 11, but the host remains exposed to this trust-bypass condition unless the registry control is enabled.
Fixed stateFor legacy supported-at-the-time platforms, Microsoft shipped KB2893294 on 2013-12-10. For modern Windows 10/11, there is no separate patch version to chase; the decisive control is EnableCertPaddingCheck set as a DWORD value of 1 in the required registry locations.
Scanning / exposure realityThis is not Internet-addressable in the normal sense. Shodan/Censys/FOFA-style external exposure counting is largely irrelevant because the vulnerable condition is a local OS trust-setting state, not a bannered network service. Your scanner or config-management platform is the right visibility plane.
Disclosure / reporterOriginally disclosed 2013-12-11. Microsoft credits Kingsoft Internet Security Center @ Kingsoft Internet Security Software Co. Ltd for reporting the vulnerability.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.4/10)

The single biggest reason this lands in HIGH is that it is KEV-listed on the most widely deployed desktop/server platform in the enterprise, which turns an old trust-bypass into a still-relevant malware delivery enhancer. It stays out of Critical because the chain still requires file delivery and execution on the endpoint; this is not an unauthenticated remote service exploit.

HIGH Vendor republish context and opt-in registry requirement
HIGH KEV-listed exploitation status
MEDIUM Exact prevalence of exploitable embedded-signature workflows in your estate

Why this verdict

  • Baseline up from vendor Medium: Microsoft's 5.5 assumes local execution plus user interaction, but that baseline underweights the fact that this bug sits on the Windows trust boundary and can make malware look acceptably signed.
  • Major upward adjustment for exploitation evidence: KEV status and a very high EPSS are strong evidence this is not museum glass; attackers have operational use for it.
  • Major upward adjustment for platform ubiquity: Almost every enterprise has a huge Windows footprint, so even a non-network bug can matter at scale when it degrades trust decisions on thousands of endpoints.
  • Downward adjustment for attacker position: The attacker still needs a malicious file to reach the user or software distribution path and then be executed. That implies phishing, download, supply chain, or some prior foothold rather than direct edge compromise.
  • Downward adjustment for reachable population: This is not exposed as an Internet service, so the reachable population is your endpoint base, not every routable host on the public Internet.
  • Downward adjustment for modern controls: SmartScreen, email gateways, web filtering, WDAC/AppLocker, ASR, and EDR all have chances to stop the chain before or after trust evaluation.

Why not higher?

It is not self-triggering, not wormable, and not a clean unauthenticated remote compromise. The attacker must deliver a crafted PE and get it executed on a host that lacks the registry hardening, and even then EDR or application control may still break the chain.

Why not lower?

A downgrade to Medium would ignore the two strongest real-world amplifiers: KEV-listed exploitation and the sheer size of the Windows enterprise install base. This flaw helps attackers abuse *trust*, and trust abuse is exactly the sort of thing that quietly improves malware success rates across large fleets.

05 · Compensating Control

What to do — in priority order.

  1. Enable strict certificate padding checks — Set EnableCertPaddingCheck as DWORD 1 under both HKLM\Software\Microsoft\Cryptography\Wintrust\Config and HKLM\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config, then reboot affected systems. Because this CVE is KEV-listed, deploy this immediately, within hours, not on the normal HIGH schedule.
  2. Hunt for drift and revert legacy REG_SZ values — Normalize historical REG_SZ deployments to the current documented DWORD form and continuously audit for hosts where one path is missing or set inconsistently. Do this immediately, within hours for exposed/high-value endpoints because scanner noise and half-remediation are common with this CVE.
  3. Tighten executable trust policy — Use WDAC, AppLocker, or equivalent allowlisting to reduce reliance on publisher trust alone and force stronger policy decisions than “it looks signed.” Prioritize Internet-reachable admin workstations, jump boxes, and high-risk user groups immediately, within hours as a compensating layer.
  4. Raise detection for signed-but-suspicious binaries — Tune EDR/AV to alert on newly seen signed binaries, unusual parent-child chains, suspicious installer launches, and Microsoft Defender detections related to Exploit:Win32/CVE-2013-3900.G. Because exploitation exists, those analytics should be raised immediately, within hours.
What doesn't work
  • Relying on monthly cumulative updates alone doesn't solve modern Windows 10/11 exposure here, because Microsoft says the supporting code is already present and the stricter behavior is still opt-in.
  • External attack-surface scanning doesn't meaningfully measure this risk, because the vulnerable state is a local registry/hardening condition, not a public network listener.
  • Assuming all 'signed' binaries are safe is exactly the failure mode this CVE exploits; signature presence by itself is not a sufficient control.
06 · Verification

Crowdsourced verification payload.

Run this on the target Windows host or through your management plane (Invoke-Command, SCCM, Intune, RMM). Example: powershell.exe -ExecutionPolicy Bypass -File .\Test-CVE-2013-3900.ps1. It needs only read access to HKLM, so standard user rights are usually enough, but admin context is better for remote fleet collection.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
# Test-CVE-2013-3900.ps1

# Checks whether CVE-2013-3900 hardening is correctly enabled.

# Output: VULNERABLE / PATCHED / UNKNOWN

# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN


$paths = @(
    'HKLM:\Software\Microsoft\Cryptography\Wintrust\Config',
    'HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config'
)

function Get-ValueInfo {
    param([string]$Path, [string]$Name)

    if (-not (Test-Path -LiteralPath $Path)) {
        return [pscustomobject]@{
            Path = $Path
            Exists = $false
            HasValue = $false
            Type = $null
            Value = $null
        }
    }

    try {
        $item = Get-Item -LiteralPath $Path -ErrorAction Stop
        $props = Get-ItemProperty -LiteralPath $Path -ErrorAction Stop
        $value = $props.$Name

        $kind = $item.GetValueKind($Name)
        return [pscustomobject]@{
            Path = $Path
            Exists = $true
            HasValue = $null -ne $value
            Type = $kind.ToString()
            Value = $value
        }
    }
    catch {
        return [pscustomobject]@{
            Path = $Path
            Exists = $true
            HasValue = $false
            Type = $null
            Value = $null
        }
    }
}

$results = foreach ($p in $paths) {
    Get-ValueInfo -Path $p -Name 'EnableCertPaddingCheck'
}

# PATCHED only when BOTH keys exist and BOTH are REG_DWORD == 1

$patched = $true
$unknown = $false
$notes = @()

foreach ($r in $results) {
    if (-not $r.Exists) {
        $patched = $false
        $notes += "Missing key: $($r.Path)"
        continue
    }

    if (-not $r.HasValue) {
        $patched = $false
        $notes += "Missing value: $($r.Path)\\EnableCertPaddingCheck"
        continue
    }

    if ($r.Type -ne 'DWord') {
        $patched = $false
        $unknown = $true
        $notes += "Unexpected type at $($r.Path): $($r.Type) value=$($r.Value)"
        continue
    }

    try {
        $intVal = [int]$r.Value
    }
    catch {
        $patched = $false
        $unknown = $true
        $notes += "Non-integer DWORD at $($r.Path): $($r.Value)"
        continue
    }

    if ($intVal -ne 1) {
        $patched = $false
        $notes += "DWORD not set to 1 at $($r.Path): $intVal"
    }
}

if ($patched) {
    Write-Output 'PATCHED'
    exit 0
}
elseif ($unknown) {
    Write-Output 'UNKNOWN'
    $notes | ForEach-Object { Write-Output $_ }
    exit 2
}
else {
    Write-Output 'VULNERABLE'
    $notes | ForEach-Object { Write-Output $_ }
    exit 1
}
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: treat this as a HIGH with a KEV override. That means patch / mitigate immediately, within hours for the control you can actually apply here: enable EnableCertPaddingCheck fleet-wide, verify both registry paths are present as DWORD 1, and reboot where required. Because this CVE is already exploited, don't wait for the normal noisgate mitigation SLA; move straight to immediate deployment on workstations, servers handling downloaded content, admin endpoints, and any high-risk user groups. For legacy systems where KB2893294 still matters, verify it; for supported Windows 10/11, the real remediation is the registry hardening itself. Close remaining stragglers inside the noisgate remediation SLA for HIGH findings, which is ≤ 180 days, but your practical goal on this one should be same-day risk reduction.

Sources

  1. Microsoft Security Update Guide - CVE-2013-3900
  2. Microsoft Security Bulletin MS13-098
  3. Microsoft Security Advisory 2915720
  4. Microsoft Learn - Understanding executable file signing
  5. NVD - CVE-2013-3900
  6. CISA Known Exploited Vulnerabilities - CVE-2013-3900
  7. Microsoft Security Intelligence - Exploit:Win32/CVE-2013-3900.G
  8. FIRST EPSS API
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.