Context
Most of the dependency chain dates from 2019-2020 and has not moved since — with the notable
exception of Log4j, brought to 2.17.1. So the question has been addressed once, but only for
that one case.
| Dependency |
Version |
Note |
io.vertx:* |
3.9.0 (May 2020) |
3.x is end-of-life; vertx-web 3.9.x is affected by CVE-2023-24815 (path traversal in StaticHandler, on Windows), fixed in 4.3.8 |
com.google.code.gson |
2.8.5 (2018) |
CVE-2022-25647 (deserialization, DoS), fixed in 2.8.9 |
react-scripts |
3.0.1 (2019) |
pulls a very old build dependency tree |
react / react-dom |
16.8.6 |
|
node |
v12.3.1 (web-ui/pom.xml:24) |
EOL since April 2022; also pinned in .github/workflows/ci.yml |
yarn |
v1.16.0 (web-ui/pom.xml:25) |
|
net.bytebuddy |
1.10.6 |
|
org.usb4java |
1.3.0 |
|
log4j-* |
2.17.1 |
current, nothing to do |
commons-io |
2.16.1 |
recent |
commons-compress |
1.27.0 |
recent |
StaticHandler is in use (MainVerticle.java:90), which makes CVE-2023-24815 relevant rather
than purely theoretical — subject to confirming the exact exploitation path, which is worth
checking before drawing conclusions.
None of this is urgent in itself for a desktop tool. The real problem is the lack of
visibility: nothing in the project signals that a dependency has aged or that an advisory
has been published, so the gap widens without anyone having decided that it should.
Description
Two distinct things, not to be conflated:
- Make staleness visible — cheap, and worth doing first.
- Close the gap, dependency by dependency, in order of risk.
The Vert.x 3.9 → 4.x upgrade is by far the heaviest: mountSubRouter, BridgeOptions,
SockJSHandler.bridge, the package of Vert.x's Logger/LoggerFactory, and the listen
signature have all changed. It deserves its own issue once this one is scoped; this issue is
for deciding, not for doing all of it.
Affected files
.github/dependabot.yml — to be created
pom.xml — dependencyManagement (gson, byte-buddy)
web-ui/pom.xml — vertx.version, node.version, yarn.version
web-ui/javascript/package.json, yarn.lock
.github/workflows/ci.yml — the Node version used by the web-ui-tests job
TESTING.md — if the test command changes
Implementation plan
- Add
.github/dependabot.yml (maven and npm ecosystems, monthly cadence, minor updates
grouped to limit noise).
- Enable GitHub security alerts on the repository.
- Gson 2.8.5 → 2.11: no risk expected, usage is plain serialization/deserialization. Do this
first.
- Node 12 → 20 LTS together with
react-scripts 3.0.1 → 5.x — the two are coupled and cannot
be done separately. Check the JS suite (57 tests) still passes.
- Vert.x 3.9 → 4.x: scope the effort, open a dedicated issue. Do not attempt it here.
- At each step, verify that
mvn package produces a working bundle — the PR workflow
deliberately skips the frontend goals, so it does not cover this.
Acceptance criteria
Complexity
M for steps 1 to 4. The Vert.x upgrade on its own is L.
Context
Most of the dependency chain dates from 2019-2020 and has not moved since — with the notable
exception of Log4j, brought to 2.17.1. So the question has been addressed once, but only for
that one case.
io.vertx:*vertx-web3.9.x is affected by CVE-2023-24815 (path traversal inStaticHandler, on Windows), fixed in 4.3.8com.google.code.gsonreact-scriptsreact/react-domnodeweb-ui/pom.xml:24).github/workflows/ci.ymlyarnweb-ui/pom.xml:25)net.bytebuddyorg.usb4javalog4j-*commons-iocommons-compressStaticHandleris in use (MainVerticle.java:90), which makes CVE-2023-24815 relevant ratherthan purely theoretical — subject to confirming the exact exploitation path, which is worth
checking before drawing conclusions.
None of this is urgent in itself for a desktop tool. The real problem is the lack of
visibility: nothing in the project signals that a dependency has aged or that an advisory
has been published, so the gap widens without anyone having decided that it should.
Description
Two distinct things, not to be conflated:
The Vert.x 3.9 → 4.x upgrade is by far the heaviest:
mountSubRouter,BridgeOptions,SockJSHandler.bridge, the package of Vert.x'sLogger/LoggerFactory, and thelistensignature have all changed. It deserves its own issue once this one is scoped; this issue is
for deciding, not for doing all of it.
Affected files
.github/dependabot.yml— to be createdpom.xml—dependencyManagement(gson, byte-buddy)web-ui/pom.xml—vertx.version,node.version,yarn.versionweb-ui/javascript/package.json,yarn.lock.github/workflows/ci.yml— the Node version used by theweb-ui-testsjobTESTING.md— if the test command changesImplementation plan
.github/dependabot.yml(mavenandnpmecosystems, monthly cadence, minor updatesgrouped to limit noise).
first.
react-scripts3.0.1 → 5.x — the two are coupled and cannotbe done separately. Check the JS suite (57 tests) still passes.
mvn packageproduces a working bundle — the PR workflowdeliberately skips the frontend goals, so it does not cover this.
Acceptance criteria
react-scriptson supported versions, JS suite greenmvn packageproduces a working bundle (verified by hand, outside the PR workflow)Complexity
M for steps 1 to 4. The Vert.x upgrade on its own is L.