Security: Deleted content exposure + revision history IDOR via sequential IDs
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
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
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/answer
-
List button click not workingEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
apache/answer#1620 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Hardening: cap the invite_user list size in UpdateQuestionInviteUser to bound notification fan-outEvtl. vergeben @TastyHeadphones hat das vor 12 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
apache/answer#1617 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Admin AI settings silently reset the assistant prompt, which cannot be edited in the UIEvtl. vergeben @Andy-Sverdlov-LucaNet hat das vor 29 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 1 Tag
-
Fix grammar and wording errors in i18n/en_US.yamlEvtl. vergeben @luhuadong hat das vor 29 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
apache/answer#1606 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Gravatar hash is computed from the un-lowercased email, so mixed-case accounts render an identiconEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
duplication
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
openvibely/openvibely#1443 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
keyxmakerx/Chronicle#1179 ·
Maintainer antworten meist innerhalb von 1 Tag
-
raised-by:worker
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
medici-finance/assay#2486 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area/testing kind/bug triage/needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
cozystack/cozystack#4841 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
openimsdk/openim-sdk-core#1127 ·