AOSSIE-Org / AOSSIE-Org/DebateAI
[Bug] Rating Reset Exploit via NaN Sanitiization
- Dominant language
- TypeScript
- Stars
- 84
- Forks
- 198
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 30
Description
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.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.