AOSSIE-Org / AOSSIE-Org/DebateAI

[Bug] Rating Reset Exploit via NaN Sanitiization

Aperta
#298 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
84
Fork
198
Merge medio
2g 19h
PR unite (30g)
30

Descrizione

Description
The sanitizePlayerMetrics function defaults a player's rating back to 1200 (default) if the mathematical calculation results in NaN or Inf. A malicious user could craft inputs or exploit the time-decay bug to trigger a math error, effectively resetting a poor rating back to start.

How to Reproduce
1. Trigger a condition where Glicko-2 math divides by zero or takes the square root of a negative number (e.g., via corrupted LastUpdate times in Issue 7).
2. The rating service sees NaN.
3. The service resets the rating to 1200.

Root Cause
In rating_service.go:
```
if math.IsNaN(player.Rating) || math.IsInf(player.Rating, 0) {
player.Rating = initialRating // Reset to 1200
}
```

This fails open instead of failing closed.

Expected Behavior
If a math error occurs, the rating update should be aborted, and the error logged. The user's rating should remain at its previous value, not reset to a new user's 1200.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.