| CURL software | |
|---|---|
curl -Ocurl -O
| |
| Genere | Gestore di download |
| Sviluppatore | Daniel Stenberg |
| Data prima versione | 1996 |
| Ultima versione | 8.23.0 (14 ottobre 2026) |
| Sistema operativo | Multipiattaforma |
| Linguaggio | C |
| Licenza | curl license (licenza libera) |
| Sito web | curl.se/ |
cURL (pronunciato "curl", /kɜːrl/) è un software che fornisce una libreria (libcurl) e una interfaccia da linea di comando (curl), utilizzabili per trasferire dati e file tramite numerosi protocolli. Il nome significa "Client per URL" ("Client for URL" in inglese).
La prima versione di cURL è stata pubblicata nel 1996. Il suo nome originariamente era httpget, diventato poi urlget, prima dell'adozione del nome attuale curl. L'autore e sviluppatore principale è lo sviluppatore svedese Daniel Stenberg, che ha creato questo software per automatizzare il recupero dei tassi di cambio valuta per gli utenti di IRC.
Da almeno il 2018, il progetto riceve donazioni tramite Open Collective, una piattaforma di crowdfunding open source.
Nel 2019 il progetto cURL ha raccolto fondi sufficienti per lanciare un programma di responsible disclosure tramite bug bounty, ovverosia un sistema di ricompensa economica per chi rileva vulnerabilità di sicurezza informatica confermate.
Il programma di bug bounty di cURL è durato in modo positivo per più di cinque anni, rilevando più di 80 vulnerabilità confermate ed erogando ricompense per più di 90 000 dollari al 2024-2025. Il progetto beneficiava di segnalazioni di alta qualità, anche grazie alla potenziale massima ricompensa di 10 000 dollari per segnalazione.
Dal 2024 al 2025 il progetto cURL assiste ad un aumento dei falsi positivi senza precedenti: arrivano decine di segnalazioni scritte in inglese impeccabile, e con dettagli tecnici molto convincenti, ma totalmente infondate. In alcuni casi "semplici" le false segnalazioni menzionano chiamate a porzioni di codice inesistente, ma in altri casi vi erano altri tipi di allucinazioni da intelligenza artificiale generativa difficili da rilevare, se non dopo ore di verifiche e test di riprodicibilità da parte della squadra di cURL.
Dal 2024 al 2026 questo fenomeno di falsi positivi è divenuto insostenibile per i manutentori di cURL, vissuto come un attacco informatico distribuito (distributed denial of service), descritto come tale in diversi contesti internazionali, per esempio con la dicitura «AI slop attacks on the curl project» (letteralmente "il minestrone di intelligenza artificiale attacca il progetto cURL").
A gennaio 2026, dopo aver ricevuto un'ulteriore sequenza di segnalazioni di sicurezza infondate generate da intelligenza artificiale («AI slop»), cURL interrompe il programma bug bounty.
libcurl è una libreria lato client per trasferimento dati tramite URL, che supporta cookie, DICT, FTP, FTPS, Gopher, HTTP/1 (con supporto per HTTP/2 e HTTP/3), HTTP POST, HTTP PUT, proxy tunneling HTTP, HTTPS, IMAP, Kerberos, LDAP, MQTT, POP3, RTSP, RTMP, SCP, SMTP, e SMB. La libreria supporta lo schema URI file, SFTP, Telnet, TFTP, ripresa del trasferimento del file, caricamento FTP, caricamento HTTP basato sui form, certificati HTTPS, LDAPS, proxy e autenticazione utente con password.
La libreria libcurl è portabile. Può essere compilato e funzionare in maniera identica su numerose piattaforme, come AIX, AmigaOS, Android, BeOS, BlackBerry Tablet OS e BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux, macOS, NetBSD, NetWare, OpenBSD, OS/2, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare, Microsoft Windows e OpenHarmony.
La libreria libcurl è open source, thread-safe e compatibile con IPv6. Sono disponibili associazioni per oltre 50 linguaggi, tra cui C/C++, Java, Julia (in bundle), PHP e Python.
La libreria libcurl supporta GnuTLS, mbed TLS, NSS, gskit su IBM i, SChannel su Windows, Secure Transport su macOS e iOS, SSL/TLS attraverso OpenSSL, BoringSSL, libreSSL, AmiSSL, wolfSSL, BearSSL e rustls.
curl è uno strumento da linea di comando per ottenere o inviare dati, inclusi file, usando una sintassi URL. Dato che curl utilizza libcurl, supporta tutti i protocolli supportati da libcurl.
curl supporta HTTPS e verifica di default i certificati SSL quando è specificato un protocollo sicuro, come HTTPS. Quando curl si connette ad un server remoto tramite HTTPS, riceve il certificato del server, e lo controlla tramite i suoi certificati CA per verificare che il server sia quello che dichiara di essere. Alcuni pacchetti di curl sono in bundle con file di certificati CA. Ci sono numerose opzioni per specificare un certificato CA, come --cacert e --capath. L'opzione --cacert può essere usata per specificare la posizione del file del certificato CA. Su Windows, se un file di certificato CA non è specificato, curl cercherà un certificato CA con nome “curl-ca-bundle.crt” nelle seguenti cartelle nell'ordine indicato:
%PATH%.curl genererà un messaggio di errore se il server remoto usa un certificato autofirmato, o se il server remoto non ha un certificato firmato da una CA presente nel file dei certificati CA. Le opzioni -k o --insecure possono essere usate per saltare la verifica del certificato. In alternativa, se il server remoto è fidato, il certificato CA del server può essere aggiunto al file dei certificati CA.
Un uso di base di curl richiede semplicemente scrivere curl sulla linea di comando, seguito dall'URL da richiedere:
$ curl www.example.com
curl di default mostra ciò che riceve dall'URL sullo standard output del sistema (solitamente la finestra del terminale). Quindi eseguire il comando qui sopra, sulla maggior parte dei sistemi, mostrerebbe il codice sorgente di www.example.com nella finestra del terminale. L'opzione -o può essere usata per memorizzare l'output in un file:
$ curl -o example.html www.example.com
Sono disponibili inoltre altre opzioni che modificano il comportamento di curl.