CVE-2018-1000534 (JavaScript, published 2018-06-26T16:29Z)
Description: value: Joplin version prior to 1.0.90 contains a XSS evolving into code execution due to enabled nodeIntegration for that particular BrowserWindow instance where XSS was identified from vulnerability in Note content field - information on the fix can be found here https://github.com/laurent22/joplin/commit/494e235e18659574f836f84fcf9f4d4fcdcfcf89 that can result in executing unauthorized code within the rights in which the application is running. This attack appear to be exploitable via Victim synchronizing notes from the cloud services or other note-keeping services which contain malicious code. This vulnerability appears to have been fixed in 1.0.90 and later.
Severity: MEDIUM (CVSS v3 base score: 6.1)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/laurent22/joplin
Files changed:
README.md
ReactNativeClient/lib/MdToHtml.js
docs/index.html
Commit message: Electron: Resolves #500: Fixed XSS security vulnerability


Vulnerable code:
			html: true,
<td>Hrvoje Mandić <a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#116;&#x72;&#98;&#117;&#104;&#x6f;&#109;&#64;&#110;&#x65;&#116;&#x2e;&#104;&#114;">&#116;&#x72;&#98;&#117;&#104;&#x6f;&#109;&#64;&#110;&#x65;&#116;&#x2e;&#104;&#114;</a></td>
<td>Lukas Helebrandt <a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#108;&#x75;&#x6b;&#97;&#x73;&#x40;&#x61;&#x69;&#121;&#97;&#46;&#x63;&#x7a;">&#108;&#x75;&#x6b;&#97;&#x73;&#x40;&#x61;&#x69;&#121;&#97;&#46;&#x63;&#x7a;</a></td>
<td>Philipp Zumstein <a href="&#x6d;&#97;&#x69;&#108;&#x74;&#x6f;&#x3a;&#122;&#x75;&#x70;&#104;&#105;&#108;&#105;&#x70;&#64;&#103;&#109;&#97;&#x69;&#x6c;&#46;&#x63;&#111;&#x6d;">&#122;&#x75;&#x70;&#104;&#105;&#108;&#105;&#x70;&#64;&#103;&#109;&#97;&#x69;&#x6c;&#46;&#x63;&#111;&#x6d;</a></td>
<td>Fernando Martín <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#102;&#64;&#x6d;&#114;&#116;&#x6e;&#x2e;&#101;&#115;">&#102;&#64;&#x6d;&#114;&#116;&#x6e;&#x2e;&#101;&#115;</a></td>
<td>Marcos Lans <a href="&#x6d;&#97;&#x69;&#108;&#116;&#111;&#58;&#x6d;&#97;&#114;&#99;&#111;&#x73;&#108;&#x61;&#110;&#x73;&#103;&#97;&#x72;&#122;&#97;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#x63;&#111;&#109;">&#x6d;&#97;&#114;&#99;&#111;&#x73;&#108;&#x61;&#110;&#x73;&#103;&#97;&#x72;&#122;&#97;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#x63;&#111;&#109;</a></td>
<td>Renato Nunes Bastos <a href="&#x6d;&#x61;&#105;&#108;&#116;&#111;&#58;&#x72;&#x6e;&#x62;&#97;&#x73;&#116;&#x6f;&#x73;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#46;&#x63;&#x6f;&#109;">&#x72;&#x6e;&#x62;&#97;&#x73;&#116;&#x6f;&#x73;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#46;&#x63;&#x6f;&#109;</a></td>
<td>Artyom Karlov <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#111;&#x3a;&#97;&#114;&#116;&#x79;&#x6f;&#x6d;&#x2e;&#x6b;&#97;&#x72;&#x6c;&#x6f;&#x76;&#64;&#x67;&#x6d;&#97;&#105;&#x6c;&#x2e;&#x63;&#111;&#109;">&#97;&#114;&#116;&#x79;&#x6f;&#x6d;&#x2e;&#x6b;&#97;&#x72;&#x6c;&#x6f;&#x76;&#64;&#x67;&#x6d;&#97;&#105;&#x6c;&#x2e;&#x63;&#111;&#109;</a></td>

Fixed code:
## HTML support

Only the `<br>` tag is supported - it can be used to force a new line, which is convenient to insert new lines inside table cells. For security reasons, other HTML tags are not supported.

			html: false, // For security, HTML tags are not supported - https://github.com/laurent22/joplin/issues/500
		// Support <br> tag to allow newlines inside table cells
		renderedBody = renderedBody.replace(/&lt;br&gt;/gi, '<br>');

<h2 id="html-support">HTML support</h2>
<p>Only the <code>&lt;br&gt;</code> tag is supported - it can be used to force a new line, which is convenient to insert new lines inside table cells. For security reasons, other HTML tags are not supported.</p>
<td>Hrvoje Mandić <a href="&#109;&#x61;&#105;&#x6c;&#116;&#x6f;&#x3a;&#116;&#x72;&#x62;&#x75;&#x68;&#111;&#x6d;&#x40;&#x6e;&#x65;&#116;&#46;&#x68;&#x72;">&#116;&#x72;&#x62;&#x75;&#x68;&#111;&#x6d;&#x40;&#x6e;&#x65;&#116;&#46;&#x68;&#x72;</a></td>
<td>Lukas Helebrandt <a href="&#x6d;&#x61;&#105;&#108;&#116;&#x6f;&#x3a;&#108;&#117;&#x6b;&#x61;&#115;&#64;&#97;&#x69;&#121;&#97;&#46;&#99;&#122;">&#108;&#117;&#x6b;&#x61;&#115;&#64;&#97;&#x69;&#121;&#97;&#46;&#99;&#122;</a></td>
<td>Philipp Zumstein <a href="&#x6d;&#x61;&#105;&#108;&#x74;&#x6f;&#58;&#122;&#117;&#x70;&#104;&#x69;&#108;&#x69;&#x70;&#64;&#x67;&#109;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;">&#122;&#117;&#x70;&#104;&#x69;&#108;&#x69;&#x70;&#64;&#x67;&#109;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</a></td>
<td>Fernando Martín <a href="&#x6d;&#97;&#105;&#x6c;&#116;&#111;&#58;&#102;&#64;&#109;&#x72;&#116;&#110;&#46;&#x65;&#x73;">&#102;&#64;&#109;&#x72;&#116;&#110;&#46;&#x65;&#x73;</a></td>
<td>Marcos Lans <a href="&#x6d;&#x61;&#x69;&#x6c;&#116;&#111;&#x3a;&#109;&#x61;&#114;&#x63;&#x6f;&#115;&#x6c;&#97;&#110;&#115;&#103;&#97;&#x72;&#122;&#x61;&#x40;&#103;&#109;&#97;&#105;&#x6c;&#46;&#x63;&#x6f;&#x6d;">&#109;&#x61;&#114;&#x63;&#x6f;&#115;&#x6c;&#97;&#110;&#115;&#103;&#97;&#x72;&#122;&#x61;&#x40;&#103;&#109;&#97;&#105;&#x6c;&#46;&#x63;&#x6f;&#x6d;</a></td>
<td>Renato Nunes Bastos <a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#x3a;&#x72;&#110;&#x62;&#x61;&#115;&#x74;&#111;&#x73;&#x40;&#x67;&#109;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;">&#x72;&#110;&#x62;&#x61;&#115;&#x74;&#111;&#x73;&#x40;&#x67;&#109;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;</a></td>
<td>Artyom Karlov <a href="&#x6d;&#97;&#x69;&#108;&#x74;&#x6f;&#x3a;&#97;&#x72;&#116;&#121;&#111;&#109;&#x2e;&#107;&#97;&#114;&#x6c;&#x6f;&#x76;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#x2e;&#x63;&#x6f;&#109;">&#97;&#x72;&#116;&#121;&#111;&#109;&#x2e;&#107;&#97;&#114;&#x6c;&#x6f;&#x76;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#x2e;&#x63;&#x6f;&#109;</a></td>