<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 28 Sep 2026 19:45:00 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-33315</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-33315</link>
      <description>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Prior to version 2.2.0, the Caldav endpoint allows login using Basic Authentication, which in turn allows users to bypass the TOTP on 2FA-enabled accounts. The user can then access standard project information that would normally be protected behind 2FA (if enabled), such as project name, description, etc. Version 2.2.0 patches the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Prior to version 2.2.0, the Caldav endpoint allows login using Basic Authentication, which in turn allows users to bypass the TOTP on 2FA-enabled accounts. The user can then access standard project information that would normally be protected behind 2FA (if enabled), such as project name, description, etc. Version 2.2.0 patches the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-33315</guid>
    </item>
    <item>
      <title>GHSA-47cr-f226-r4pq — Vikunja has a 2FA Bypass via Caldav Basic Auth</title>
      <link>https://db.gcve.eu/vuln/ghsa-47cr-f226-r4pq</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: code.vikunja.io/api&lt;/p&gt;
&lt;p&gt;### Summary
The Caldav endpoint allows login using Basic Authentication, which in turn allows users to bypass the TOTP on 2FA-enabled accounts. The user can then access standard project information that would normally be protected behind 2FA (if enabled), such as project name, description, etc.&lt;/p&gt;
&lt;p&gt;### Details
The two files below show that when a user is accessing Caldav via Basic Authentication, it skips all steps involving 2FA. The order of operations is essentially:
1. Retrieve basic credentials.
2. Verify username.
3. Verify password.
4. Success&lt;/p&gt;
&lt;p&gt;**pkg/routes/caldav/auth.go:45**
```go
u, err := checkUserCaldavTokens(s, credentials)
	if user.IsErrUserDoesNotExist(err) {
		return false, nil
	}
	if u == nil {
		u, err = user.CheckUserCredentials(s, credentials)
		if err != nil {
			log.Errorf(&amp;#34;Error during basic auth for caldav: %v&amp;#34;, err)
			return false, nil
		}
	}
```&lt;/p&gt;
&lt;p&gt;**pkg/user/user.go:358**
```go
func CheckUserCredentials(s *xorm.Session, u *Login) (*User, error) {
	// Check if we have any credentials
	if u.Password == &amp;#34;&amp;#34; || u.Username == &amp;#34;&amp;#34; {
		return nil, ErrNoUsernamePassword{}
	}&lt;/p&gt;
&lt;p&gt;// Check if the user exists
	user, err := getUserByUsernameOrEmail(s, u.Username)
	if err != nil {
		// hashing the password takes a long time, so we hash something to not make it clear if the username was wrong
		_, _ = bcrypt.GenerateFromPassword([]byte(u.Username), 14)
		return nil, ErrWrongUsernameOrPassword{}
	}&lt;/p&gt;
&lt;p&gt;if user.Issuer != IssuerLocal {
		return user, &amp;amp;ErrAccountIsNotLocal{Use…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: code.vikunja.io/api&lt;/p&gt;
&lt;p&gt;### Summary
The Caldav endpoint allows login using Basic Authentication, which in turn allows users to bypass the TOTP on 2FA-enabled accounts. The user can then access standard project information that would normally be protected behind 2FA (if enabled), such as project name, description, etc.&lt;/p&gt;
&lt;p&gt;### Details
The two files below show that when a user is accessing Caldav via Basic Authentication, it skips all steps involving 2FA. The order of operations is essentially:
1. Retrieve basic credentials.
2. Verify username.
3. Verify password.
4. Success&lt;/p&gt;
&lt;p&gt;**pkg/routes/caldav/auth.go:45**
```go
u, err := checkUserCaldavTokens(s, credentials)
	if user.IsErrUserDoesNotExist(err) {
		return false, nil
	}
	if u == nil {
		u, err = user.CheckUserCredentials(s, credentials)
		if err != nil {
			log.Errorf(&amp;#34;Error during basic auth for caldav: %v&amp;#34;, err)
			return false, nil
		}
	}
```&lt;/p&gt;
&lt;p&gt;**pkg/user/user.go:358**
```go
func CheckUserCredentials(s *xorm.Session, u *Login) (*User, error) {
	// Check if we have any credentials
	if u.Password == &amp;#34;&amp;#34; || u.Username == &amp;#34;&amp;#34; {
		return nil, ErrNoUsernamePassword{}
	}&lt;/p&gt;
&lt;p&gt;// Check if the user exists
	user, err := getUserByUsernameOrEmail(s, u.Username)
	if err != nil {
		// hashing the password takes a long time, so we hash something to not make it clear if the username was wrong
		_, _ = bcrypt.GenerateFromPassword([]byte(u.Username), 14)
		return nil, ErrWrongUsernameOrPassword{}
	}&lt;/p&gt;
&lt;p&gt;if user.Issuer != IssuerLocal {
		return user, &amp;amp;ErrAccountIsNotLocal{Use…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-47cr-f226-r4pq</guid>
    </item>
  </channel>
</rss>
