VYPR
Unrated severityNVD Advisory· Published Jun 9, 2026· Updated Jun 9, 2026

CVE-2026-34031

CVE-2026-34031

Description

Apache Answer through 2.0.0 allows embedding arbitrary external content as profile images, enabling tracking and unintended requests.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Apache Answer through 2.0.0 allows embedding arbitrary external content as profile images, enabling tracking and unintended requests.

Vulnerability

Apache Answer through version 2.0.0 suffers from an Unrestricted Upload of File with Dangerous Type vulnerability. The server does not sufficiently validate user-supplied image URLs when setting custom avatars. This allows for arbitrary external content to be embedded as profile images [1].

Exploitation

An attacker can provide a malicious URL for a user's profile image. When other users view this profile, their client will fetch the external content from the attacker-controlled server, potentially exposing them to unintended external requests and tracking [1].

Impact

Successful exploitation can lead to users being subjected to unintended external requests and tracking by third-party servers. This could potentially facilitate phishing attacks or other forms of user tracking and data exfiltration, depending on the content served and the user's browser behavior.

Mitigation

Users are recommended to upgrade to Apache Answer version 2.0.1, which fixes the issue. The fixed version was released on June 9, 2026 [1].

AI Insight generated on Jun 9, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

1
844c73cd7fbb

fix: change avatar column type to TEXT to support long URLs

https://github.com/apache/incubator-answermaishivamhoo123Feb 6, 2026Fixed in 2.0.1via llm-release-walk
3 files changed · +39 1
  • internal/entity/user_entity.go+1 1 modified
    @@ -60,7 +60,7 @@ type User struct {
     	Status         int       `xorm:"not null default 1 INT(11) status"`
     	AuthorityGroup int       `xorm:"not null default 1 INT(11) authority_group"`
     	DisplayName    string    `xorm:"not null default '' VARCHAR(30) display_name"`
    -	Avatar         string    `xorm:"not null default '' VARCHAR(2048) avatar"`
    +	Avatar         string    `xorm:"not null default '' TEXT avatar"`
     	Mobile         string    `xorm:"not null VARCHAR(20) mobile"`
     	Bio            string    `xorm:"not null TEXT bio"`
     	BioHTML        string    `xorm:"not null TEXT bio_html"`
    
  • internal/migrations/migrations.go+1 0 modified
    @@ -107,6 +107,7 @@ var migrations = []Migration{
     	NewMigration("v1.7.2", "expand avatar column length", expandAvatarColumnLength, false),
     	NewMigration("v1.8.0", "change admin menu", updateAdminMenuSettings, true),
     	NewMigration("v1.8.1", "ai feat", aiFeat, true),
    +	NewMigration("v1.8.2", "change avatar type to text", updateAvatarType, false),
     }
     
     func GetMigrations() []Migration {
    
  • internal/migrations/v32.go+37 0 added
    @@ -0,0 +1,37 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing,
    + * software distributed under the License is distributed on an
    + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + * KIND, either express or implied.  See the License for the
    + * specific language governing permissions and limitations
    + * under the License.
    + */
    +
    +package migrations
    +
    +import (
    +	"context"
    +	"fmt"
    +
    +	"github.com/apache/answer/internal/entity"
    +	"xorm.io/xorm"
    +)
    +
    +func updateAvatarType(ctx context.Context, x *xorm.Engine) error {
    +	// Sync the User struct to the database.
    +	// Since you changed the struct to use TEXT, this will update the column type.
    +	if err := x.Context(ctx).Sync(new(entity.User)); err != nil {
    +		return fmt.Errorf("sync user table failed: %w", err)
    +	}
    +	return nil
    +}
    

Vulnerability mechanics

Root cause

"The server did not sufficiently validate user-supplied image URLs for profile pictures."

Attack vector

An attacker can provide an external URL to an image, which the server will then embed as a user's profile image. This allows arbitrary external content to be embedded, potentially exposing users to unintended external requests and tracking by third-party servers. The vulnerability is present in versions up to and including 2.0.0.

Affected code

The vulnerability lies within the handling of user-supplied image URLs for profile avatars. Specifically, the `Avatar` field in the `internal/entity/user_entity.go` file was previously a `VARCHAR(2048)` and has been changed to `TEXT` [patch_id=5343580]. This change is registered in the database migrations under `internal/migrations/migrations.go` as `updateAvatarType` [patch_id=5343580].

What the fix does

The patch modifies the `avatar` column type in the `entity.User` struct from `VARCHAR(2048)` to `TEXT` [patch_id=5343580]. This change is part of a migration that updates the database schema to accommodate potentially longer URLs. While the commit message suggests this change is to support longer URLs, the advisory indicates this resolves the unrestricted upload of dangerous file types by ensuring proper validation of user-supplied image URLs.

Generated on Jun 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

2

News mentions

0

No linked articles in our index yet.