-
Notifications
You must be signed in to change notification settings - Fork 14
Description
I've tried this in a codespace on the go-vikunja/vikunja repo (I am the main author of that).
After 2h and 24.44 USD in extra Copilot premium requests, I got somewhat of an error:
I was not able to audit the actual frontend source code for this issue because the repository file tools could not access any paths under
frontend/(or even list the repo)
Full output here (click)
Audit summary (Issue 14 — frontend, component_id=2)
I was not able to audit the actual frontend source code for this issue because the repository file tools could not access any paths under frontend/ (or even list the repo). Every attempt to use:
0338699d3273list_files(_non_recursive)0338699d3273get_file_lines0338699d3273search_repo
returned the error:
Invalid go-vikunja and vikunja. Check that the input is correct or try to fetch the repo from gh first.
Because of this, I could not verify whether Vikunja’s Vue SPA previews or embeds uploaded/attached content (attachments, avatars, backgrounds, pasted images) in a way that could allow active content execution (SVG/HTML) or unsafe embedding that could lead to XSS or cross-user data exposure.
What would need to be reviewed (once source access is possible)
Based on the component’s stored entry points/user actions (already in the DB), the key UI surfaces to inspect for unsafe rendering/preview decisions include:
frontend/src/views/user/settings/Avatar.vue:154— avatar upload/cropping (FileReader, image handling)frontend/src/views/project/settings/ProjectSettingsBackground.vue:194— background upload and previewfrontend/src/components/tasks/partials/Attachments.vue:326— task attachments upload + any preview/download renderingfrontend/src/components/tasks/partials/Comments.vue:326— comment editor + attachmentUpload(files) / pasted imagesfrontend/src/components/input/editor/TipTap.vue:705— clipboard paste handler and image insertion/upload
Likely blob-fetching service code that influences whether content is rendered inline vs forced-download:
frontend/src/services/attachment.ts:15frontend/src/services/avatar.ts:5frontend/src/services/backgroundUpload.ts:7frontend/src/services/project.ts:42- (also blob-like flows)
frontend/src/services/dataExport.ts:6,frontend/src/services/totp.ts:5
Security impact if a real issue exists (threat model fit)
Given this is a SPA served on the Vikunja origin and it stores/uses auth tokens client-side, any UI choice that renders attacker-controlled uploads inline (especially SVG/HTML) could plausibly become stored XSS (account takeover, token exfiltration, actions as victim). But this remains speculation until code can be inspected.
Result recorded
I stored a new audit result for issue 14:
has_vulnerability = Falsehas_non_security_error = True(audit could not be completed due to tooling/repo access failure)
AuditResult was created with notes documenting the blockage and the specific file/line targets to review once code access is available.
The repo_context.db in the $DATA_DIR that I set seems to contain some results. Given the error that it output I would expect for it to not contain anything.
I have no idea if this is actually a problem or just wrong reporting of the harness?