nicejade / markdown-online-editor

📝 基于 Vue2、Vditor,所构建的在线 Markdown 编辑器,支持绘制流程图、甘特图、时序图、任务列表、echarts 图表、五线谱,以及 PPT 预览、视频音频解析、HTML 自动转换为 Markdown 等功能。https://www.niceshare.site/
https://markdown.lovejade.cn/
MIT License
2.63k stars 357 forks source link

存在XSS漏洞 #7

Open Leeport opened 5 years ago

Leeport commented 5 years ago

存在XSS payload:

<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>
nicejade commented 5 years ago

@Leeport 嗯,好的,感谢提醒,这些安全性相关的,确实还没给予处理;会尽快修复类似漏洞。

88250 commented 4 years ago

这个问题 Vditor 已经修复,可以考虑同步一波。

nicejade commented 4 years ago

@88250 赞👍,将尽快同步。

fritx commented 4 years ago

@88250 发布了嘛?我引用的vditor@3.2.0 还是存在这个问题,可以弹出XSS

@nicejade 老哥,我最近做一个 https://coldemo.js.org/ 是一个demo gallery站点,今天把vditor和arya也加了进去,还望许可 😆

fritx commented 4 years ago

轩轩大

88250 commented 4 years ago

@fritx 麻烦给我一下 Markdown 原文,谢谢

fritx commented 4 years ago

@88250 https://github.com/nicejade/markdown-online-editor/issues/7#issue-476750687 就把楼主的这段粘贴进我的这个页面 https://coldemo.js.org/#/playground/vditor-rich.md 的editor里 能弹出XSS

页面里加载的是vditor@3.2.0 调用的.preview()方法 PS:我把vditor和arya也加了进去,还望许可 😆

fritx commented 4 years ago

调用的源码在这里 https://github.com/coldemo/gallery.code/blob/master/src/playground/codeTransform.ts#L95-L134 (https://github.com/coldemo/gallery.code/blob/master/src/playground/codeTransform.ts#L95-L136)

88250 commented 4 years ago

@fritx 分屏预览模式下默认没有开启过滤,可通过 vditor.lute.SetSanitize(true) 来开启。具体可参考 https://github.com/88250/lute/issues/51

fritx commented 4 years ago

赞,感谢,刚没仔细看到默认不开启,我试试

fritx commented 4 years ago

@88250 window.Lute (1.3.3) 没有这个方法,vditor (3.2.0)上也没lute这个引用

github code 搜 lute.setsanitize 只有一处go的结果,暂时没有其他js参考 https://github.com/search?q=lute.setsanitize&type=Code

Vanessa219 commented 4 years ago

@fritx

const vditor = new Vditor()
vditor.vditor.lute.SetSanitize
fritx commented 4 years ago

image

@Vanessa219 我引的vditor@3.2.0 截图里 new 出来的示例上 也不存在 viditor或lute这两个属性 而且我的场景只调了Vditor.preview这个静态方法 😅

Vanessa219 commented 4 years ago

@fritx https://github.com/Vanessa219/vditor/issues/376