AOSSIE-Org / AOSSIE-Org/DebateAI

[Bug] Rating Reset Exploit via NaN Sanitiization

Open
#298 0 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.