<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-07T07:43:16.069717+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/euvd-2026-277216</id>
    <title>EUVD-2026-277216</title>
    <updated>2026-10-07T07:43:16.073538+00:00</updated>
    <content>EUVD-2026-277216</content>
    <link href="https://cve.radiocsirt.org/vuln/euvd-2026-277216"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/fkie_cve-2026-33678</id>
    <title>fkie_cve-2026-33678</title>
    <updated>2026-10-07T07:43:16.073580+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Vikunja is an open-source self-hosted task management platform. Prior to version 2.2.1, `TaskAttachment.ReadOne()` queries attachments by ID only (`WHERE id = ?`), ignoring the task ID from the URL path. The permission check in `CanRead()` validates access to the task specified in the URL, but `ReadOne()` loads a different attachment that may belong to a task in another project. This allows any authenticated user to download or delete any attachment in the system by providing their own accessible task ID with a target attachment ID. Attachment IDs are sequential integers, making enumeration trivial. Version 2.2.1 patches the issue.</p>
      </div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/fkie_cve-2026-33678"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-jfmm-mjcp-8wq2</id>
    <title>GHSA-jfmm-mjcp-8wq2 — Vikjuna: IDOR in Task Attachment ReadOne Allows Cross-Project File Access and Deletion</title>
    <updated>2026-10-07T07:43:16.073617+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Go: code.vikunja.io/api</p>
<p>## Summary</p>
<p>`TaskAttachment.ReadOne()` queries attachments by ID only (`WHERE id = ?`), ignoring the task ID from the URL path. The permission check in `CanRead()` validates access to the task specified in the URL, but `ReadOne()` loads a different attachment that may belong to a task in another project. This allows any authenticated user to download or delete any attachment in the system by providing their own accessible task ID with a target attachment ID. Attachment IDs are sequential integers, making enumeration trivial.</p>
<p>## Details</p>
<p>The vulnerability is in `pkg/models/task_attachment.go` in the `ReadOne` method:</p>
<p>```go
// pkg/models/task_attachment.go:110-120
func (ta *TaskAttachment) ReadOne(s *xorm.Session, _ web.Auth) (err error) {
	exists, err := s.Where("id = ?", ta.ID).Get(ta)  // Only checks attachment ID, ignores TaskID
	if err != nil {
		return
	}
	if !exists {
		return ErrTaskAttachmentDoesNotExist{
			TaskID:       ta.TaskID,
			AttachmentID: ta.ID,
		}
	}
	// ...
}
```</p>
<p>The permission check in `pkg/models/task_attachment_permissions.go` validates access to the URL task, not the attachment's actual task:</p>
<p>```go
// pkg/models/task_attachment_permissions.go:25-28
func (ta *TaskAttachment) CanRead(s *xorm.Session, a web.Auth) (bool, int, error) {
	t := &amp;Task{ID: ta.TaskID}  // ta.TaskID is from URL param :task
	return t.CanRead(s, a)
}
```</p>
<p>The `TaskAttachment` struct binds URL parameters via struct tags (`param:"task"` and `param:"attachment"`):
```go
// pkg/mo…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-jfmm-mjcp-8wq2"/>
  </entry>
</feed>
