<?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://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-08T15:08:14.071770+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" 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://vulnerability.circl.lu/vuln/cve-2026-28744</id>
    <title>CVE-2026-28744 — Gitea Git smart HTTP bypasses repository token scopes for bearer tokens</title>
    <updated>2026-10-08T15:08:14.100903+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Gitea Open Source Git Server</p>
<p>Gitea versions up to and including 1.26.1 allow Git smart HTTP requests authenticated with bearer tokens to bypass repository token scope checks.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-28744"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-cc8w-r4qh-3v65</id>
    <title>GHSA-cc8w-r4qh-3v65 — Gitea: Git Smart HTTP Skips Repository Token Scopes for Bearer Tokens</title>
    <updated>2026-10-08T15:08:14.101064+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Go: code.gitea.io/gitea</p>
<p>### Summary
Gitea v1.26.1 enforces repository-scoped access-token permissions on repository operations. In the Git Smart HTTP path, however, this check runs only when the token is presented via HTTP Basic authentication — `CheckRepoScopedToken()` returns early unless `ctx.IsBasicAuth` is true — so the same token sent as `Authorization: Bearer &lt;token&gt;` bypasses the scope check entirely.</p>
<p>As a result, a PAT or OAuth2 token presented as a Bearer credential can clone or fetch private repositories without the `read:repository` scope, and likewise reach the Git push without `write:repository`.</p>
<p>### Details
Git Smart HTTP routes allow both Basic auth and OAuth2/Bearer auth:</p>
<p>```go
// routers/web/web.go
addOwnerRepoGitHTTPRouters(
	m,
	repo.HTTPGitEnabledHandler,
	webAuth.AllowBasic,
	webAuth.AllowOAuth2,
	repo.CorsHandler(),
	optSignInFromAnyOrigin,
	context.UserAssignmentWeb(),
)
```</p>
<p>The Git HTTP authorization path calls `CheckRepoScopedToken()` before falling through to normal repository RBAC:</p>
<p>```go
// routers/web/repo/githttp.go
if askAuth {
	if !ctx.IsSigned {
		ctx.HTTPError(http.StatusUnauthorized)
		return nil
	}</p>
<p>context.CheckRepoScopedToken(ctx, repo, auth_model.GetScopeLevelFromAccessMode(accessMode))
	if ctx.Written() {
		return nil
	}</p>
<p>// normal repository RBAC follows
}
```</p>
<p>However, `CheckRepoScopedToken()` only enforces token scopes for Basic-authenticated requests:</p>
<p>```go
// services/context/permission.go
func CheckRepoScopedToken(ctx *Context, repo *repo_model.…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-cc8w-r4qh-3v65"/>
  </entry>
</feed>
