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

German support forum

Moderators: Stefan2, white, sheep, Hacker

matixx
Power Member
Power Member
Posts: 952
Joined: 2003-03-21, 02:37 UTC
Location: ....
Contact:

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

Post by *matixx » 2019-02-26, 18:57 UTC

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: 3377
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 » 2019-02-26, 19:05 UTC

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 10 Home x64 May 2019 Update, Version 1903 (OS Build 18362.295)
Intel(R) Core(TM) i7-4770 CPU @ 3.40GH, 16GB RAM
TC 9.22a x64 and x86, Everything 1.4.1.948 (x64)

matixx
Power Member
Power Member
Posts: 952
Joined: 2003-03-21, 02:37 UTC
Location: ....
Contact:

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

Post by *matixx » 2019-02-26, 19:53 UTC

Formal natürlich nicht. Aber schaust du jedesmal in den Header einer rar vorm entpacken ?

User avatar
Horst.Epp
Power Member
Power Member
Posts: 3377
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 » 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.
Windows 10 Home x64 May 2019 Update, Version 1903 (OS Build 18362.295)
Intel(R) Core(TM) i7-4770 CPU @ 3.40GH, 16GB RAM
TC 9.22a x64 and x86, Everything 1.4.1.948 (x64)

User avatar
HolgerK
Power Member
Power Member
Posts: 5075
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 » 2019-02-26, 22:55 UTC

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

matixx
Power Member
Power Member
Posts: 952
Joined: 2003-03-21, 02:37 UTC
Location: ....
Contact:

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

Post by *matixx » 2019-02-27, 06:05 UTC

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: 37485
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) » 2019-02-27, 13:38 UTC

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
http://www.ghisler.com

User avatar
deus-ex
Power Member
Power Member
Posts: 739
Joined: 2003-02-10, 17:45 UTC

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

Post by *deus-ex » 2019-02-27, 21:07 UTC

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.
Best regards
deus-ex

User avatar
deus-ex
Power Member
Power Member
Posts: 739
Joined: 2003-02-10, 17:45 UTC

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

Post by *deus-ex » 2019-02-27, 21:21 UTC

norfie² wrote:
2019-02-22, 11:57 UTC
UnRAR 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. 
Best regards
deus-ex

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 37485
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) » 2019-02-27, 21:38 UTC

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
http://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 » 2019-02-28, 20:00 UTC

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?
https://ghisler.ch/board/viewtopic.php?f=3&t=51949&p=352220#p352220

User avatar
norfie²
Power Member
Power Member
Posts: 820
Joined: 2006-02-10, 07:27 UTC

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

Post by *norfie² » 2019-03-01, 06:41 UTC

"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: 37485
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) » 2019-03-01, 07:55 UTC

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
http://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 » 2019-03-01, 15:39 UTC

@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