Car Coin

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed Central African Republic Meme (Car Coin) on 21 Apr 2025: 4 findings, 0 critical; 3 marked fixed, 1 open.

No open critical findings
Open the reportOpen Central African Republic Meme’s security record

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings4

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

SeverityOpenAcknowledgedFixed
Critical000
High102
Medium001
Low000
HighAuthority Address is Set to ZeroFixed

This contract is designed so that land can only be purchased using a message signed by a trusted authority (like an admin or backend service). To enforce this, it defines an AUTHORITY address that's supposed to represent the signer. But instead of setting it to a real address, the contract sets AUTHORITY = address(0), which is just an empty placeholder.address constant private AUTHORITY = address(0); On top of that, the line that checks if the signer of the message actually matches this AUTHORITY is commented out. This means the contract does not validate who signed the message — anyone can pass in a fake message with any signature, and the contract won’t stop it.

HighSignature BypassFixed

This contract handles land sales where users can buy land using an off-chain signed message. The buy function is supposed to verify that the message was signed by a trusted authority before allowing the purchase. However, the check is broken: it usesassert(isSignatureValid || !isSignatureValid);, which is always true. This means anyone can call buy with a fake or random message and still purchase land. The purpose of using off-chain signatures for permission is completely defeated.

MediumNo Replay Protection on Message TimestampFixed

The land sale contract relies on off-chain signatures to authorize purchases. Each signed message includes a timestamp, but the contract currently does not enforce any strict freshness checks. The timestamp is only weakly verified with a placeholder condition:assert(block.timestamp > timestamp); This means any previously signed message can be reused indefinitely, as long as the current time is after the message’s timestamp. This opens the door for replay attacks, where a buyer can submit the same message multiple times. This issue becomes critical when combined with the earlier fix we suggested—to allow land to be re-purchased after expiration by checking if block.timestamp > land.expiresAt. While this fix enables proper land reuse, it also means that without replay protection, a buyer can simply reuse an old signature with a previously agreed-upon price and expiration date. This allows them to bypass any updated pricing or terms, undermining the purpose of having dynamic pricing or rental durations.

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 (3)

  • Sale.sol
  • solidity/sale.sol
  • solidity/spl_token.sol

Part of Central African Republic Meme’s security record

Central African Republic Meme
Audits1 audit by 1 firmLast audit Apr 2025, by QuillAudits.
Critical findingsNo open critical findingsIn 1 report.
Open Central African Republic Meme’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