Skip to content

Unable to access frontend source code of a public github repo #62

@kolaente

Description

@kolaente

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_lines
  • 0338699d3273search_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 preview
  • frontend/src/components/tasks/partials/Attachments.vue:326 — task attachments upload + any preview/download rendering
  • frontend/src/components/tasks/partials/Comments.vue:326 — comment editor + attachmentUpload(files) / pasted images
  • frontend/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:15
  • frontend/src/services/avatar.ts:5
  • frontend/src/services/backgroundUpload.ts:7
  • frontend/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 = False
  • has_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?

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions