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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions