Décembre, 2021 - Lucky Block

 
CONTINUER À LIRE
10. Décembre, 2021
Avis de non-responsabilité                                                 3
Description                                                                5
Participation au projet                                                    5
Logo                                                                       5
Lien avec le contrat                                                       5
Méthodologie                                                               7
Code utilisé issu d'autres Frameworks/Smart Contracts (importations directes)
                                                                           8
Fichiers de contrat testés                                                 9
Lignes sources                                                            10
Niveau de risque                                                          10
Capacités                                                                 11
Portée du programme                                                       13
Graphique de cohérence                                                    13
Vérifier les réclamations                                                 14
Modificateurs                                                             20
CallGraph                                                                 22
Unités sources dans la gamme des travaux                                  23
Problèmes critiques                                                       24
Problèmes importants                                                      24
Problèmes moyens                                                          24
Enjeux faibles                                                            24
Questions d'information                                                   25
Existence de codes commentés                                              25
Commentaires d'audit                                                      25
Attaques de CFC                                                           26

                                                                          2
Déclaration de non-responsabilité

Les rapports de SolidProof.io ne sont pas, et ne doivent pas être considérés comme une "
validation " ou une " non validation " d'un projet ou d'une équipe en particulier. Ces rapports
ne sont pas, et ne doivent pas être considérés comme une indication de la valeur
économique ou de la qualité de tout "produit" ou "actif" créé par une équipe. SolidProof.io
ne couvre pas le test ou l'audit de l'intégration avec un contrat ou des services externes (tels
que Unicrypt, Uniswap, PancakeSwap etc'...)

Les audits de SolidProof.io ne fournissent aucune garantie concernant
l'absence absolue de bugs dans la technologie analysée, et ne
fournissent aucune indication sur les propriétaires de la technologie.
Les audits SolidProof ne doivent en aucun cas être utilisés pour prendre
des décisions d'investissement ou d'implication dans un projet
particulier. Ces rapports ne fournissent en aucun cas des conseils
d'investissement, et ne doivent pas être utilisés dans ce cadre.

Les rapports SolidProof.io représentent un processus d'audit approfondi
visant à aider nos clients à améliorer la qualité de leur code tout en
réduisant le niveau de risque élevé présenté par les jetons
cryptographiques et la technologie blockchain. La technologie blockchain
et les actifs cryptographiques présentent un niveau élevé et permanent
de risque. La position de SolidProof est que chaque entreprise et chaque
individu doivent être responsables de leur propre vigilance et de leur
sécurité. SolidProof ne revendique en aucun cas une garantie de sécurité
ou de fonctionnalité de la technologie que nous acceptons d'analyser.

 Version                         Date                           Description

 1.0                             10 décembre 2021               - Projet de mise en page
                                                                - Test de sécurité
                                                                automatisé/manuel
                                                                - Résumé

                                                                                            3
Network
Binance Smart Chain (BEP20)

Website
http://www.luckyblock.io/

Telegram
https://telegram.me/Brugusoftwaresolutions

Twitter
https://twitter.com/bruguLimited

Facebook
https://www.facebook.com/brugu-Software-Solutions-Private-
Limited-633020260535362/

LinkedIn
https://www.linkedin.com/company/brugu-software-solutions

Pinterest
https://in.pinterest.com/brugusoftwaresolutions/

Tumblr
https://bruguhyderabad.tumblr.com/

Skype
https://brugu.io/Skype:live:.cid.b79cb4ad18ef5536

Whatsapp
https://api.whatsapp.com/send?l=en&text=Hi!
%20I%27m%20interested%20in%20one%20of%20your%20products%20at
%20BRUGU%20SOFTWARE%20SOLUTIONS&phone=919003444928

                                                             4
Description
Nous aidons les entrepreneurs, les startups et les entreprises à concrétiser
leurs idées commerciales grâce à des technologies de pointe.

Engagement envers le projet

Le 29 novembre 2021, l'équipe de Brugu a engagé Solidproof.io pour
auditer les contrats intelligents qu'elle a conçus. La mission était de nature
technique et visait à identifier les failles de sécurité dans la conception et
la mise en œuvre des contrats. Ils ont fourni à Solidproof.io un accès à leur
dépôt de code et à leur livre blanc.

Logo

Lien avec le contrat
v1.0
•   https://bscscan.com/address/
    0x2cd96e8c3ff6b5e01169f6e3b61d28204e7810bb#code

                                                                          5
Vulnérabilité et niveau de risqué
Le risque représente la probabilité qu'une certaine source-menace exploite la vulnérabilité,
et l'impact de cet événement sur l'organisation ou le système. Le niveau de risque est calculé
sur la base de la version 3.0 du CVSS.

          Nive                  Valeur              Vulnérabilité       Risque
           au                                                           (Action requise)
                                               Une vulnérabilité qui
                                               peut perturber le
                                               fonctionnement du
                                                                          Action immediate
      Critique                   9 - 10        contrat dans un
                                                                            pour réduire le
                                               certain nombre de
                                                                           niveau de risque.
                                               cas, ou qui crée un
                                               risque de rupture du
                                               contrat
                                               Une vulnérabilité
                                               affectant le résultats
                                               attendu lors de           Mise en œuvre des
        Élevé                   7 – 8.9        l'utilisation d'un        actions correctives
                                               contrat, ou offrant la    dans les meilleurs
                                               possibilité d'utiliser          délais.
                                               un contrat de
                                               manière non
                                               intentionnelle.
                                               Une vulnérabilité
                                               pouvant affecter le
                                                                         Mise en œuvre des
                                               résultat escompté
       Moyen                    4 – 6.9
                                               par l'exécution du
                                                                         actions correctives
                                                                        dans un certain délai.
                                               contrat dans un
                                               scénario spécifique.

                                               Une vulnérabilité qui
                                               n'a pas d'impact
                                                                         Mise en œuvre de
                                               significatif sur les
                                                                         certaines actions
         Bas                    2 – 3.9        scénarios possibles
                                                                          correctives ou
                                               pour l'utilisation du
                                                                         d’acceptation du
                                               contrat et qui est
                                                                              risque
                                               éventuellement
                                               subjective.
                                               Une vulnérabilité
                                               qui a un caractère       Une constatation qui
      A titre                   0 – 1.9        informatif    mais       ne détermine pas un
                                               n’affectant pas le         niveau de risque
    informatif                                 code.

                                                                                             6
Stratégie et techniques d'audit
 utilisées.
Tout au long du processus de révision, nous avons pris soin d'évaluer le référentiel pour les
problèmes liés à la sécurité, la qualité du code et le respect des spécifications et des
meilleures pratiques. Pour ce faire, notre équipe d'experts pentestres et de développeurs de
contrats intelligents a examiné le code ligne par ligne, en répertoriant tous les problèmes au
fur et à mesure qu'ils étaient découverts.

 Methodologie

Le processus d'audit suit une série d'étapes de base :
1.      Examen du code qui comprend les éléments suivants :
i) Examen des spécifications, des sources et des instructions fournies à SolidProof pour
s'assurer que nous saisissons la taille, la portée et la fonctionnalité du contrat intelligent.
ii) Examen manuel du code, qui consiste à lire le code-source ligne par ligne afin d'identifier
les vulnérabilités potentielles.
iii) Comparaison avec les spécifications, qui consiste à vérifier si le code fait ce que
décrivent les spécifications, les sources et les instructions fournies à SolidProof.

2.      Les tests et l'analyse automatisée qui comprennent les éléments suivants :
i) L'analyse de la portée des tests, qui est le processus consistant à déterminer si les cas
testés couvrent réellement le code et quelle quantité de code est utilisée.
ii) L'exécution symbolique, qui consiste à analyser un programme pour déterminer quelles
entrées provoquent l'exécution de chaque partie du programme.

3.    L'examen des meilleures pratiques, qui est un examen des contrats intelligents pour
améliorer l'efficience, l'efficacité, la clarté, la maintenabilité, la sécurité et le contrôle sur la
base des pratiques, des recommandations et des recherches établies par l'industrie et le
monde universitaire.

4.    Des recommandations spécifiques, détaillées et concrètes pour vous aider à prendre
des mesures sécurisant vos contrats intelligents.

                                                                                                  7
Code utilisé à partir d’autres Frameworks/Smart
Contracts (imports directs)
Package importés:

                                                  8
Fichiers de contrats testés

Cet audit a porté sur les fichiers énumérés ci-dessous avec un Hash SHA-1.

Un fichier dont le hachage est différent a été modifié, intentionnellement
ou non, après l'examen de sécurité. Un Hash différent pourrait être (mais
pas nécessairement) une indication d'une modification de la situation ou
d'une vulnérabilité potentielle qui n'entrait pas dans le cadre de cet
examen.

v1.0

                                                                        9
Metrics
Source Lines
v1.0

Niveau de risques
v1.0

                    10
Capacités
Composants
  Version       Contracts             Libraries          Interfaces            Abstract

1.0                           1                   3                   5                   2

Fonctionnalités exposées

Cette section répertorie les fonctions qui sont expressément déclarées
publiques ou payantes. Veuillez noter que les méthodes getter pour les
stateVars publiques ne sont pas incluses..

  Version    Public         Payable

1.0               58                  3

  Version     External        Internal         Private        Pure               View

1.0                    39                 90             7                23              19

Variables d’état
  Version     Total          Public

1.0                   43                  27

Capacités
                                                                                 Has
              Versions        Caractér          Possibilité   Assembl            Destroya
  Version     observée        istiques         de             ée des             ble
              s de            expérim          recevoir       Utilisate          Contract
              Solidity        entales          des fonds      urs                s

1.0                                                           oui
              ^0.8.0                           oui            (2 asm
                                                              blocks)

                                                                                            11
Uses             New/
           Transf   Low-
                            Delega   Hash     ECRec   Create/
 Version   ers      Level
                            teCall   Functi   over    Create
           ETH      Calls
                                     ons              2

1.0

                                                                12
Champ d'application du programme de travail

L'équipe ci-dessus nous a fourni les fichiers qui doivent être testés
(Github, Bscscan, Etherscan, fichiers, etc.). La portée de l'audit concerne le
contrat principal (qui porte habituellement le même nom que l'équipe,
suivi de .sol).

Nous vérifierons les affirmations suivantes :
1.     Mise en œuvre correcte de la norme Token
2.     Le distributeur ne peut pas frapper de nouveaux jetons.
3.     Le distributeur ne peut pas brûler ou bloquer les fonds des
utilisateurs
4.     Le distributeur ne peut pas mettre le contrat en pause
5.     Contrôle global (Sécurité des contrats intelligents)

Graphique des hierarchies
v1.0

                                                                           13
Vérifier les reclamations
Mise en œuvre correcte de la norme Token
 Testé      Verifié

  ✓           ✓
      Fonction                    Description                Exist   Testé   Verifié
                                                               e
                      fournit des informations sur l'offre
    TotalSupply
                                  totale de jetons           ✓ ✓              ✓
                        indique le solde du compte du
     BalanceOf
                               propriétaire                  ✓ ✓              ✓
                       exécute les transferts d'un nombre
         Transfer        précis de jetons à une adresse
                                     donnée.
                                                             ✓ ✓              ✓
                       exécute les transferts d'un nombre
   TransferFrom          précis de jetons à partir d'une
                              adresse spécifique.
                                                             ✓ ✓              ✓
                       permettre à un usager de retirer
      Approve          un nombre déterminé de jetons
                           d'un compte spécifique.
                                                             ✓ ✓              ✓
                      renvoie un nombre déterminé de
     Allowance
                            jetons d'un débiteur à son       ✓ ✓              ✓
                            propriétaire.

                                                                                   14
Rédiger les fonctions du contrat

                                   15
Le distributeur ne peut pas frapper de nouveaux jetons.
          Name                  Exist          Tested   Verified

   Le distributeur ne
  peut pas ''frapper'' sa
                                  -              -         -
    propre monnaie
Provision maximale / totale: 100.000.000.000

                                                                   16
Le distributeur ne peut pas ‘’brûler’’ ou verrouiller les
fonds des utilisateurs
        Name            Exist   Tested        Verified

   Le distributeur ne
          peut pas      ✓         ✓              ✘
          vérouiller
   Le distributeur ne
         peut pas       ✓         ✓             ✓
         ‘’brûler’’

Commentaires:
v1.0
- Les frais sont calculés par la fonction collectFee.
- Le distributeur peut mettre une adresse sur liste noire
- Le distributeur peut bloquer les fonds de l'utilisateur en fixant le temps
de ''rafraîchissement'' et le montant.
- Le distributeur peut mettre sur liste noire les adresses achetant des
jetons dont l'horodatage est inférieur à listedAt + 3 minutes.

                                                                           17
Le distributeur ne peut pas mettre le contrat en pause
       Name            Exist   Tested   Verified

  Le distributeur ne
        peut pas        -        -         -
        mettre en
        pause

                                                         18
Bilan global (Smart Contract Security)
Testé       Verifié

  ✓             ✓
Legende
           Attribut        Symbol

            Vérifié         ✓
   Vérifié partiellement    ⚑
          Non vérifié       ✘
        Non disponible      -

                                         19
Modificateurs

Commentaires
- Le distributeur peut activer
      - isFeeActive
      - swapAndLiquifyEnabled
      - sellCooldownEnabled

                                 20
- Le distributeur peut configurer les variables suivantes sans aucune
restriction
      - TaxFee
      - LiquifyFee
      - LotteryPoolFee

     - nftRoyalPoolFee
     - burnFee
     - maxTxAmountPourcentage

- La variable n'a pas d'effet sur maxTxAmount après la modification de
      - minTokensBeforeSwap
      - sellCooldownTime
      - sellCooldownAmount

                                                                         21
Graphique d'appel (CallGraph)

                                22
Unités de source dans le champ d'application
v1.0

Legende
Attribut           Description

Lines              nombre total de lignes de l'unité source

                   lignes normalisées de l'unité source (par exemple,
nLines
                   normalisation des fonctions couvrant plusieurs lignes)

                   lignes de code source normalisées (uniquement les lignes
nSLOC
                   de code source ; pas de commentaires, pas de lignes
                   laissées vides)
Comment Lines      les lignes contenant des commentaires simples ou en série.

                   un indice de complexité spécifique dérivé des instructions de
Complexity Score   code connues pour introduire de la complexité dans le code
                   (branches, boucles, appels, interfaces externes, ...).

                                                                                   23
Résultats de l'audit

              AUDIT RÉUSSI
Problèmes majeurs
- aucun -

Problèmes importants
- aucun -

Problèmes d’importance moyenne
- aucun -
 Probl      Fichie          Type                Lign                 Description
 ème        r                                     e
#1       Principal Vulnérabilités de                1024 Appliquer le [motif `check-
                   réentrée (Reentrancy)                 effects-
                                                         interactions`](http://
                                                         solidity.readthedocs.io/fr/
                                                         v0.4.21/security-
                                                         considerations.html#re-
                                                         entrancy).ou le modificateur
                                                         non Reentrant
                                                         d'OpenZeppelin

Problèmes d’importance faible
 Probl      Fichie          Type                Lign                 Description
 ème        r                                     e
#1       Principal Le contrat n'importe     -               Nous recommandons
                   pas les paquets npm                      d'importer tous les paquets
                   depuis la source                         de npm directement sans
                   (comme                                   écraser le contrat. Les
                   OpenZeppelin etc.)                       fonctions pourraient être
                                                            modifiées ou être sujettes à
                                                            des vulnérabilités.
#2       Principal   Un pragma ("floating                 8 La consigne pragma Solidity
                      pragma") est défini                   actuelle est ""^0.8.0"".

#3       Principal Validation de            1402, 1365,     Vérifiez que l'adresse n'est
                   l'adresse du zéro        1346, 1354,     pas égale à zéro
                   manquant (missing-       1350, 1343
                   zero-check)

                                                                                           24
#4   Principal La visibilité de la     767, 768,   La meilleure pratique consiste
               variable d'état n'est   790,        à définir de façon explicite la
               pas définie                         visibilité des variables d'état.

                                                                                 25
Problèmes indiqués à titre d'information
 Probl       Fichie             Type                    Lign                   Description
 ème         r                                            e
 #1      Principal Variables d'état qui            757, 755,        Ajouter les attributs
                   pourraient être                 756, 764,        `constant` aux variables
                   déclarées constantes            790, 773         d'état qui ne changent
                   (constable- states)                              jamais
 #2      Principal Valeurs de retour                         1272 Veillez à ce que toutes les
                   inutiles                                       valeurs de retour des appels
                                                                  de fonction soient utilisées
                                                                  et prenez en charge les cas
                                                                  de réussite et d'échec si la
                                                                  logique métier l'exige.

Existence de codes commentés
Il y a quelques cas de code commenté dans les fichiers suivants qui
devraient être supprimés :

 Line           Comment

          837 // IPancakeswapV2Router02 _pancakeswapV2Router =
              IPancakeswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //
              Uniswap Router For Ethereum

 1327-1329      // function setSellFee(uint256 fee) external onlyOwnerAndAdmin {
                // sellFee = fee;
                // }

Recommendation
Supprimez le code commenté, ou traitez-les comme il convient.

Commentaires concernant l’Audit
10. Décembre 2021:
- Lire le rapport complet pour plus d'informations

                                                                                               26
SWC Attacks
 ID         Titre               Relations               État

SW     Données         CWE-767: Access to Critical
C-13   privées non     Private Variable via Public     APPROUV
6      cryptées On-    Method                                É
       Chain

SW     Code sans
C-13                   CWE-1164: Irrelevant Code       APPROUV
       effets                                                É
5

SW     Appel de
       message avec    CWE-655: Improper
C-13                                                   APPROUV
       une quantité    Initialization                        É
4
       de gaz codée
       en dur

       Collisions de
SW     hachage avec    CWE-294: Authentication
C-13   des arguments                                   APPROUV
                       Bypass by Capture-replay              É
3      multiples de
       longueur
       variable

SW     Solde d'éther
C-13                   CWE-667: Improper Locking       APPROUV
       inattendu                                             É
2

SW     Présence de
C-13   variables       CWE-1164: Irrelevant Code       APPROUV
1      inutilisées                                           É

       Caractère de
SW     contrôle        CWE-451: User Interface (UI)
C-13   d'annulation    Misrepresentation of Critical   APPROUV
0      de droite à     Information                           É
       gauche
       (U+202E)

SW     Erreur          CWE-480: Use of Incorrect
C-12                                                   APPROUV
       typographique   Operator                              É
9

                                                                 27
SW     DoS avec limite   CWE-400: Uncontrolled
C-12                                             APPROUV
       de gaz de         Resource Consumption          É
8      blocage

                                                           28
SW     Saut arbitraire   CWE-695: Use of Low-Level
C-12   avec une                                           APPROUVÉ
                         Functionality
7      variable de
       type fonction

SW     Ordre             CWE-696: Incorrect Behavior
C-12   d'héritage                                         APPROUVÉ
                         Order
5      incorrect

SW     Écriture
       dans un           CWE-123: Write-what-where
C-12                                                      APPROUVÉ
       emplace           Condition
4
       ment de
       stockage
       arbitrair
       e

SW     Violation des     CWE-573: Improper Following
C-12                                                      APPROUVÉ
       exigences         of Specification by Caller
3

SW     Absence de        CWE-345: Insufficient
C-12   vérification      Verification of Data             APPROUVÉ
2      correcte de la    Authenticity
       signature

       Absence de
SW     protection        CWE-347: Improper Verification
C-12   contre les                                         APPROUVÉ
                         of Cryptographic Signature
1      attaques par
       relecture de
       signature

SW     Faibles sources
       d'aléa des        CWE-330: Use of Insufficiently
C-12                                                      APPROUVÉ
       attributs de la   Random Values
0
       chaîne

SW     Variables         CWE-710: Improper Adherence
C-11                                                      APPROUVÉ
       d'état cachées    to Coding Standards
9

SW     Nom de            CWE-665: Improper
C-11   constructeur                                       APPROUVÉ
                         Initialization
8      incorrect

                                                                     29
SW     Malléabilité   CWE-347: Improper Verification
C-11                                                   APPROUVÉ
       de la          of Cryptographic Signature
7      signature

                                                                  30
SW      Dépendance        CWE-829: Inclusion of
C-11                      Functionality from Untrusted   APPROUVÉ
        vis-à-vis de
6       l'horodatage      Control Sphere

SW      Autorisation      CWE-477: Use of Obsolete
C-11    par tx.origin                                    APPROUVÉ
                          Function
5

                          CWE-362: Concurrent
SW      Dépendance        Execution using Shared
C-11    de l'ordre de     Resource with Improper         APPROUVÉ
4       transaction       Synchronization ('Race
                          Condition')

SW      DoS avec échec    CWE-703: Improper Check or
C-11                      Handling of Exceptional        APPROUVÉ
        de l'appel
3                         Conditions

SW      Appel par         CWE-829: Inclusion of
C-11    délégation à un   Functionality from Untrusted   APPROUVÉ
2       destinataire      Control Sphere
        non fiable

        Utilisation
SW      de                CWE-477: Use of Obsolete
                                                         APPROUVÉ
C-111   fonctions         Function
        Solidity
        obsolètes

SW                        CWE-670: Always-Incorrect
C-11    Violation de                                     APPROUVÉ
                          Control Flow Implementation
0       l'assertion

SW      Pointeur de       CWE-824: Access of
C-10                                                     APPROUVÉ
        stockage non      Uninitialized Pointer
9       initialisé

SW      Visibilité par    CWE-710: Improper Adherence
C-10    défaut d'une                                       NON
                          to Coding Standards            APPROUVÉ
8       variable
        d'état

SW                        CWE-841: Improper
C-10    Réentraînement    Enforcement of Behavioral        NON
7                         Workflow                       APPROUVÉ

                                                                    31
SW     SELFDESTRUC     CWE-284: Improper Access
C-10   non protégé                                APPROUVÉ
                       Control
6      T Instruction

                                                             32
SW     Retrait          CWE-284: Improper Access
C-10   d'éther non                                       APPROUVÉ
                        Control
5      protégé

SW     Valeur de        CWE-252: Unchecked Return
C-10                                                       NON
       retour d'appel   Value                            APPROUVÉ
4      non vérifiée

SW     Pragme           CWE-664: Improper Control of
C-10                    a Resource Through its             NON
       flottant                                          APPROUVÉ
3                       Lifetime

SW     Version          CWE-937: Using Components
C-10   obsolète                                          APPROUVÉ
                        with Known Vulnerabilities
2      du
       compilat
       eur

SW     Débordement
C-10   et sous-         CWE-682: Incorrect Calculation   APPROUVÉ
1      exécution de
       nombres
       entiers

SW     Visibilité de    CWE-710: Improper Adherence
C-10   la fonction                                       APPROUVÉ
                        to Coding Standards
0      par défaut

                                                                    33
30
Vous pouvez aussi lire