Skip to content

Commit 91640e1

Browse files
authored
Merge pull request #79 from anupamme/fix-repo-advanced-portchecker-updater-url-integrity-cwe-494
fix: secure index.js (CWE-494)
2 parents 6aa60da + 670636a commit 91640e1

1 file changed

Lines changed: 24 additions & 5 deletions

File tree

‎src/utils/Updater/index.js‎

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,31 @@ const Updater = (os, architectureName, currentVersion) => {
4444
return semverCompare(b.semver, a.semver);
4545
});
4646

47+
const { downloadUrl, infoUrl, semver } = sortedReleases[0];
48+
49+
// Only trust update/info URLs served over HTTPS from the expected host,
50+
// to reduce the risk of a tampered/spoofed response redirecting the
51+
// updater to an attacker-controlled download location.
52+
const isTrustedUrl = (url) => {
53+
try {
54+
const parsed = new URL(url);
55+
return (
56+
parsed.protocol === 'https:' && parsed.hostname === 'codedead.com'
57+
);
58+
} catch {
59+
return false;
60+
}
61+
};
62+
63+
if (!isTrustedUrl(downloadUrl) || !isTrustedUrl(infoUrl)) {
64+
throw new Error('Update metadata contains an untrusted URL');
65+
}
66+
4767
return {
48-
updateUrl: sortedReleases[0].downloadUrl,
49-
infoUrl: sortedReleases[0].infoUrl,
50-
version: sortedReleases[0].semver,
51-
updateAvailable:
52-
semverCompare(currentVersion, sortedReleases[0].semver) < 0,
68+
updateUrl: downloadUrl,
69+
infoUrl,
70+
version: semver,
71+
updateAvailable: semverCompare(currentVersion, semver) < 0,
5372
};
5473
};
5574

0 commit comments

Comments
 (0)