RiteStream - Subscription Contract

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed ritestream (RiteStream - Subscription Contract) on 12 Jul 2023: 8 findings, 0 critical; all marked fixed.

No open critical findings
Open the reportOpen ritestream’s security record

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings8

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium001
Low007
MediumSubscription can be overwrittenFixed

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.

LowCheck Effect Interaction pattern not followedFixed

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.

LowContracts without storage gap.Fixed

It is recommended to add a gap in the contract to avoid storage collision in future if the current contract is upgraded and extended.

LowFollow solidity style guide and naming conventionsFixed

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

LowMissing checksFixed

It is recommended to add a check for address(0) while setting the operator as it is used in validating signatures in subscriptions.

LowMissing event emission in setOperatorFixed

The function setOperator does not emit an event on updating operator.

LowSignature can be reused multiple timesFixed

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.

LowUnwanted require statementsFixed

Following require statements can be removed from line number 68 and 101 as msg.sender can never be zero address.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (2)

  • contracts/Token.sol
  • contracts/Subscription.sol

Part of ritestream’s security record

ritestream
Audits4 audits by 1 firmLast audit Jul 2024, by QuillAudits.
Critical findingsNo open critical findingsAcross 4 reports.
Open ritestream’s security record

Security firm

QuillAudits

350 projects reviewed · 459 reports · latest Apr 2025

See QuillAudits’s audits

Something 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