noua versiune a utilitarului pentru obținerea și trimiterea datelor prin rețea — , oferind posibilitatea de a forma interogări flexibile specificând parametri precum cookie, user_agent, referer și orice alte antete. cURL suportă HTTP, HTTPS, HTTP/2.0, HTTP/3, SMTP, IMAP, POP3, Telnet, FTP, LDAP, RTSP, RTMP și alte protocoale de rețea. De asemenea, a fost lansată o actualizare pentru biblioteca libcurl, care oferă API pentru utilizarea tuturor funcțiilor curl în programe scrise în limbaje precum C, Perl, PHP, Python.
Noua versiune include opțiunea „—retry-all-errors” pentru a face încercări repetate de a executa operațiuni în cazul apariției oricăror erori și au fost remediate două vulnerabilități:
- permetând suprascrierea unui fișier local în sistem atunci când se accesează un server controlat de atacatori. Problema se manifestă doar atunci când se folosesc simultan opțiunile „-J” („—remote-header-name”) și „-i” („—head”). Opțiunea „-J” permite salvarea fișierului cu un nume specificat în antetul
„Content-Disposition”. Daca un fișier cu acest nume există deja, programul curl refuză în mod standard să efectueze suprascrierea, dar în cazul în care opțiunea „-i” este activată, logica verificării este perturbată și fișierul este suprascris (verificarea se efectuează în etapa de primire a corpului răspunsului, dar cu opțiunea „-i” anteturile HTTP sunt afișate mai întâi și acestea sunt salvate înainte de a începe procesarea corpului răspunsului). Numai anteturile HTTP sunt scrise în fișier, dar serverul poate returna date arbitrare în loc de antete și acestea vor fi salvate. - poate duce la scurgeri pe serverul DNS a unor părți din parolele de acces pe site (Basic, Digest, NTLM etc.). Când se folosește simbolul „@” în parolă, care este de asemenea folosit ca separator al parolei în URL, în cazul unui redirecționare HTTP, curl va trimite partea parolei după simbolul „@” împreună cu domeniul pentru determinarea numelui. De exemplu, folosind parola „passw@rd123” și numele de utilizator „dan”, curl va genera URL-ul „https://dan:passw@rd123@example.com/path” în loc de „https://dan:passwrd123@example.com/path” și va trimite o solicitare pentru rezolvarea gazdelor „rd123@example.com” în loc de „example.com”.
Problema apare atunci când se activează suportul pentru redirecționările HTTP relative (acestea fiind dezactivate prin CURLOPT_FOLLOWLOCATION). În cazul utilizării DNS-ului tradițional, informații despre o parte din parolă pot fi obținute de furnizorul DNS și de atacatori care au capacitatea de a intercepta traficul de rețea în tranzit (chiar dacă solicitarea inițială a fost prin HTTPS, deoarece traficul DNS nu este criptat). Atunci când se aplică DNS-over-HTTPS (DoH), scurgerea este limitată la operatorul DoH.
Sursa: opennet.ro
