CertiK reviewed Orbs (Orbs single-nominator) on 21 Dec 2022: 6 findings, 0 critical; 5 marked fixed, 1 acknowledged.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 1 | 5 |
`get_data()` contains 2 fields: `owner_address` and `validator_address`. The function `load_data()` reads all of them, however, it does not ensure that the slice is empty after that.
```cpp=127 send_msg(elector_address(), stake_amount, begin_cell().store_uint(op, 32).store_uint(query_id, 64).store_slice(msg).end_cell(), BOUNCEABLE, MODE::SEND_MODE_REMAINING_AMOUNT); ;; bounceable, validator pays gas fees ``` The message sent to `elector-code` is built directly as the function argument. This decreases the code readability. `op` sent to `elector-code` must be `OP::NEW_STAKE`. But `op` sent to `single-nominator` can be any. Passing `op` as an argument decreases the code maintainability.
`recv_internal()` explicitly accepts the messages with empty `in_msg_body`. However, the messages with non-empty `in_msg_body` or from unauthorized senders are also implicitly accepted. This can lead to accidental errors.
```cpp=86 amount = min(amount, my_balance - msg_value - MIN_TON_FOR_STORAGE); ``` In case the contract's balance is less than `MIN_TON_FOR_STORAGE`, the `amount` can become negative. That will lead to a range check exception during `send_raw_message()`.
In `recv_internal()` `load_data()` is performed after accepting of empty and bounced messages. In case the contract was initialized with incorrect initial state, it can still accept the stakes. `load_data()` validates the storage is in correct format.
The report names a repository or files. Open the report to see its scope.
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us