Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Security: Deleted content exposure + revision history IDOR via sequential IDs

Offen
#1,506 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
go
Bereich
api, backend, security

Rechercherichtung

Beginne für die beiden betroffenen Endpunkte mit AnswerService.Get und GetObjectTimelineDetail und vergleiche anschließend deren Zugriffskontrollen mit SearchList, GetRevisionList und GetQuestion. Verfolge, wie gelöschte und ausstehende Fragen, Antworten und Revisionen geladen werden. Die Aufgabe ist abgeschlossen, wenn nicht authentifizierte Benutzer keine gelöschten Antworten mehr sehen können und authentifizierte Benutzer keinen Inhalt gelöschter oder ausstehender Revisionen mehr sehen können, während der Zugriff auf zulässige Inhalte erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

Two information disclosure issues allow access to deleted/pending content:

1. Deleted Answer Content via GET /answer/api/v1/answer/info (Low-Medium)

`AnswerService.Get()` calls `answerRepo.GetByID()` which fetches answers by raw ID with no `status != deleted` filter. Deleted answers are returned with full content to unauthenticated callers.

Secure comparison: `SearchList` correctly filters: `session.Where("status != ?", entity.AnswerStatusDeleted)`

2. Revision History IDOR via GET /answer/api/v1/activity/timeline/detail (Medium)

`GetObjectTimelineDetail` fetches revision content by sequential integer ID (`autoincr BIGINT`). No check for whether the associated question/answer is deleted or pending. Any authenticated user can enumerate `revision_id=1,2,3...` to read full content of deleted/pending questions and answers.

Secure comparison: `GetRevisionList` correctly checks `objInfo.IsDeleted()` before showing history. `GetQuestion` blocks access to deleted/pending content.

Impact
  • Bypasses content moderation (admin-deleted content remains accessible)
  • Reveals pending-review content before publication
  • Sequential revision IDs make enumeration trivial

Discovery

Found through automated security research comparing content visibility controls across endpoints.

Vorherrschende Sprache
Go
Sterne
15.7k
Forks
1.4k
Ø Merge
1 T. 3 Std.
Gemergte PRs (30 T.)
4

Entwicklungsumgebung

  • Enthält ein Dockerfile oder eine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus apache/answer

Alle Issues in apache/answer

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.