Lucene search

K
osvGoogleOSV:GHSA-9RP6-23GF-4C3H
HistoryJun 06, 2023 - 4:39 p.m.

syncthing vulnerable to Cross-site Scripting (XSS) in Web GUI

2023-06-0616:39:57
Google
osv.dev
11
syncthing
xss
vulnerability
web gui
html
javascript
risk
trusted devices

5.4 Medium

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

LOW

User Interaction

REQUIRED

Scope

CHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

NONE

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

0.001 Low

EPSS

Percentile

29.4%

Impact

  1. A compromised instance with shared folders could sync malicious files which contain arbitrary HTML and JavaScript in the name.
    If the owner of another device looks over the shared folder settings and moves the mouse over the latest sync, a script could be executed to change settings for shared folders or add devices automatically.

  2. Adding a new device with a malicious name could embed HTML or JavaScript inside parts of the page.

Risk

As long as trusted devices are used, the risk is low.
Additionally, the web GUI is not used that often in daily use which reduces the likelihood of exploitation.

Details

1. Field “Latest Change”

  • Open the web GUI at http://127.0.0.1:8384/.
  • Create/Delete a file named <img src> and sync it to the other instance.
  • Move your mouse over the latest change to trigger the tooltip.

<img width=“834” alt=“latest-change” src=“https://user-images.githubusercontent.com/9484134/205084362-20a8ec13-a88d-469f-bdf1-e5291c20f4c1.png”>

Web browser source
<span>
    <span>Updated "&gt;&lt;img src=a onerror=alert(123)&gt;</span>
    
    
</span>
<div>
    <div></div>
    <div>\"&gt;<img src> @ 2022-11-30 16:58:43</div>
</div>
Corresponding code in the project

File gui/default/index.html:

<tr>
    <th><span></span>&nbsp;<span>Latest Change</span></th>
    <td>
        <span>
        <span>Updated {%file%}</span>
        <span>Deleted {%file%}</span>
        </span>
    </td>
</tr>

File gui/default/syncthing/core/tooltipDirective.js:

angular.module('syncthing.core')
    .directive('tooltip', function () {
        return {
            restrict: 'A',
            link: function (scope, element, attributes) {
                $(element).tooltip({
                    html: 'true'
                });
            }
        };
    });

The attribute html should not be set to true or input sanitized.

2. Field “Shared With”

  • Open the web GUI at http://127.0.0.1:8384/.
  • Create a device with the following name fedora 1"'&gt;<h1>Headline</h1><img src>&lt;script&gt;alert(1)&lt;/script&gt;.
  • Add the device to another instance and share a folder.
  • Move your mouse over the malicious device name to trigger the tooltip.

<img width=“608” alt=“shared-with-1” src=“https://user-images.githubusercontent.com/9484134/205084172-8cab2d0e-3257-46d5-be81-41fbd7228e0c.png”>

Web browser source
<span>fedora 1"'&gt;<h1>Headline
    </h1><img src></span>
<div>
    <div></div>
    <div>fedora 1"'&gt;<h1>Headline</h1><img src>
        &lt;script&gt;alert(1)&lt;/script&gt;
    </div>
</div>
Corresponding code in the project

File gui/default/index.html:

<tr>
    <th><span></span>&nbsp;<span>Shared With</span></th>
    <td>
        <span></span>
    </td>
</tr>

File gui/default/syncthing/core/tooltipDirective.js:

angular.module('syncthing.core')
    .directive('tooltip', function () {
        return {
            restrict: 'A',
            link: function (scope, element, attributes) {
                $(element).tooltip({
                    html: 'true'
                });
            }
        };
    });

The attribute html should not be set to true or input sanitized.

HTML Injection in “Edit Folder”

<img width=“672” alt=“shared-with-2” src=“https://user-images.githubusercontent.com/9484134/205084067-b33f8536-e350-4de1-86f6-3d4a12a683c3.png”>

CPENameOperatorVersion
github.com/syncthing/syncthinglt1.23.5

5.4 Medium

CVSS3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

LOW

User Interaction

REQUIRED

Scope

CHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

NONE

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

0.001 Low

EPSS

Percentile

29.4%