Författare
Gustaf Lovén
SOC @ Asurgent
Read time
1 min
11 oktober 2023
I samband med lanseringen av curl versionen 8.4.0 publicerar Daniel Stenberg från Curl tillsammans med Jay Satiro upptäckten av en sårbarhet. De delar denna information genom en säkerhetsrådgivning som inkluderar alla detaljer om sårbarheten, som är identifierad som CVE-2023-38545.
Curl har supportat SOCKS5 sedan augusti 2002. SOCKS5 är ett proxy-protokoll. Det är ett enkelt protokoll för att etablera nätverkskommunikation via en dedikerad "mellanhand". Protokollet används t.ex. när man ställer in kommunikation som ska gå igenom Tor, men det används också för att få tillgång till internet från organisationer och företag.
SOCKS5 har två olika lägen för namnuppslag. Antingen löser klienten värdnamnet lokalt och skickar vidare till rätt destination, eller så skickar klienten hela värdnamnet till Proxy tjänsten och låter själva Proxy tjänsten slå upp värdnamnet.
I början av 2020 beslutade Daniel Stenberg att personligen åta sig att lösa en långvarig problematik i Curl, att omvandla funktionen som ansluter till en SOCKS5-proxy från ett blockande anrop till en icke-blockande device. Detta är särskilt märkbart när en applikation utför stora mängder parallella överföringar som alla går genom SOCKS5 protokollet.
Den 14 februari 2020 är detta problem fixat och förändringen släpps i versionen 7.69.0 och som en följd av detta var det också den första versionen som var sårbar för sårbarhet CVE-2023-38545.
Denna sårbarhet innebär att curl orsakar en överbelastningsattack i en minnesbuffert baserad på heap-minnet under SOCKS5-handskakning. När curl får en begäran att skicka värdnamnet för uppslagning till SOCKS5-tjänsten i stället för att curl själv ska göra det, kan maximala längden för värdnamnet vara 255 bytes. Om curl upptäcker att värdnamnet är längre än 255 bytes, ändrar curl om till lokal namnupplösning och skickar i stället bara den lösta adressen till proxytjänsten. På grund av en bugg kan dock den lokala variabeln "let the host resolve the name" få fel värde under en långsam SOCKS5-handskakning mot sin avsikt, kopiera värdnamnet som är för långt, (mer än 255 bytes) till målbuferten istället för att bara kopiera den lösta adressen dit.
Många produkter och applikationer använder sig av curl/libcurl, som supportar SOCKS5 som Proxy alternativ, för att skicka och ta emot data via protokoll som HTTP, FTP, SMTP, SOCKS5 mm.
Här är en lista på några produkter som använder sig av libcurl och som potentiellt använder sig av SOCKS5:
Det är viktigt att notera att den specifika användningen av SOCKS5 kan variera från en produkt till en annan, och inte alla funktioner eller versioner av dessa applikationer stöder det.
Prenumerera på vårt nyhetsbrev för att ha koll på senaste nytt inom molnsfären.