Shiba Saga security record

As of 3 Nov 2026, Shiba Saga has 1 audit report on Trustblock, by CertiK, dated 15 Oct 2023. That report lists no open critical findings. It also holds 2 deployed contracts on 1 chain.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
ShibaSagaSecurity firm: CertiKDate: Scope: 2 addresses on EthereumNo open critical findingsOpen · skynet.certik.com

Findings8

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

SeverityOpenAcknowledgedFixed
Critical000
High102
Medium001
Low004
HighCentralization Related RisksShibaSaga · CertiK · 15 Oct 2023Fixed

In the contract `VestingPoolFactory` the role `_owner` has authority over the functions shown in the diagram below. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-4091-5344d6c0-a7b9-058a64fee65d/diagrams/centralization_VestingPoolFactory-VestingPoolFactory-_owner.svg) - `createPool()`: This function is used to create a new vesting pool. The pool is created with the specified parameters: `_name`, `_token`, `_startTime`, and `_vestingDuration`. Once the pool is created, its address is added to the `vestingPools` array. The privileged role that has access to call this function is the `Owner`. - `createFullPool()`: This function is used to create a new full vesting pool. The pool is created with the specified parameters: `_name`, `_token`, `_startTime`, and `_vestingDuration`. Once the pool is created, its address is added to the `vestingPools` array. The privileged role that has access to call this function is the `Owner`. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and update the sensitive settings and execute sensitive functionalities of the project. ----- In the contract `Crowdsale` the role `_owner` has authority over the functions shown in the diagram below. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-3e9b-9646cf20-98cc-01aaa4278aa3/diagrams/centralization_Crowdsale-Crowdsale-_owner.svg) - `updateMaximumInvestment(uint256 newMaxInvestment)`: Allows the owner to update the maximum investment limit for participants. Only the contract owner can call this function. - `updateMinimumInvestment(uint256 newMinInvestment)`: Allows the owner to update the minimum investment limit for participants. Only the contract owner can call this function. - `updateWallet(address payable newWallet)`: Allows the owner to change the recipient wallet where the funds are forwarded. Only the contract owner can call this function. - `updateRate(uint256 newRate)`: Allows the owner to update the conversion rate between USDT and the token being sold. Only the contract owner can call this function. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and update the sensitive settings and execute sensitive functionalities of the project. ----- In the contract `SHIA` the role `_owner` has authority over the functions shown in the diagram below. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-3e9b-95e91ec0-98cc-01aaa4278aa3/diagrams/centralization_SHIA-SHIA-_owner.svg) - `mint(address to, uint256 amount)`: This function allows the minting of a specific amount of SHIA tokens to a given address. The privileged role that has access to call this function is the **Owner** of the contract. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and update the sensitive settings and execute sensitive functionalities of the project.

Open the report
HighCentralized Balance ManipulationShibaSaga · CertiK · 15 Oct 2023Fixed

In the contract `SHIA`, the role `owner` has the authority to update the token balance of an arbitrary account without sanity restriction. Any compromise to the `owner` account may allow a hacker to take advantage of this authority and manipulate users' balances by calling the `mint function to mint any amount of tokens to an arbitrary address.

Open the report
MediumMisassumption of USDT Decimals Can Lead to IncorrShibaSaga · CertiK · 15 Oct 2023Fixed

The function `_forwardFunds` assumes that `_usdt` (presumably the USDT token contract) operates with 6 decimals, which it tries to adjust with a hardcoded division by `10 ** 12`. However, there's no guarantee that `_usdt` indeed operates with 6 decimals, leading to potential incorrect value transfers.

Open the report
LowMissing Zero Address ValidationShibaSaga · CertiK · 15 Oct 2023Fixed

Addresses are not validated before assignment or external calls, potentially allowing the use of zero addresses and leading to unexpected behavior or vulnerabilities. For example, transferring tokens to a zero address can result in a permanent loss of those tokens. ```solidity=93 _usdt = usdt; ``` - `usdt` is not zero-checked before being used. ```solidity=139 _wallet = newWallet; ``` - `newWallet` is not zero-checked before being used.

Open the report
LowRedundant Code ComponentsShibaSaga · CertiK · 15 Oct 2023Fixed

The linked statements do not affect the functionality of the codebase and appear to be either leftovers from test code or older functionality. ```solidity=92 function _extendTime(uint256 newClosingTime) internal { require(!hasClosed(), "TimedCrowdsale: already closed"); // solhint-disable-next-line max-line-length require( newClosingTime > _closingTime, "TimedCrowdsale: new closing time is before current closing time" ); emit TimedCrowdsaleExtended(_closingTime, newClosingTime); _closingTime = newClosingTime; } ```

Open the report
LowUnnecessary Use of SafeMathShibaSaga · CertiK · 15 Oct 2023Fixed

The `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow. ```solidity=8 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `VestingPoolFactory` contract.

Open the report
LowVariables That Could Be Declared as ImmutableShibaSaga · CertiK · 15 Oct 2023Fixed

The linked variables assigned in the constructor can be declared as `immutable`. Immutable state variables can be assigned during contract creation but will remain constant throughout the lifetime of a deployed contract. A big advantage of immutable variables is that reading them is significantly cheaper than reading from regular state variables since they will not be stored in storage.

Open the report

Contracts2

AddressChainSource code
0x24c1b2ba959bd6713f0282318bb8d8281aa26b48Chain: EthereumSource code: Verified source
0x2da32d5c8c6f6b58ed0a16eeb163ce92e7687acdChain: EthereumSource code: Verified source

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="shiba-saga"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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