# forecast-implied inferences can be set to any value due to ForecastElements is not filtered by duplicate.

Unauthenticated InsertBulkWorkerPayload accepts duplicate ForecastElements, letting an attacker skew forecast-implied inference values to arbitrary numbers.

- Payout: Contest reward
- Severity: high
- Program: Allora
- Credited: volodya
- Disclosed: 2024-06-24
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2024-06-allora-judging/issues/12
- Library page: https://bugbountylibrary.com/r/sherlock%3A2024-06-allora%3AH-1
- Tags: domain:web3 impact:integrity kind:contest platform:sherlock sev:high tech:go technique:source-review vuln:access-control vuln:business-logic

**Target:** Cosmos SDK chain msg server (emissions module)
**Root cause:** verifyAndInsertForecastsFromTopForecasters filters ForecastElements only by accepted inferer membership, not by duplicate entries, so repeated elements from the same inferer are all counted in CalcForecastImpliedInferences.
**Steps:**
1. Call `InsertBulkWorkerPayload` with a `workerDataBundle.InferenceForecastsBundle.Forecast.ForecastElements` array containing many duplicate entries for an accepted inferer.
2. No authentication or duplicate check rejects the bundle; all duplicates pass the `acceptedInferersOfBatch` filter and are appended to `acceptedForecastElements`.
3. Duplicates are saved via `ms.k.InsertForecasts` and consumed by `CalcForecastImpliedInferences`, weighting the implied inference arbitrarily.
**How found:** Code review of the forecast insertion path noticed the loop only checks inferer membership and never deduplicates ForecastElements before they feed the implied-inference calculation.
**Exploitation:** Attacker submits an unauthenticated worker payload with repeated forecast elements from an accepted inferer, inflating that inferer's weight in CalcForecastImpliedInferences and driving the forecast-implied inference to an arbitrary value.
**Insight:** When a list of weighted contributions is filtered by membership only, check whether duplicates let one actor multiply its weight in downstream aggregation math.
