Home Homebrew Rilasciato zftpd v1.2.1: il server FTP zero-copy in C ora con supporto...

Rilasciato zftpd v1.2.1: il server FTP zero-copy in C ora con supporto ChaCha20, resume upload e miglioramenti strutturali

170
0

Pubblicato un rapido ma significativo aggiornamento per zftpd, il server FTP open source sviluppato da seregonwar, che continua a evolversi con interventi mirati a rafforzarne stabilità, sicurezza ed efficienza operativa.

La nuova versione 1.2.1 non introduce semplici ritocchi superficiali, ma interviene in profondità sull’architettura del progetto, consolidando sia la componente di sicurezza sia l’affidabilità nei trasferimenti e nei processi di build.

Tra le novità più rilevanti spicca l’introduzione opzionale della cifratura ChaCha20 tramite AUTH XCRYPT, implementata sia nel canale di controllo sia in quello dati.

Si tratta di un passo importante sotto il profilo della sicurezza, perché consente di proteggere le comunicazioni con una cifratura moderna e leggera basata su chiave precondivisa.

La documentazione è stata aggiornata per spiegare nel dettaglio l’utilizzo della nuova modalità crittografica e le relative misure di salvaguardia, così da evitare configurazioni errate e garantire un impiego consapevole della funzione.

Sul fronte dei trasferimenti e dell’I/O, la versione 1.2.1 migliora in modo concreto la robustezza del servizio. Aggiunto inoltre il supporto al resume per gli upload tramite REST e STOR, permettendo di riprendere trasferimenti interrotti senza dover ricominciare da zero.

Anche il rate limiting è stato affinato per offrire un controllo più preciso sulla banda, mentre è stato introdotto un helper per la copia atomica dei file, utile per prevenire stati inconsistenti durante le operazioni su filesystem.

Il percorso veloce basato su sendfile è stato ulteriormente ottimizzato con un fallback più raffinato, così da mantenere performance elevate anche in scenari complessi. Inoltre è stato aumentato il numero massimo di sessioni simultanee supportate, rendendo il server più adatto a carichi di lavoro intensivi.

Importanti miglioramenti riguardano anche il sistema di build e gli strumenti di sviluppo. La selezione del target ora è case-insensitive, con normalizzazione automatica di opzioni come TARGET=PS5 o TARGET=PS4.

Il comando make test ora genera file .bin già “stripped” per PS4 e PS5 insieme agli ELF, semplificando le fasi di distribuzione e verifica. Non mancano correzioni legate alla build e interventi di sicurezza nell’integrazione dei moduli PAL alloc e scratch, a beneficio della stabilità complessiva.

Anche la documentazione è stata ampliata in modo sostanziale. Il README ora include l’elenco dei comandi FTP supportati, una panoramica su ZHTTP e note specifiche per le diverse piattaforme.

Aggiunta anche una guida interna alle API dedicata agli autori di moduli, con esempi di codice relativi a PAL, I/O, networking, logging e crittografia, rendendo il progetto più accessibile e strutturato anche per chi desidera contribuire attivamente allo sviluppo.

Seregonwar ha voluto ringraziare pubblicamente tutti i tester che hanno contribuito a raggiungere un livello così elevato di stabilità e velocità in tempi rapidi, con un ringraziamento speciale a M///Class per il supporto fornito durante le fasi di test.

Caratteristiche principali

  • Percorso dati zero-copy dove disponibile (fast path con sendfile; fallback su I/O bufferizzato quando attiva la cifratura).
  • I/O TCP robusto (gestione invii parziali, EINTR e buffer di invio consapevoli della backpressure).
  • Timeout per canali di controllo e dati + timeout di inattività della sessione.
  • Hardening dei percorsi (canonicalizzazione, blocco del traversal, safe-list opzionale per /dev, /proc, /sys).
  • Logging strutturato per sessione + statistiche (byte/file inviati e ricevuti).
  • Limitazione della velocità di trasferimento (token bucket, attivabile/disattivabile a compile-time).
  • Ripresa upload tramite REST + STOR; upload in append tramite APPE.
  • Cifratura opzionale ChaCha20 (AUTH XCRYPT) con chiave precondivisa (PSK).
  • Notifiche a schermo su PS4/PS5 (IP/porta e stato).
  • File explorer web ZHTTP opzionale (a compile-time, abilitato di default su PS4/PS5).

Comandi supportati

  • Autenticazione e controllo: USER, PASS, QUIT, NOOP.
  • Navigazione: CWD, CDUP, PWD.
  • Elenco file: LIST, NLST, MLSD, MLST (MLST minimale).
  • Trasferimento: RETR, STOR, APPE, REST.
  • Gestione file: DELE, RMD, MKD, RNFR, RNTO.
  • Connessione dati: PORT, PASV.
  • Informazioni: SIZE, MDTM, STAT, SYST, FEAT, HELP.
  • Parametri di trasferimento: TYPE, MODE, STRU.
  • Cifratura (opzionale): AUTH XCRYPT (ChaCha20 con chiave precondivisa PSK).

Esecuzione (Daemon) per Piattaforma

Linux

./build/linux/release/zftpd-linux--v<version>.elf

Opzioni utili (solo POSIX): -p <porta> e -d <directory_root>.

macOS

./build/macos/release/zftpd-macos-<arch>-v<version>

PS4

Richiede un payload loader (ad esempio WebKit/PPPwn/Netcat/GoldHEN). zftpd non richiede un HEN residente, ma deve essere avviato tramite loader/exploit.

  • Se il loader richiede un payload .bin: inviare build/ps4/release/zftpd-ps4-v<version>.bin.
  • Se il loader accetta ELF: è possibile scegliere tra build/ps4/release/zftpd-ps4-v<version>.bin e build/ps4/release/zftpd-ps4-v<version>.elf.

All’avvio viene mostrata una notifica con l’indirizzo IP e la porta.

PS5

Richiede un payload loader (etaHEN/Netcat o equivalente).

  • Se il loader richiede un payload .bin: inviare build/ps5/release/zftpd-ps5-v<version>.bin.
  • Se il loader accetta ELF: è possibile scegliere tra build/ps5/release/zftpd-ps5-v<version>.bin e build/ps5/release/zftpd-ps5-v<version>.elf.

All’avvio viene mostrata una notifica “started” insieme a FTP: <ip>:<port>.

Configurazione

La configurazione in fase di compilazione si trova in ftp_config.h. Macro utili:

    • FTP_DEFAULT_PORT (PS4/PS5 predefinita 2122, POSIX predefinita 2121)
    • FTP_MAX_SESSIONS
    • FTP_SESSION_TIMEOUT
    • FTP_TRANSFER_RATE_LIMIT_BPS / FTP_TRANSFER_RATE_BURST_BYTES
    • FTP_LOG_COMMANDS

Note

Se su PS4/PS5 compare il messaggio “payload already loaded”, significa che un’istanza è già attiva (deduplicazione). Il nuovo daemon tenterà di terminare la vecchia istanza e avviarne una nuova sulla porta FTP_DEFAULT_PORT:2122.

Se non riesce, proverà con la porta successiva (FTP_DEFAULT_PORT+1:2123) fino a un massimo di 9 porte consecutive.

Per test su host: make TARGET=linux test oppure make TARGET=macos test.

ZHTTP (Web File Explorer)

  • Cos’è: Interfaccia web leggera per navigare, scaricare e (opzionalmente) caricare file direttamente dal browser.
  • Abilitazione/disabilitazione: Attivo di default su PS4/PS5. Disattivato di default sulle altre piattaforme. È possibile forzare l’attivazione con ENABLE_ZHTTPD=1 oppure disattivarlo con ENABLE_ZHTTPD=0 in fase di build (esempio: make TARGET=ps5 ENABLE_ZHTTPD=0).
  • Impatto sulla build: Aggiunge i moduli HTTP (event_loop_kqueue, http_server, http_parser, http_response, http_api, http_csrf, http_resources).
  • Utilizzo: Dopo aver avviato il daemon, aprire http://<ip>:<port>/ (la porta coincide con quella FTP configurata). Viene mostrato un file explorer con breadcrumb, download diretto e — se compilato con ENABLE_WEB_UPLOAD=1 (abilitato insieme a ZHTTP) — un pulsante per l’upload.
  • Sicurezza: Pensato per scenari LAN/payload; non prevede autenticazione aggiuntiva oltre al contesto della rete locale. Mantenere la porta chiusa su WAN.

Changelog

Questa versione introduce la cifratura opzionale ChaCha20, migliora la robustezza dei trasferimenti (resume, limitazione della velocità, copia atomica), ottimizza i flussi di build/test e aggiorna la documentazione.

Modifiche principali

Crypto & Security

  • Aggiunto supporto AUTH XCRYPT (ChaCha20 con chiave precondivisa PSK) nei canali di controllo e dati.
  • Documentato l’utilizzo della crittografia e le relative misure di sicurezza.

Trasferimenti e I/O

  • Aggiunto supporto alla ripresa degli upload (REST + STOR) e migliorata la limitazione della velocità.
  • Introdotto un helper per la copia atomica dei file e perfezionato il fallback del fast path basato su sendfile.
  • Aumentato il numero massimo di sessioni per supportare carichi di lavoro più elevati.

Build e strumenti

  • La selezione del target ora non distingue tra maiuscole e minuscole (TARGET=PS5/PS4 normalizzato).
  • Il comando make test ora produce artefatti .bin “stripped” (PS4/PS5) insieme ai file ELF.
  • Correzioni alla build e miglioramenti di sicurezza nell’integrazione pal alloc/scratch.

Documentazione

  • README ampliato con l’elenco dei comandi FTP supportati, panoramica su ZHTTP e note sulle piattaforme.
  • Aggiunta una guida interna alle API per autori di moduli (PAL, I/O, networking, logging, crittografia) con esempi di codice.

Ringraziamenti

Un ringraziamento a tutti i tester che hanno contribuito a raggiungere un livello così elevato di stabilità e velocità costante. Senza il loro aiuto, zftpd non avrebbe ottenuto questi risultati in così poco tempo. Un ringraziamento speciale a M///Class!

Download zftpd v1.2.1

Linux (Debian)

  • zftpd-debian.elf
    SHA256: 6392d520c313cc7fb4109dae696075fadf1a5daa8d7fa35f11af000e84485e52

macOS (Apple Silicon / arm64)

  • zftpd-macos-arm64
    SHA256: 973fd2007594f33d143f74042847da354ce7950a3838195830e8d3c4a9486d2d

PS4

  • zftpd-ps4-v1.2.1.bin (Payload binario)
    SHA256: f47e8151e8c4d29f5023b63865bb1398ece1b48a8198c4d8335a23e18edcfbb4
  • zftpd-ps4-v1.2.1.elf (Formato ELF)
    SHA256: 76277da3997cceca5ec21e38035577907d9427bf598a30bb898d660150bb90b3

PS5

  • zftpd-ps5-v1.2.1.bin (Payload binario)
    SHA256: ef554b40d21987df42aab645ac1020785fcc74cb18d0da03d0c79906b6de5eca
  • zftpd-ps5-v1.2.1.elf (Formato ELF)
    SHA256: 8e48324296aff35a9cb574a21821868d672192636078ce7f7bba370686e9424d

Codice Sorgente

  • Source code (ZIP)
    Archivio contenente il codice completo del progetto aggiornato alla versione 1.2.1.

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-06-08 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.