Audit · firm’s term: audit report
QuillAudits reviewed ritestream (RiteStream - Subscription Contract) on 12 Jul 2023: 8 findings, 0 critical; all marked fixed.
Report hosted on quillaudits.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 | 1 |
| Low | 0 | 0 | 7 |
As the function signature is the same and the hash created also follows the same pattern, it is possible to overwrite a subscription by mistake.
The functions subscribe and updateSubscriptionPlan transfers the RITE tokens from msg.sender before updating contract states. As RITE token is not a part of this contract, it is assumed that it can be used to reenter the functions and exploit the function to double spend subscription in updateSubscriptionPlan.
It is recommended to add a gap in the contract to avoid storage collision in future if the current contract is upgraded and extended.
Parameter Subscription.initialize(address)._RITE (contracts/Subscription.sol#37) is not in mixedCaseParameter Subscription.subscribe(uint256,Signature)._signature (contracts/Subscription.sol#65) is not in mixedCase Parameter Subscription.updateSubscriptionPlan(uint256,Signature)._signature (contracts/Subscription.sol#97) is not in mixedCase Variable Subscription.RITE (contracts/Subscription.sol#29) is not in mixedCase Variable Subscription._operator (contracts/Subscription.sol#30) is not in mixedCase Constant Subscription.fixedOwnerAddress (contracts/Subscription.sol#32-33) is not in UPPER_CASE_WITH_UNDERSCORES Constant Token.fixedOwnerAddress (contracts/Token.sol#12-13) is not in UPPER_CASE_WITH_UNDERSCORES Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
It is recommended to add a check for address(0) while setting the operator as it is used in validating signatures in subscriptions.
The function setOperator does not emit an event on updating operator.
As the message hash created follows the same pattern in subscribe and updateSubscriptionPlan, it is possible to reuse it any number of times and increase the duration. Users will still have to pay but this can go against operator’s permission unless operator is updated.
Following require statements can be removed from line number 68 and 101 as msg.sender can never be zero address.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (2)
350 projects reviewed · 459 reports · latest Apr 2025
See QuillAudits’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