[ad_1]
Introdução
A CoinFabrik foi solicitada a auditar os contratos do projeto XAVA Protocol da Avalaunch.
Primeiro faremos um resumo de nossas descobertas e depois mostraremos o
detalhes de nossas descobertas.
Alcance
Os contratos auditados são do https://github.com/avalaunch-app/xava-protocol/
repositório git. A auditoria é baseada no commitfd9b97ccd963819a282fa5c21bf0545d180f8797. As revisões foram feitas com base em
comprometer-se 8c9f3c021f0a3366e9f8cfc3fd74163f31b57b40.
Os contratos auditados são:
● contratos/airdrop/Airdrop.sol
● contratos/airdrop/AirdropAVAX.sol
● contratos/airdrop/AirdropSale.sol
● contratos/farming/DevToken.sol
● contratos/agricultura/AgriculturaXava.sol
● contratos/interfaces/IAdmin.sol
● contratos/interfaces/IAllocationStaking.sol
● contratos/interfaces/IAvalaunchSale.sol
● contratos/interfaces/ICollateral.sol
● contratos/interfaces/IDexalotPortfolio.sol
● contratos/interfaces/IERC20Metadata.sol
● contratos/interfaces/ISalesFactory.sol
● contratos/vendas/AvalaunchSale.sol
● contratos/vendas/SalesFactory.sol
● contratos/utils/Context.sol
● contratos/Admin.sol
● contratos/AlocaçãoStaking.sol
● contratos/AvalaunchColateral.sol
● contratos/IERC20.sol
● contratos/XavaToken.sol
O escopo da auditoria é limitado a esses arquivos. Nenhum outro arquivo neste repositório foi
auditado. Supõe-se que suas dependências funcionem de acordo com sua documentação.
Além disso, nenhum teste foi revisado para esta auditoria.
Análises
Sem se limitar a eles, o processo de auditoria incluiu as seguintes análises:
● Erros aritméticos
● Versão desatualizada do compilador Solidity
● Condições de corrida
● Ataques de reentrada
● Uso indevido de carimbos de data/hora de bloqueio
● Ataques de negação de serviço
● Uso excessivo de gás
● Qualificadores de função ausentes ou mal utilizados
● Código desnecessariamente complexo e interações de contrato
● Tratamento de erros deficiente ou inexistente
● Validação insuficiente dos parâmetros de entrada
● Tratamento incorreto de assinaturas criptográficas
● Centralização e capacidade de atualização
Resumo das Constatações
Encontramos um problema crítico e quatro problemas menores. Além disso, algumas melhorias foram
proposto.
Problemas de segurança

Funções privilegiadas
A auditoria abrange 20 contratos, incluindo interfaces e bibliotecas. Contratos
como AllocationStaking e FarmingXava são de propriedade. O proprietário é responsável por
definir parâmetros de venda no primeiro caso e adicionar pools, definir pontos de alocação
no segundo caso.
Outros contratos, como AllocationStaking, AvalaunchBadgeFactory,
AvalaunchCollateral, os contratos de lançamento aéreo (Airdrop, AirdropAVAX, AirdropSale),
AvalaunchSale e SaleFactory fazem uso da interface Admin, definindo um
administrador na construção.
O novo contato da AvalaunchCollateral introduz ainda mais o papel do moderador
quem é responsável por aprovar as vendas para ter garantias de acordo com este contrato.
Problemas de segurança encontrados
Classificação de gravidade
Os riscos de segurança são classificados da seguinte forma:
● Crítico: Estas são questões que conseguimos explorar. Eles comprometem a
sistema a sério. Eles devem ser corrigidos imediatamente.
● Médio: Esses são problemas potencialmente exploráveis. Mesmo que não tivéssemos
conseguem explorá-los ou seu impacto não é claro, eles podem representar um
risco de segurança em um futuro próximo. Sugerimos corrigi-los o mais rápido possível.
● Menor: Esses problemas representam problemas relativamente pequenos ou difíceis
aproveitar, mas pode ser explorado em combinação com outras questões.
Esses tipos de problemas não bloqueiam implantações em ambientes de produção.
Eles devem ser levados em consideração e corrigidos sempre que possível.
Status dos problemas
Um problema detectado por esta auditoria pode ter quatro status distintos:
● Não resolvido: O problema não foi resolvido.
● Reconhecido: o problema permanece no código, mas é resultado de uma ação intencional
decisão.
● Resolvido: Implementação ajustada do programa para eliminar o risco.
● Parcialmente resolvido: Implementação ajustada do programa para eliminar parte do
risco. A outra parte permanece no código, mas é resultado de uma ação intencional
decisão.
● Mitigado: Ações implementadas para minimizar o impacto ou a probabilidade do
risco.
Problemas críticos de gravidade
CR-01 Licenças ilimitadas emitidas para administrador
Localização:
● contracts/AvalaunchCollateral.sol:135-176,● contracts/AvalaunchCollateral.sol:192-226
O administrador pode chamar autoParticipate() ou boostParticipation() no contrato
AvalaunchCollateral e agir em nome de um usuário, pagando com
garantia. O usuário só permite a venda (endereço), mas não pode limitar valores,
Recomendação
Inclua um valor (ou valor máximo) que o usuário permite que o administrador use.
Status
Resolvido. Os desenvolvedores nos informaram que este é o uso esperado. Os usuários devem
portanto, confie que o administrador selecionará o valor com segurança em seus interesses.
Problemas de gravidade média
Nenhum problema encontrado.
Problemas de gravidade menores
MI-01 Nenhuma rodada de reforço é possível
Dentro AvalaunchSale.setSalesParams() definimos o boosterRoundId como
boosterRoundId = _stakingRoundId.add(1);
após a seguinte verificação
require(_stakingRoundId > 0, "Invalid staking round id.");
No entanto, como stakingRoundId pode ser igual a roundIds.length-1 e
boosterRoundId poderia apontar para uma rodada inexistente, tornando o booster
rodada indisponível para todos os propósitos práticos.
Recomendação
Valide isso _stakingRoundId não é o último índice. Alternativamente, revisite o pedido em
quais parâmetros são definidos para evitar inconsistências entre o número de rodadas,
e rodadas específicas.
Status
Reconhecido. Os desenvolvedores explicaram que este é um comportamento esperado e o
rodada de reforço é opcional.
Pragma Flutuante MI-02
Localização:
● contracts/AvalaunchCollateral.sol:2
● contracts//DevToken.sol:2● contracts/interfaces/IAvalaunchSale.sol:2
● contracts/interfaces/IDexalotPortfolio.sol:2
● contracts/interfaces/ICollateral.sol:2
● contracts/interfaces/IERC20Metadata.sol:3
● contracts/utils/Context.sol:3
Os contratos devem ser implantados com a mesma versão do compilador em que foram
testado com. Bloquear o pragma ajuda a garantir que os contratos não
ser implantado usando, por exemplo, uma versão desatualizada do compilador que pode introduzir
bugs que afetam negativamente o sistema de contrato.
Recomendação
Bloqueie a versão pragma, substituindo a solidez pragma ^0.8.0; com um patch específico,
preferindo a versão mais atualizada. Por exemplo, a solidez do pragma 0.8.14;.
Status
Reconhecido.
Parâmetros inconsistentes MI-03 em AvalaunchSale e SalesFactory
Há um problema se o parâmetro de garantia definido em SalesFactory for diferente daquele
definido em AvalaunchSales.
Recomendação
Defina o parâmetro em apenas um contrato.
Status
Reconhecido.
MI-04 Prefere importar bibliotecas do NPM
Biblioteca IERC20Metadata.sol é armazenado localmente e importado, em vez de usar o NPM
para importá-lo do repositório do openzeppelin. Isso pode levar a erros na cópia ou
perder uma atualização.
Recomendação
Importe todo o código gerado externamente por meio do NPM.
Status
Reconhecido.
Melhorias
Esses itens não representam um risco de segurança. São as melhores práticas que nós
sugerir implementação.
Tabela

Detalhes
EN-01 Versão desatualizada do compilador Solidity
Os contratos auditados utilizam a versão desatualizada do solidity v0.6.12 (SWC-102).
Recomendação
Considere atualizar o código para compilar com a versão mais recente.
Status
Não implementado.
EN-02 Biblioteca achatada não utilizada
Versão antiga achatada do TransparentUpgradeableProxy do OpenZeppelin. Se não estiver usando
a versão mais recente, os desenvolvedores devem especificar qual versão estão usando para que possamos verificar
para problemas relatados.
Recomendação
Documente o uso dessa variável e permita modificações.
Status
Não implementado.
EN-03 tokenPriceInUSD não é usado e enganoso
A variável tokenPriceInUSD em AvalauncSale.sol é enganoso, uma vez que não é usado
por nenhuma das funções de venda nem precisa ter qualquer relação comtokenPriceInAVAX. Também tokenIpriceInAVAX pode ser alterado, mas isso não pode.
Recomendação
Documente o uso dessa variável e permita modificações.
Status
Não implementado.
EN-04 dexalotPortfolio pode ser definido antes da venda ser criada
Certifique-se de que a venda seja criada em setAndSupportDexalotPortfolio()
EN-05 admin Array não verificado quanto a repetições durante a construção
Localização:
● Admin.sol:18-24.
No construtor de Admin.sol pode acontecer que um endereço se repita no
matriz de entrada _addresses. Se isso acontecer, o mesmo endereço seria empurrado mais
de uma vez para os administradores do array e pode criar inconsistências, por exemplo, ao chamarremoveAdmin(). Recomendamos que você verifique isAdmin[_admins[i]] = falso
antes de transformá-lo em verdade.
EN-06 Substituir Inteiros por Constantes
Dentro FarmingXava.sol substituir ocorrências de 1e18 e 1e36 por uma chamada ou uma constante
(por exemplo, IERC20Metadata(address(token)).decimals() como é feito noAvalaunchSale.sol contrato).
EN-07 Duas bibliotecas safeMath
Alguns contratos importam a biblioteca safeMath do OpenZeppelin e outros usam um
biblioteca safeMath (math/safeMath.sol) que é uma cópia do safeMath do OpenZeppelin
com algumas modificações. Além disso, observe que alguns contratos, como AirdropSale.sol, estão
importando safeMath mas não usando. Nesse caso, considere remover e economizar gás.
EN-08 Documentação
Use o formato NatSpec do Solidity para documentação (link), removendo “todo”s e outros
comentários de desenvolvimento.
Registro de alterações
● 22/03/2022 – Relatório inicial baseado em confirmação
fd9b97ccd963819a282fa5c21bf0545d180f8797.
● 05-04-2022 – Revisão baseada em confirmação
8c9f3c021f0a3366e9f8cfc3fd74163f31b57b40.
Isenção de responsabilidade: Este relatório de auditoria não é uma garantia de segurança, conselho de investimento ou
aprovação do projeto Avalaunch XAVA Protocol uma vez que a CoinFabrik não
revisou sua plataforma. Além disso, não fornece um código de contrato inteligente
garantia de infalibilidade.
[ad_2]
Fonte da Notícia: blog.coinfabrik.com
Isenção de responsabilidade
Todas as informações contidas em nosso site são publicadas de boa fé e apenas para fins de informação geral. Qualquer ação que o leitor tome com base nas informações contidas em nosso site é por sua própria conta e risco.


