Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-45806 — L'importazione remota di immagini di Penpot ha permesso a un editor di file autenticato di trasformare una normale funzionalità pratica dei media in una SSRF di origine backend poiché URL controllati dall'attaccante sono finiti in un percorso di recupero server che segue i reindirizzamenti senza filtraggio della destinazione. | Kitploit
Strumenti/GitHubGitHub/0xmrma/cve-2026-45806
Analisi delle VulnerabilitàExploitSicurezza WebPenetration TestingPaper e RicercaApprendimento e Formazione
GitHub0xmrma/cve-2026-45806

CVE-2026-45806

Vedi Repository
63 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

L'importazione remota di immagini di Penpot ha permesso a un editor di file autenticato di trasformare una normale funzionalità pratica dei media in una SSRF di origine backend poiché URL controllati dall'attaccante sono finiti in un percorso di recupero server che segue i reindirizzamenti senza filtraggio della destinazione.

Condividi

CVE-2026-45806

L'importazione remota di immagini di Penpot ha permesso a un editor di file autenticato di trasformare una normale funzionalità multimediale in una SSRF di origine backend, poiché URL controllati dall'attaccante sono finiti in un percorso di fetch del server che seguiva i redirect senza filtraggio della destinazione.

Introduzione

Ho trovato questo problema mentre analizzavo Penpot, la piattaforma open-source di collaborazione su design e codice, con una domanda molto specifica in mente:

Cosa succede quando uno strumento di design collaborativo permette a un utente di passare al backend un URL di un'immagine remota da scaricare?

In questo caso, quella domanda ha portato a un vero bug.

Il flusso di importazione di immagini remote di Penpot accettava un URL controllato dall'utente e faceva sì che il backend lo scaricasse dal contesto di rete del server senza imporre restrizioni sulla destinazione per target su loopback o rete privata. Il client HTTP condiviso seguiva anche automaticamente i redirect.

Questo ha trasformato una normale funzionalità multimediale in una primitiva SSRF di origine backend autenticata, portando infine a CVE-2026-45806.

Penpot: Penpot su GitHub
CVE: CVE-2026-45806
CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

Questo ha interessato Penpot. Sul suo sito ufficiale e nel media kit, Penpot si presenta come avente una base di utenti in crescita di oltre 1 milione e afferma che decine di migliaia di organizzazioni lo usano, tra cui Blender, Mozilla, Fedora, NTT Data, MIT, Société Générale, Cisco, Fujitsu, Indra e ByteDance.

photo0

Catena d'Attacco

editor di file autenticato -> URL di immagine remota controllato dall'attaccante -> create-file-media-object-from-url -> download-image del backend con redirect abilitati -> richiesta finale atterra su endpoint interno solo immagini -> SSRF di origine backend / raggiungibilità interna


Cosa Fa Penpot

Penpot è una piattaforma open-source di collaborazione su design e codice.

Gestisce cose come:

  • modifica collaborativa di file
  • flussi di lavoro di team e progetto
  • contenuti multimediali e risorse caricate
  • percorsi di rendering e anteprima
  • operazioni di design basate su browser supportate da elaborazione lato server

Ciò significa che il suo percorso di importazione multimediale si trova su un vero confine di fiducia.

La domanda importante qui non era se Penpot supporti l'importazione di immagini remote.

La vera domanda era:

Penpot limita dove il backend può connettersi quando un utente importa un'immagine remota?

In questo caso, non lo faceva.


Perché Questo Bug Valeva La Pena Di Essere Esaminato

Molte persone sottovalutano le funzionalità di importazione remota.

È un errore.

Nel momento in cui un'applicazione:

  • accetta un URL controllato dall'attaccante,
  • effettua la richiesta dal backend,
  • e trasforma quella richiesta in un normale flusso di lavoro del prodotto,

crea un vero confine di fiducia in uscita.

Questo era il problema qui.

Questo bug non riguardava il rendering delle immagini. Non riguardava l'archiviazione dei file. Non riguardava i normali controlli di permesso per la modifica di un file.

Era un classico fallimento di fiducia lato server:

  • un URL controllato dall'attaccante entrava nel sistema,
  • il backend lo scaricava direttamente,
  • i redirect erano consentiti,
  • e nessun controllo sulla destinazione era visibile nel percorso esaminato.

Questo è sufficiente per creare una vera vulnerabilità.


Il Confine Su Cui Mi Sono Concentrato

Non ho affrontato Penpot testando ciecamente metodi RPC casuali o cercando crash prima di tutto.

L'approccio più forte era identificare il confine di sicurezza più promettente.

Per Penpot, quello era l'importazione di media remoti.

Perché?

Perché questa funzionalità combina:

  • input di URL controllato dall'attaccante
  • richieste in uscita di origine backend
  • validazione del contenuto che avviene solo dopo che la richiesta è stata effettuata
  • un flusso di lavoro di design in cui gli scaricamenti riusciti vengono trattati come normali operazioni multimediali

Quello era il confine giusto da ispezionare.

Ed era esattamente dove viveva il bug.


Causa Radice

Il bug si riduce a una piccola catena di fiducia.

Nel frontend:

(defn upload-media-url
  [name file-id url]
  (rp/cmd!
   :create-file-media-object-from-url
   {:name name
    :file-id file-id
    :url url
    :is-local true}))

l'url controllato dall'utente viene inviato direttamente nella chiamata RPC.

Poi nel backend:

(sv/defmethod ::create-file-media-object-from-url
  ...
  [{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id file-id] :as params}]
  (files/check-edition-permissions! pool profile-id file-id)
  ...
  (let [_    (files/get-minimal-file cfg file-id)
        mobj (create-file-media-object-from-url cfg (assoc params :profile-id profile-id))])

e:

(defn- create-file-media-object-from-url
  [cfg {:keys [url name] :as params}]
  (let [content (media/download-image cfg url)

il backend verifica che il chiamante possa modificare il file di destinazione, quindi passa l'URL controllato dall'attaccante in media/download-image.

L'implementazione dello scaricamento è qui:

(defn download-image
  "Download an image from the provided URI and return the media input object"
  [{:keys [::http/client]} uri]
  ...
  (http/req! client
             {:method :get :uri uri}
             {:response-type :input-stream})

E il client HTTP condiviso è configurato come:

(http/build-client {:connect-timeout 30000
                    :follow-redirects :always}))

Questa è l'intera vulnerabilità:

  • l'attaccante controlla l'URL
  • il backend effettua la richiesta
  • i redirect vengono seguiti automaticamente
  • nessun filtro sulla destinazione viene applicato prima che la richiesta venga effettuata

Perché è sfruttabile

Perché l'attaccante ha bisogno solo di:

  • un account Penpot valido
  • permesso di modifica su un file
  • un target che restituisca contenuto immagine accettato

La catena d'attacco è semplice:

  • l'attaccante fornisce un URL
  • Penpot lo scarica dal backend
  • il primo hop può essere pubblico o apparentemente innocuo
  • il target del redirect può essere interno
  • se la risposta finale sembra un'immagine consentita, l'importazione viene completata

Questo è l'intero bug.


Cosa Rende Questo un Problema di Sicurezza, Non Solo un Comportamento Normale di Importazione Remota

La distinzione importante è dove avviene la richiesta.

La domanda non è:

"Penpot può importare immagini da URL?"

La vera domanda è:

"Un utente autenticato può far sì che il backend di Penpot si connetta a destinazioni interne a cui l'utente non dovrebbe poter accedere tramite l'applicazione?"

In questo caso, la risposta era sì.

Questo è importante perché c'è una differenza reale tra:

  • un browser che scarica un URL fornito dall'utente, e
  • il backend che scarica quell'URL dalla posizione di rete del server

La validazione delle immagini non rimuove quella differenza.

Riduce alcuni casi di esfiltrazione diretta, ma non rimuove la condizione SSRF né la violazione del confine di rete.


PoC

Ho validato questo problema con una prova locale controllata direttamente collegata al percorso di codice esaminato di Penpot.

L'obiettivo non era colpire infrastrutture di terze parti. L'obiettivo era provare l'esatta proprietà di sicurezza:

Scarica lo strumento