Harden App Viewer metadata generation - #797
Conversation
|
I'm wondering what to do about this separate branch though. does it need to be kept in sync with main for any reason ? |
|
I don't know why this is in a separate branch? Is there a good reason for that, other than slight obscuring the app viewer code from visitors to the main branch? Perhaps the app viewer website could be moved to its own repo, then the app's repo is only for apps themselves? Though there may be a good reason for doing it this way that I have not discovered... |
|
@tavdog I did some digging and found the original rationale in #41 and the later repository history. @brombomb, have I understood the reasoning correctly? The arrangement makes sense, although the permanent parallel branch does add some maintenance and discoverability overhead. Do you think it should remain this way, or might moving the App Viewer to its own repository eventually be clearer? I don’t want to propose changing the structure without understanding the original considerations. |
Overview
This is the first App Viewer hardening step in a larger, multi-part improvement
to the Tronbyt app discovery and installation experience.
The complete work spans both the
tronbyt/appsandtronbyt/serverrepositories, so it is being divided into smaller PRs that can be reviewed,
tested and merged independently.
When all parts are released, users will be able to:
pages, improved app details and README presentation.
configuration flow.
The Viewer will not send app source code, passwords, session cookies or API
tokens to the server. The server will install only from its own configured
system-app checkout.
Why this PR comes first
The App Viewer generates static detail and author pages from app manifests in
this repository.
Some manifest-derived values, including titles and descriptions, were inserted
into generated
<title>and metadata elements with only partial quotehandling. Although manifests are reviewed before merge, generated HTML should
still treat repository metadata as untrusted input and encode it safely at the
output boundary.
This issue already existed before the new catalogue and server-integration
work. Fixing it separately:
The installed
js-yamlversion also had a published security advisory, so thisPR updates it before additional manifest fields and catalogue provenance are
processed.
Changes in this PR
scripts, closing tags, quotes, ampersands and Unicode.
js-yamlfrom 4.1.1 to 4.3.2 and refresh compatible transitivedependencies.
running a complete build.
What this PR intentionally does not include
This PR does not add or change:
Those changes will be introduced in separate PRs so their behaviour and
security boundaries can be reviewed independently.
Planned follow-up work
Separate PRs will provide:
provenance.
broken-app presentation and performance improvements.
refresh and device-selection support.
The final Viewer/server integration will remain a draft until the supporting
Tronbyt Server version has been released.
Security impact
This PR closes an existing generated-HTML injection weakness and updates a
dependency with a known vulnerability.
It does not add a network endpoint, change authentication, broaden permissions,
or transmit information to a Tronbyt Server.
Testing
npm testnpm audit— 0 vulnerabilitiesgit diff --check