Veraltete 7-zip Dateien von Drittanbietern, u.a. AMD per Script aktualisieren

MGFirewater

Commander
Registriert
Mai 2010
Beiträge
2.271
Hallo zusammen ich bin gerade bei Günther born auf die Info gestoßen, dass angeblich auch die Windows Defender 7zip.dll noch die gefährliche Version ist, die aktiv als Einfallstor genutzt werden kann.

Link

Code:
Aber mal bzgl. poiuz Powershell-Suche, es geht noch viel schlimmer:
C:\Program Files\AMD\AMDInstallManager\7z.dll 24.09
C:\Program Files\AMD\AMDInstallManager\7z.exe 24.09
C:\Program Files\AMD\CIM\Bin64\7z.dll 24.09
C:\Program Files\AMD\CIM\Bin64\7z.exe 24.09
C:\Program Files\AMD\CNext\CNext\7z.dll 24.09
C:\Program Files\AMD\CNext\CNext\7z.exe 24.09

OK soweit klar, aber nun
C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Dprt\x64\7z.dll 24.09

Per chatgpt habe ich mir ein Script erstellen lassen, dass u.a.alle alten AMD Versionen von 7-zip durch die vorher unter Programme installierte Version 25.10 ersetzt.

Link

Allerdings weiß chatgpt darauf hin, dass diese (angeblich) veralteten Versionen des MS Defender, MS signiert sind und nicht betroffen sein sollten.

Stimmt das?

Denn sowohl der Informatiker der bei Günther born berichtet hat, als auch chatgpt bestätigen, dass man die Dateien nicht ohne weiteres aktualisieren kann und besser die Finger davon lassen sollte.

Sollte derjenige aber Recht haben könnte das Problem ein neuer iloveyou Wurm ganz einfach ausbreiten
 
Die Datei ist tatsächlich von Microsoft digital signiert. Ich denke, wenn sie betroffen wäre, hätte sie MS schon längst getauscht.

Würde mir da nicht so große Gedanken machen.
 
  • Gefällt mir
Reaktionen: Tornhoof
Wird third party wohl nach und nach auch aktualisiert.
Bei AMD ist das so eine Sache.
Deren Chipset-Installer benötigt immer noch VBScript obwohl von Microsoft seit 10.2023 als deprecated markiert.
 
MGFirewater schrieb:
OK soweit klar, aber nun C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Dprt\x64\7z.dll 24.09


Das ist aber nicht die original 24.09 sondern diese Datei ist von Microsoft signiert.

Die 7z.dll im Ordner von 7zip von 25.1.0.0 ist vom 2025-08-03.
Die 7z.dll in dem Windows Defender Ordner ist vom 2025-10-16.

Bist du sicher das diese Datei von der von dir genannten Sicherheitslücke betroffen ist?
 
@JumpingCat at Eben das bin ich mir nicht. Gibt nur diese eine verlinkte Quelle.

Das chatgpt script ist auch fehlerhaft. Syntax error. Gemini hat es korrigiert. Das läuft gerade auf einem Intel Laptop zum testen. Findet aber nur die installierte Version. Das Defender Verzeichnis wird ignoriert von dem Script.
 
Zuletzt bearbeitet:
Was soll eigentlich das threat Szenario sein bei den AMD updater? Das der eine entsprechend angepasste ZIP Datei runterlädt, die Remote Code execution dann erlaubt?

Das erfordert ähnliche Kapazitäten wie das ausnutzen von dem Notepad++ updater, das also irgendeiner in der Kommunikation mit AMD eingreifen kann. Wenn das passiert, ist's sowieso vorbei, der AMD updater installiert Treiber mit entsprechenden Rechten auf deinem System. Da ist ein RCE das kleinste Problem.

Das mit dem Virenscanner von MS ist ein anderes Thema, aber den hätte MS schon gepatcht, wenn es das Problem gäbe.
 
Editierte Beitrag für alle die ihr System nach veralteten 7z.exe und 7z.dll checken möchten.
Stand 13.12.25 verwendet MS unter
C:\Program Files\Windows Defender Advanced Threat Protection\Classification\Dprt\x64
Tatsächlich noch die version 24.9. die Quelle hat also recht. Werde MS noch heute per Feedback hub darauf hinweisen.

JEDER Nutzer handelt selbstverantwortlich. Es ist eine REINE HILFESTELLUNG, um zu schauen, wo überall veraltete 7z.exe und 7z.dll auf dem eigenen rechner abliegen!

Möchte man die veralten Versionen von 7z.dll & 7z.exe nicht nur suchen, sondern NACH dem 1. Dryrun
OPTIONAL gegen die vorher unter c:\Progamme\7zip installierte aktuellste Version ersetzen.
MUSS man selbstständig das Script "scharfschalten" indem man $DryRun = $TRUE in $DryRun = $FALSE ändert!

Alle Windows-Systemverzeichnisse werden nur gescannt und von dem Script keinesfalls umgeschrieben!

Code:
# Führen Sie dieses Skript als Administrator aus, um maximale Ergebnisse zu erzielen!

$DryRun = $TRUE # AUF FALSE SETZEN, UM TATSÄCHLICH ZU AKTUALISIEREN

# CSV Logging im Scriptverzeichnis
# $PSScriptRoot funktioniert nur, wenn die Datei als .ps1 gespeichert und ausgeführt wird (z.B. .\script.ps1)
$LogFile = Join-Path $PSScriptRoot "7zip_audit_update_log.csv"
if (-not (Test-Path $LogFile)) {
    "Timestamp,Path,File,FoundVersion,RefVersion,Action,Result" |
        Out-File -FilePath $LogFile -Encoding UTF8
}

# Referenzpfad 7-Zip
$RefPath = Join-Path $env:ProgramFiles "7-Zip"

# Fallback: 32-Bit Pfad auf 64-Bit Systemen
if (-not (Test-Path $RefPath) -and (Test-Path ${env:ProgramFiles(x86)})) {
    $RefPath = Join-Path ${env:ProgramFiles(x86)} "7-Zip"
}

$RefDll = Join-Path $RefPath "7z.dll"
$RefExe = Join-Path $RefPath "7z.exe"

if (-not (Test-Path $RefDll)) {
    Write-Host "FEHLER: Referenz-7z.dll nicht gefunden! Bitte 7-Zip 25.01 installieren." -ForegroundColor Red
    exit 1
}

$RefVerDll = [version](Get-Item $RefDll).VersionInfo.FileVersion
Write-Host "Referenzversion: $RefVerDll" -ForegroundColor Cyan
Write-Host ""

# Defender / System Ausschlüsse für das Update
$Exclude = @(
    "C:\ProgramData\Microsoft\Windows Defender",
    "$env:ProgramFiles\Windows Defender",
    "$env:ProgramFiles\Windows Defender Advanced Threat Protection"
)

function IsExcluded {
    param($p)

    $pl = $p.ToLower()

    # Alles unter C:\Windows schützen, AUSSER C:\Windows\Temp
    if ($pl.StartsWith("c:\windows\") -and -not $pl.StartsWith("c:\windows\temp\")) {
        return $true
    }

    # Allgemeine Ausschlüsse prüfen
    foreach ($e in $Exclude) {
        if ($pl.StartsWith($e.ToLower())) { return $true }
    }

    return $false
}

# Suche mit robuster Fehlerbehandlung (Scope: C:\ und D:\)
$roots = @("C:\","D:\")
$patterns = @("7z.dll","7z.exe")
$files = @()

foreach ($root in $roots) {
    # Verwenden von Get-ChildItem in einem Try/Catch Block, um Abbrüche zu verhindern
    try {
        # Hier wird die Suche mit ErrorAction SilentlyContinue robuster, da Try/Catch drum herum ist
        $files += Get-ChildItem -Path $root -Recurse -File -Include $patterns -ErrorAction SilentlyContinue
    }
    catch {
        # KORRIGIERTE SYNTAX: Verwenden von "${root}"
        Write-Host "FEHLER beim Scannen von ${root}: $_. Suche geht weiter." -ForegroundColor Red
    }
}


# Hauptverarbeitungs-Schleife
foreach ($f in $files) {

    $path = $f.FullName
    $dir  = $f.DirectoryName
    $ver  = $f.VersionInfo.FileVersion # Version als String belassen, Konvertierung bei Vergleich
 
    # Stellen Sie sicher, dass die Version gültig ist, bevor Sie sie vergleichen (um Fehler bei leeren Versionen zu vermeiden)
    if ([string]::IsNullOrEmpty($ver)) {
        Write-Host "Pruefe: $path | Version: Keine Info"
        "$(Get-Date -Format s),$path,$f.Name,N/A,$RefVerDll,IGNORE,NO_VERSION_INFO" |
            Out-File -FilePath $LogFile -Append -Encoding UTF8
        Write-Host ""
        continue
    }

    Write-Host "Pruefe: $path | Version: $ver"

    if (IsExcluded $dir) {
        Write-Host " -> Ignoriert (geschuetztes Systemverzeichnis)" -ForegroundColor DarkGray
        "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,IGNORE,SYSTEM" |
            Out-File -FilePath $LogFile -Append -Encoding UTF8
    }
    elseif ($dir -eq $RefPath) {
        Write-Host " -> Referenzpfad (OK)"
        "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,REFERENCE,OK" |
            Out-File -FilePath $LogFile -Append -Encoding UTF8
    }
    # Hier findet der eigentliche Versionsvergleich statt, jetzt mit Type Casting
    elseif ([version]$ver -lt $RefVerDll) {
        Write-Host " !!! VERALTET" -ForegroundColor Yellow

        if ($DryRun) {
            Write-Host "     DRY-RUN (Keine Aenderung vorgenommen)"
            "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,DRYRUN,NO_CHANGE" |
                Out-File -FilePath $LogFile -Append -Encoding UTF8
        } else {
            $src = if ($f.Name -eq "7z.dll") { $RefDll } else { $RefExe }
            try {
                Copy-Item -Path $src -Destination $path -Force -ErrorAction Stop
                Write-Host "     AKTUALISIERT" -ForegroundColor Green
                "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,UPDATE,SUCCESS" |
                    Out-File -FilePath $LogFile -Append -Encoding UTF8
            }
            catch {
                Write-Host "     FEHLER BEIM UPDATE: $_.Exception.Message" -ForegroundColor Red
                "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,UPDATE,FAILED" |
                    Out-File -FilePath $LogFile -Append -Encoding UTF8
            }
        }
    }
    else {
        Write-Host " -> Aktuell oder neuer" -ForegroundColor Green
        "$(Get-Date -Format s),$path,$f.Name,$ver,$RefVerDll,OK,CURRENT" |
            Out-File -FilePath $LogFile -Append -Encoding UTF8
    }

    Write-Host ""
}
 
Zuletzt bearbeitet:
MGFirewater schrieb:
Per chatgpt habe ich mir ein Script erstellen lassen
Warum? Um Dateien auszutauschen braucht es kein Skript. Die Verzeichnisse und Dateien sind auch ohne Skript zugänglich.
Außerdem kann ChatGPT halluzinieren und falsche Informationen geben.

MGFirewater schrieb:
dass man die Dateien nicht ohne weiteres aktualisieren kann und besser die Finger davon lassen sollte.
So ist es.
Die Verzeichnisse des Defenders sind ohnehin durch den Manipulationsschutz gesperrt. Dort kannst du nicht eben mal mit einem Skript Dateien austauschen.

MGFirewater schrieb:
noch per Suche oder manuellen weg miitels Explorer ein Verzeichnis mit dem Namen finde

Also ich könnte sie jetzt unter zwei verschiedenen Systemen finden.
Eins mit Defender, eins mit anderen Antivirenprogramm (Defender deaktiviert).

Unbenannt.png
 
  • Gefällt mir
Reaktionen: MGFirewater
Zuletzt bearbeitet:
hab einen dryRun einbauen lassen dann kann man erst checken vor dem ersetzen

Screenshot 2025-12-13 092628.png
 
Frage, was ist den effektiv das Angriffszenario? Bei Defender ok, aber bei den Installer? Wer dem Installer modifizierte Zip zum ausführen bringt, hat doch bereits erhöhte Rechte. Wieso dann noch die Mühe und ein modifiziertes Zip? Auch wenn man die Online Nachgeladen Files manipulieren kann und sie ausgeführte werden, muss man nicht mehr auf die Lücke hoffen. Damit kann man bereits dann alles böse tun, was der ausführende Dienst/Nutzer kann (Bedenkt das Installer bereit erhöhte Rechte hat). Wo ist daher der Mehrwert von eurem Handeln?
 
  • Gefällt mir
Reaktionen: JumpingCat
@freestaler ich sehe da ein anderes problem.
jeder bösartigecode kann ddoch die veralte dll doch aktivieren.
z.b. die nvida 7zip.dll C:\Program Files\NVIDIA Corporation\NVIDIA App
ist ja nicht explitzt nur zum entpacken der nvida app updates. wenn man weiß wo sie liegt nutzt man einfach diese für einen angriff. statt die gefixte version unter C:\Program Files\7-Zip
 
@MGFirewater Wie soll das funktionieren? Du meinst es kommt ein Trojaner mit Admin Rechten vorbei und der sucht dann noch explizit danach? Das Angriffszenario ist doch das da der Benutzeraktion genau die fehlerhafte Version von 7zip aktiv selbst nutzen muss.
Oder nimmst du an das das Nvidia Software Paket manipuliert ist? Dann ist der Umweg über die dll auch maximal komisch wenn ich schon das ganze Nvidia Paket manipulieren kann.

Welches Art von Angriff rechtfertigt gerade diesen Aufwand? Das ist jetzt nicht negativ gemeint.
 
@MGFirewater, egal mit welchem Recht er kommt, nur mit dem Rechte mit dem er die 7z startet hat er auch. Ich sehe keine Ausweitung des Rechte in der Lücke. Solange der Angreifer die EXE startet hat er also exakt die Rechte schon. Anders ist dies wenn Dienst ABC mit hohen Rechte am laufen das Zip entpackt und du als User dem Dienst ein anderes Zip unterjubeln kannst und dann auch "springen" kannst an Orte die nicht gedacht sind. Dort kannst du dann Datei manipulieren die du sonst nicht könntest. Beim Treiber sehe das Problem nicht.

Denk mal weiter. Es würde bedeuten, dass die Datei auf jedes System einfach nur kopiert werden muss und ich habe die Höchste Rechte. Ohne das ich vorher hatte oder eine andere Lücke für das erweitern meinte Rechte nutze. Mir ist kein Fall bekannt in modernen System der so gelagert war. Üblicherweise greift man entweder etwas an, was mit höheren Rechten läuft oder man greift das an, was dir höheren Rechte gibt. 7z.dll die einfach irgendwo liegt, kann beides meines erachten nicht erfüllen.

Das unbedachte austauschen der Datei macht da eher mehr kaputt als es hilft. Evtl. hats dadurch jetzt nen Bug. Ich würde dies nicht tun.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TPD-Andy
Zurück
Oben