Improper authorization control for web services In gogs.io/gogs

Description

Gogs user can update repository content with read-only permission

Vulnerability Description

The endpoint PUT /repos/:owner/:repo/contents/* does not require write permissions and allows access with read permission only via repoAssignment().

After passing the permission check, PutContents() invokes UpdateRepoFile(), which results in:

    Commit creation

    Execution of git push

As a result, a token with read-only permission can be used to modify repository contents.


Attack Prerequisites

    Possession of a valid access token

    Read permission on the target repository (public repository or collaborator with read access)


Attack Scenario

    The attacker accesses the target repository with a read-only token

    The attacker sends a PUT /contents request to update an arbitrary file

    The server creates a commit and performs a git push on behalf of the attacker


Potential Impact

    Source code tampering

    Injection of backdoors

    Compromise of release artifacts and distributed packages

Mitigation

Update Impact

Minimal update. May introduce new vulnerabilities or breaking changes.

Ecosystem
Package
Affected version
Patched versions