- -

Árbol de páginas

Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Advertencia
ProductosVersiones vulnerables

Microsoft .NET Framework 2.0
Microsoft .NET Framework 3.0
Microsoft .NET Framework 3.5

 De 2.0.0 (incluido) a 3.0.50727.8976 (no incluido)

Microsoft .NET Framework 3.5.1

Anteriores a 3.0.30729.8959 (no incluido)

Microsoft .NET Framework 4.6.2
Microsoft .NET Framework 4.7
Microsoft .NET Framework 4.7.1
Microsoft .NET Framework 4.7.2

De 4.7.0 (incluido) a 4.7.04081.03 (no incluido)

Microsoft .NET Framework 4.8
Microsoft .NET Framework 3.5 AND 4.8

De 4.8.0 (incluido) a 4.8.04690.02 (no incluido)

Microsoft .NET Framework 4.8.1
Microsoft .NET Framework 3.5 AND 4.8.1

De 4.8.0 (incluido) a 4.8.09214.01 (no incluido)

Microsoft .NET Framework 3.5 AND 4.6/4.6.2

10.0.0 (incluido) a 10.0.10240.20402 (no incluido)


Comprobación de versiones vulnerables con script de Powershell realizado por ChatGPT. (¡ADVERTENCIA! revisad los resultados, no se ha verificado si ofrece resultados correctos).

Bloque de código
languagepowershell
titleComprueba_CVE-2024-29059.ps1
# Función para obtener versiones instaladas desde el registro
function Get-DotNetVersions {
    $dotNetVersions = @()
    $ndpBaseKey = "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP"

    Get-ChildItem -Path $ndpBaseKey -Recurse |
    Where-Object { $_.GetValue("Version") -or $_.GetValue("Release") } |
    ForEach-Object {
        $version = $_.GetValue("Version")
        $release = $_.GetValue("Release")
        $installPath = $_.PSPath
        $keyName = $_.Name -replace '.*\\NDP\\', ''

        if ($version) {
            $dotNetVersions += [PSCustomObject]@{
                Key        = $keyName
                Version    = $version
                Release    = $release
                Path       = $installPath
            }
        }
    }

    return $dotNetVersions
}

# Comprobación contra rangos vulnerables
function Check-VulnerableVersion($versionObj) {
    $results = @()
    $ver = [version]$versionObj.Version

    switch -Wildcard ($versionObj.Key) {
        "v2.0*" {
            if ($ver -ge [version]"2.0.0" -and $ver -lt [version]"3.0.50727.8976") {
                $results += "❌ $($versionObj.Key) versión $ver es vulnerable (rango: 2.0.0 - 3.0.50727.8976)"
            }
        }
        "v3.0*" {
            if ($ver -ge [version]"2.0.0" -and $ver -lt [version]"3.0.50727.8976") {
                $results += "❌ $($versionObj.Key) versión $ver es vulnerable (rango: 2.0.0 - 3.0.50727.8976)"
            }
        }
        "v3.5" {
            if ($ver -ge [version]"10.0.0" -and $ver -lt [version]"10.0.10240.20402") {
                $results += "❌ .NET 3.5 versión $ver es vulnerable (rango: 10.0.0 - 10.0.10240.20402)"
            } elseif ($ver -lt [version]"3.0.30729.8959") {
                $results += "❌ .NET 3.5.1 versión $ver es vulnerable (< 3.0.30729.8959)"
            }
        }
        "v4\Full" {
            # Usar Release para versiones 4.x
            $release = $versionObj.Release
            if ($release) {
                # Obtener versión por Release
                $versionInfo = switch ($release) {
                    { $_ -ge 533325 } { "4.8.1" }
                    { $_ -ge 528040 } { "4.8" }
                    { $_ -ge 461814 } { "4.7.2" }
                    { $_ -ge 461308 } { "4.7.1" }
                    { $_ -ge 460798 } { "4.7" }
                    { $_ -ge 394802 } { "4.6.2" }
                    default { "Desconocida" }
                }

                # Rango 4.7.0 a 4.7.04081.03
                if ($release -ge 460798 -and $release -lt 528040) {
                    $results += "❌ .NET Framework 4.x (Release $release) versión $versionInfo es vulnerable (rango 4.7.0 a 4.8 sin parche)"
                }

                # Rango 4.8.0 a 4.8.04690.02
                if ($versionInfo -eq "4.8" -and $release -lt 528040) {
                    $results += "❌ .NET 4.8 versión $versionInfo (release $release) es vulnerable (< 4.8.04690.02)"
                }

                # Rango 4.8.0 a 4.8.09214.01
                if ($versionInfo -eq "4.8.1" -and $release -lt 533325) {
                    $results += "❌ .NET 4.8.1 versión $versionInfo (release $release) es vulnerable (< 4.8.09214.01)"
                }
            }
        }
    }

    if ($results.Count -eq 0) {
        return "✅ $($versionObj.Key) versión $($versionObj.Version) no es vulnerable"
    } else {
        return $results
    }
}

# Ejecutar comprobación
Write-Host "🔎 Comprobando versiones de .NET Framework instaladas..." -ForegroundColor Cyan
$versions = Get-DotNetVersions

foreach ($v in $versions) {
    $results = Check-VulnerableVersion -versionObj $v
    if ($results -is [array]) {
        $results | ForEach-Object { Write-Host $_ -ForegroundColor Red }
    } else {
        Write-Host $results -ForegroundColor Green
    }
}


Comprobación de la versión de net framework instalada

...