ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

German support forum

Moderators: white, Hacker, Stefan2

User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *matixx »

Ist WinRar betroffen weil es ACE entpacken kann oder sind RAR-Archive genauso betroffen?

Gruss maat
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6450
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *Horst.Epp »

matixx wrote: 2019-02-26, 18:57 UTC Ist WinRar betroffen weil es ACE entpacken kann oder sind RAR-Archive genauso betroffen?

Gruss maat
RAR Archive haben damit nichts zu tun.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *matixx »

Formal natürlich nicht. Aber schaust du jedesmal in den Header einer rar vorm entpacken ?
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6450
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *Horst.Epp »

matixx wrote: 2019-02-26, 19:53 UTC Formal natürlich nicht. Aber schaust du jedesmal in den Header einer rar vorm entpacken ?
Du hast gefragt, ob RAR Archive betroffen sind, und das sind sie definitiv nicht !
Der Fall eine anderen Formats in einer umbenannten Datei hat damit nichts zu tun.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *HolgerK »

ghisler(Author) wrote: 2019-02-25, 14:58 UTC Ich habe die unacev2 dll gepatcht, so dass sie nicht mehr für den Fehler anfällig ist.
Danke.

Kann/darf man auch selber diese gepatchte unacev2.dll anderen Programmen unterschieben (also z.b XnView oder Winrar), indem man die von diesen Programmen installierte ungepatchte dlls mit der gepatchten überschreibt?
Zumindest präventiv solange man kein Update der anderen Programmherausgeber installiert, mit dem diese Lücke von den anderen Herstellern geschlossen wurde?

Gruss
Holger
Make our planet great again
User avatar
matixx
Power Member
Power Member
Posts: 1117
Joined: 2003-03-21, 02:37 UTC
Location: ....

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *matixx »

Horst.Epp wrote: 2019-02-26, 21:59 UTC
matixx wrote: 2019-02-26, 19:53 UTC Formal natürlich nicht. Aber schaust du jedesmal in den Header einer rar vorm entpacken ?
Du hast gefragt, ob RAR Archive betroffen sind, und das sind sie definitiv nicht !
Der Fall eine anderen Formats in einer umbenannten Datei hat damit nichts zu tun.

Stimmt, ich bitte vielmals um Entschuldigung, das kommt hoffentlich nie mehr vor :cry:

Ich halte fest: jede *.rar kann betroffen sein und damit betrifft es jede *.rar-Datei.

Einen wunderschönen Mittwoch noch und viele Grüße
Gruss
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *ghisler(Author) »

Kann/darf man auch selber diese gepatchte unacev2.dll anderen Programmen unterschieben
Ja, auf jeden Fall! Die alte unacev2.dll hat schon vorher versucht, ../ und ..\ aus Pfaden herauszufiltern, das aber nicht 100%ig geschafft. Mit meinem Patch bricht die DLL das Entpacken komplett ab, wenn ein Pfad ../ oder ..\ enthält. Normale Archive enthalten diese nicht, so dass es für die normale Benutzung keine Nachteile hat.

Die neue DLL erkennt man an Dateiversion 2.6.1.0 in den Metadaten (Alt+Enter).
Author of Total Commander
https://www.ghisler.com
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *deus-ex »

2ghisler(Author)

Habe soeben Unacev2.dll ins TC-Verzeichnis kopiert, da ich noch zwei von mir selbst erstellte ACE-Archive habe, die ich jetzt mal komfortabel via TC entpacken wollte, ohne den originalen Archivierer zu bemühen.

Da ich die 64-bit Version von TC auf Windows 10 64-bit einsetze, klappte dies aber nicht. Statt dessen bekomme ich eine Meldung präsentiert, dass für dieses Archivformat ein externes Packprogramm eingerichtet werden muss, was ich in diesem Zusammenhang als unglücklich erachte, da ja eine Entpackerbibliothek vorhanden ist. Ich habe dann TC 32-bit aufgerufen, mit dem das Entpacken dann einwandfrei gelang.

Kannst Du es einrichten, dass auch der TC 64-bit die Unacev2.dll aufruft, um ACE-Archive zu entpacken?

Soweit ich weiss, gibt es keine 64-bit Variante von Unacev2.dll. Marcel Lemke, der Autor vom closed-source Archiver ACE, ist vor etwa 10 Jahren einfach von der Bildfläche verschwunden, die letzte veröffentlichte Programmversion v2.69 stammt vom 08. November 2007.
User avatar
deus-ex
Power Member
Power Member
Posts: 969
Joined: 2003-02-10, 17:45 UTC

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *deus-ex »

norfie² wrote: 2019-02-22, 11:57 UTCUnRAR kann wahrscheinlich auch gar keine ACE-Archive entpacken.
Laut beiliegender Dokumentation kann die UnRAR.dll lediglich RAR-Archive entpacken.

Auszug aus Introduction.htm [sic]:

Code: Select all

UnRAR.dll is Windows dynamic-link library, which provides file extraction. from RAR archives. 
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *ghisler(Author) »

Kannst Du es einrichten, dass auch der TC 64-bit die Unacev2.dll aufruft, um ACE-Archive zu entpacken?
Leider nein, es gibt nur eine 32-bit-Version. Man kann aber ace32.exe aufrufen (Konfigurieren - Einstellungen - Packer), und es hat nicht diese Sicherheitslücke.
Author of Total Commander
https://www.ghisler.com
infinity
Junior Member
Junior Member
Posts: 4
Joined: 2019-02-28, 17:58 UTC

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *infinity »

ghisler(Author) wrote: 2019-02-25, 14:58 UTC Ich habe die unacev2 dll gepatcht, so dass sie nicht mehr für den Fehler anfällig ist. Dabei bricht die DLL den Entpackvorgang sofort ab, wenn Sie die Zeichenkette ../ oder ..\ im Pfadnamen findet. Dabei werden fälschlicherweise auch Verzeichnisse mit Namen "test.." als gefährlich erkannt. Da solche Namen aber normalerweise nicht unter Windows vorkommen, ist das besser als die Sicherheitslücke.

Download hier:
https://www.totalcommander.ch/win/unacev2_fixed.zip

Installation: Im Total Commander auf unacev2_fixed.zip doppelklicken.
Darf ich fragen, wie du die DLL patchen konntest? WinRAR hat ja als Begründung gebracht, dass ihnen die Sourcen fehlen und daher die Lücke nicht behoben werden könne (daher komplett Support gestrichen).

Ich habe zu dem Thema im englischen Thread was geschrieben und hoffe, dass Du (@ghisler) vielleicht was dazu sagen kannst?
viewtopic.php?f=3&t=51949&p=352220#p352220
User avatar
norfie²
Power Member
Power Member
Posts: 986
Joined: 2006-02-10, 07:27 UTC

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *norfie² »

"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48021
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *ghisler(Author) »

Darf ich fragen, wie du die DLL patchen konntest?
Auf der folgenden Seite ist der Fehler sehr genau beschrieben. Nur deshalb war es mir möglich, die DLL zu patchen:
https://research.checkpoint.com/extracting-code-execution-from-winrar/
Der Fehler liegt in der Funktion "CleanPath", die auf obiger Seite als Pseudocode beschrieben ist, besonders diese Zeile:

Code: Select all

PathTraversalPos = strstr(Path,"..\\");
Ich habe dann einen X86-Code-Disassembler heruntergeladen und die DLL darin geladen. Dann habe ich nach der Zeichenkette ..\ gesucht. Leider nicht gefunden. Also im Lister nach ..\ gesucht -> gefunden! Im Umfeld gab es einige weitere Strings, z.B. %s%s. Diesen habe ich dann auch im Disassembler gefunden. Daneben gab es dann auch die gesuchte Zeichenkette ..\ , die aber nicht als String erkannt wurde. Diese habe ich dann manuell als String definiert. Dann habe ich nach Orten gesucht, wo dieser String benutzt wird.

Das sah so aus:

Code: Select all

  		mov	edx,L004113A8  # load address of "..\"
  		mov	eax,ecx
  		call	strstr         # call PathTraversalPos = strstr(Path,"..\\");
  		mov	ecx,eax
  		test	eax,eax
  		jz 	L0040CC0E      # not found: skip the loop: while ( PathTraversalPos ) 
Unterhalb dieser Zeilen kam dann der Code, der vergeblich versuchte, die "..\"-Fragmente erfolgreich zu entfernen. Ich habe den Code dann nach dem Rücksprung der Funktion durchsucht. Der sieht etwa so aus:

Code: Select all

		mov eax,FFFFFFFFh
		pop	esi
		pop	edx
		pop	ecx
		pop	ebx
		retn
Das Register eax erhält den Wert -1 (FFFFFFFFh ist -1 in hexadezimal) für Fehler, dann werden gesicherte Register der vorherigen Funktion wiederhergestellt (pop xy), und mit "retn" wird zur vorherigen Funktion zurückgesprungen. Diesen Rücksprung habe ich dann direkt an den Anschluss von "jz L0040CC0E" oben in die DLL geschrieben, indem ich die passenden Bytes herausgesucht und mit einem Hexeditor an die richtige Adresse geschrieben habe:

Code: Select all

B8 FF FF FF FF  mov eax,FFFFFFFFh
5E  		pop	esi
5A  		pop	edx
59  		pop	ecx
5B  		pop	ebx
C3  		ret
patchen: B8 FF FF FF FF 5E 5A 59 5B C3
Dadurch wird bei Erkennung der Zeichenkette "..\" sofort abgebrochen, anstatt zu versuchen, den Pfad zu bereinigen.

Zusätzlich habe ich noch die DLL-Version und das Datum gepacht, damit man sie als die neuere erkennen kann.
Author of Total Commander
https://www.ghisler.com
infinity
Junior Member
Junior Member
Posts: 4
Joined: 2019-02-28, 17:58 UTC

Re: ACE-Format: Kritische Lücke in WinRAR erst nach 14 Jahren entdeckt

Post by *infinity »

@ghisler
Wow, vielen lieben Dank für diese super ausführliche Erklärung! Das klingt alles auf jeden Fall ziemlich vielversprechend und vor allem beruhigend. Dann kann ich wohl meine alte WinRAR-Version einfach mit deiner dll weiternutzen.

Vielen Dank nochmal und ein schönes Wochenende :)
Post Reply