de nieuwe versie van de tool voor het verzenden en ontvangen van gegevens via het netwerk — , die flexibiliteit biedt bij het vormen van verzoeken met parameters zoals cookie, user_agent, referer en andere headers. cURL ondersteunt HTTP, HTTPS, HTTP/2.0, HTTP/3, SMTP, IMAP, POP3, Telnet, FTP, LDAP, RTSP, RTMP en andere netwerkprotocols. Tegelijkertijd is er een update uitgebracht voor de parallel ontwikkelde bibliotheek libcurl, die een API biedt voor het aanroepen van alle cURL-functies in programma's geschreven in talen zoals C, Perl, PHP, Python.
In deze nieuwe versie is er een optie toegevoegd: "—retry-all-errors" om opnieuw te proberen bij het uitvoeren van operaties na het optreden van fouten en zijn er twee kwetsbaarheden verholpen:
- kan een lokaal bestand in het systeem overschrijven wanneer verbinding wordt gemaakt met een door een aanvaller gecontroleerde server. Het probleem doet zich alleen voor bij gelijktijdig gebruik van de opties "-J" ("—remote-header-name") en "-i" ("—head"). De optie "-J" maakt het mogelijk om een bestand op te slaan met de naam die in de header is opgegeven,
"Content-Disposition". In het geval dat een bestand met die naam al bestaat, weigert het cURL-programma normaal gesproken het overschrijven, maar bij het gebruik van de optie "-i" wordt de logica van de controle verstoord en wordt het bestand overschreven (de controle vindt plaats bij het ontvangen van de body van de respons, maar bij de optie "-i" worden eerst de HTTP-headers weergegeven, waardoor deze al kunnen zijn opgeslagen voordat de body wordt verwerkt). Alleen de HTTP-headers worden in het bestand opgeslagen, maar de server kan in plaats van headers willekeurige gegevens teruggeven en die worden ook opgeslagen. - kan leiden tot een lek op de DNS-server van sommige toegangswachtwoorden voor de site (Basic, Digest, NTLM, enz.). Bij het gebruik van het '@'-symbool in het wachtwoord, dat ook als scheidingsteken in de URL wordt gebruikt, zal curl bij het uitvoeren van een HTTP-omleiding het deel van het wachtwoord na het '@'-symbool samen met het domein verzenden om de naam te bepalen. Bijvoorbeeld, als het wachtwoord 'passw@rd123' en de gebruikersnaam 'dan' is, zal curl de URL 'https://dan:passw@rd123@example.com/path' genereren in plaats van 'https://dan:passwrd123@example.com/path' en een verzoek indienen voor het oplossen van de host 'rd123@example.com' in plaats van 'example.com'.
Het probleem doet zich voor bij het inschakelen van ondersteuning voor relatieve HTTP-redirects (deze worden afgesloten via CURLOPT_FOLLOWLOCATION). In het geval van het gebruik van traditionele DNS kan de DNS-provider en een aanvaller, die in staat is om transit netwerktrafiek af te luisteren, informatie over een deel van het wachtwoord achterhalen (zelfs als het oorspronkelijke verzoek over HTTPS was, aangezien DNS-verkeer niet versleuteld is). Bij het gebruik van DNS-over-HTTPS (DoH) is de lekkage beperkt tot de DoH-operator.
Bron: opennet.ru
