diff --git a/docs/presentation_17_03_23/centralisation/img_plateformes/Achat-Vente.png b/docs/presentation_17_03_23/centralisation/img_plateformes/Achat-Vente.png deleted file mode 100644 index 4167342..0000000 Binary files a/docs/presentation_17_03_23/centralisation/img_plateformes/Achat-Vente.png and /dev/null differ diff --git a/docs/presentation_17_03_23/centralisation/img_plateformes/transaction.png b/docs/presentation_17_03_23/centralisation/img_plateformes/transaction.png new file mode 100644 index 0000000..9b40f04 Binary files /dev/null and b/docs/presentation_17_03_23/centralisation/img_plateformes/transaction.png differ diff --git a/docs/presentation_17_03_23/centralisation/plateformes.tex b/docs/presentation_17_03_23/centralisation/plateformes.tex index 7a0a856..6ff9764 100644 --- a/docs/presentation_17_03_23/centralisation/plateformes.tex +++ b/docs/presentation_17_03_23/centralisation/plateformes.tex @@ -17,14 +17,12 @@ \begin{frame}{Fonctionnement} \begin{block}{Méthode de l'Order Book} \begin{itemize} - \item Enregistrement de l'utilisateur (KYC). - \item Dépôt des fonds dans un porte monnaie de la plate-forme. - \item Émission d'IOU\footnotemark. - \item Échange des IOU contre les tokens demandés. + \item Ordres d'achats. + \item Offres de ventes. \end{itemize} \end{block} \centering - \includegraphics[scale = 0.25]{centralisation/img_plateformes/Achat-Vente.png} + \includegraphics[scale = 0.5]{centralisation/img_plateformes/transaction.png} \end{frame} \begin{frame}{Avantages et inconvénients} diff --git a/docs/presentation_metier/centralisation/img/nomad_fixed.png b/docs/presentation_metier/centralisation/img/nomad/nomad_code_fixed.png similarity index 100% rename from docs/presentation_metier/centralisation/img/nomad_fixed.png rename to docs/presentation_metier/centralisation/img/nomad/nomad_code_fixed.png diff --git a/docs/presentation_metier/centralisation/img/nomad_hack.png b/docs/presentation_metier/centralisation/img/nomad/nomad_code_hack.png similarity index 100% rename from docs/presentation_metier/centralisation/img/nomad_hack.png rename to docs/presentation_metier/centralisation/img/nomad/nomad_code_hack.png diff --git a/docs/presentation_metier/centralisation/img/nomad/nomad_contracts.png b/docs/presentation_metier/centralisation/img/nomad/nomad_contracts.png new file mode 100644 index 0000000..b99cb10 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/nomad/nomad_contracts.png differ diff --git a/docs/presentation_metier/centralisation/img/nomad/nomad_fonc.png b/docs/presentation_metier/centralisation/img/nomad/nomad_fonc.png new file mode 100644 index 0000000..d4f8413 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/nomad/nomad_fonc.png differ diff --git a/docs/presentation_metier/centralisation/img/nomad/nomad_hack.png b/docs/presentation_metier/centralisation/img/nomad/nomad_hack.png new file mode 100644 index 0000000..b2007b7 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/nomad/nomad_hack.png differ diff --git a/docs/presentation_metier/centralisation/img/sysvar_transaction.png b/docs/presentation_metier/centralisation/img/sysvar_transaction.png deleted file mode 100644 index 0c96d56..0000000 Binary files a/docs/presentation_metier/centralisation/img/sysvar_transaction.png and /dev/null differ diff --git a/docs/presentation_metier/centralisation/img/fonctions.png b/docs/presentation_metier/centralisation/img/wormhole/fonctions.png similarity index 100% rename from docs/presentation_metier/centralisation/img/fonctions.png rename to docs/presentation_metier/centralisation/img/wormhole/fonctions.png diff --git a/docs/presentation_metier/centralisation/img/fonctions_atk.png b/docs/presentation_metier/centralisation/img/wormhole/fonctions_atk.png similarity index 100% rename from docs/presentation_metier/centralisation/img/fonctions_atk.png rename to docs/presentation_metier/centralisation/img/wormhole/fonctions_atk.png diff --git a/docs/presentation_metier/centralisation/img/sysvar_atk.png b/docs/presentation_metier/centralisation/img/wormhole/sysvar_atk.png similarity index 100% rename from docs/presentation_metier/centralisation/img/sysvar_atk.png rename to docs/presentation_metier/centralisation/img/wormhole/sysvar_atk.png diff --git a/docs/presentation_metier/centralisation/img/wormhole/sysvar_trans_normal.png b/docs/presentation_metier/centralisation/img/wormhole/sysvar_trans_normal.png new file mode 100644 index 0000000..5a8938b Binary files /dev/null and b/docs/presentation_metier/centralisation/img/wormhole/sysvar_trans_normal.png differ diff --git a/docs/presentation_metier/centralisation/img/wormhole/sysvar_transaction_hack.png b/docs/presentation_metier/centralisation/img/wormhole/sysvar_transaction_hack.png new file mode 100644 index 0000000..c89dd01 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/wormhole/sysvar_transaction_hack.png differ diff --git a/docs/presentation_metier/centralisation/img/worm_fixed.png b/docs/presentation_metier/centralisation/img/wormhole/worm_fixed.png similarity index 100% rename from docs/presentation_metier/centralisation/img/worm_fixed.png rename to docs/presentation_metier/centralisation/img/wormhole/worm_fixed.png diff --git a/docs/presentation_metier/centralisation/img/wormhole/worm_fonc.png b/docs/presentation_metier/centralisation/img/wormhole/worm_fonc.png new file mode 100644 index 0000000..491b6e1 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/wormhole/worm_fonc.png differ diff --git a/docs/presentation_metier/centralisation/img/wormhole/worm_hack.png b/docs/presentation_metier/centralisation/img/wormhole/worm_hack.png new file mode 100644 index 0000000..b66f677 Binary files /dev/null and b/docs/presentation_metier/centralisation/img/wormhole/worm_hack.png differ diff --git a/docs/presentation_metier/centralisation/nomad.tex b/docs/presentation_metier/centralisation/nomad.tex index 32e7044..bab0435 100644 --- a/docs/presentation_metier/centralisation/nomad.tex +++ b/docs/presentation_metier/centralisation/nomad.tex @@ -1,31 +1,41 @@ -\begin{frame}{Le protocole Nomad} - \begin{block}{Mise en contexte} - \begin{itemize} - \item Protocole d'échange inter-blockchains. - \item Utilisation de \textit{smart contracts}. - \end{itemize} - \end{block} - \begin{block}{Les \textit{smart contracts}} - \begin{itemize} - \item \textit{Home} : "Boite d'envoi", déployé sur les blockchain source. - \item \textit{Replica} : "Boite de réception", déployé sur les blockchains de destination. - \end{itemize} - \end{block} +\begin{frame}{Nomad - Mise en contexte} + \centering + \includegraphics[scale = 0.8]{centralisation/img/nomad/nomad_contracts.png} \end{frame} -\begin{frame}{Le protocole Nomad} - \begin{block}{Fonctionnement d'une transaction} - \begin{itemize} - \item Création de la transaction. - \item Vérification du message par sa racine. - \item Accepte la racine. - \item Envoi. - \end{itemize} - \end{block} +%\begin{frame}{Le protocole Nomad} +% \begin{block}{Mise en contexte} +% \begin{itemize} +% \item Protocole d'échange inter-blockchains. +% \item Utilisation de \textit{smart contracts}. +% \end{itemize} +% \end{block} +% \begin{block}{Les \textit{smart contracts}} +% \begin{itemize} +% \item \textit{Home} : "Boite d'envoi", déployé sur les blockchain source. +% \item \textit{Replica} : "Boite de réception", déployé sur les blockchains de destination. +% \end{itemize} +% \end{block} +%\end{frame} + +\begin{frame}{Nomad - Mise en contexte} + \centering + \includegraphics[scale = 0.9]{centralisation/img/nomad/nomad_fonc.png} \end{frame} -\begin{frame}{L'attaque} - \begin{block}{L'attaque} +%\begin{frame}{Le protocole Nomad} +% \begin{block}{Fonctionnement d'une transaction} +% \begin{itemize} +% \item Création de la transaction. +% \item Vérification du message par sa racine. +% \item Accepte la racine. +% \item Envoi. +% \end{itemize} +% \end{block} +%\end{frame} + +\begin{frame}{Nomad - L'attaque} + \begin{block}{Attaque sur les briges de Nomad} \begin{itemize} \item Premier Août 2022. \item Apparu après mise a jour utilisant la fonction \textit{process} pour vérifier la racine. @@ -41,29 +51,31 @@ \end{block} \end{frame} -\begin{frame}{L'attaque} +\begin{frame}{Nomad - L'attaque} \begin{block}{Erreur d'initialisation} \begin{itemize} - \item Racine initialisée à $0$, fonctionnement normal. - \item Mais, racine $0$ pré-approuvée. - \item Tout message non vérifié sera valide. + \item Racine initialisée à $0$. + \item Racine $0$ pré-approuvée. \end{itemize} + $\rightarrow$ Tout message non vérifié sera valide. \end{block} - \begin{figure} \centering - \includegraphics[scale = 0.3]{centralisation/img/nomad_hack.png} - \caption{Contrat Réplica erroné} - \end{figure} + \includegraphics[scale = 0.35]{centralisation/img/nomad/nomad_code_hack.png} \end{frame} -\begin{frame}{L'attaque} +\begin{frame}{Nomad - L'attaque} + \centering + \includegraphics[scale = 0.9]{centralisation/img/nomad/nomad_hack.png} +\end{frame} + +\begin{frame}{Nomad - Correctif} \begin{itemize} \item Correction le 3 septembre 2022 \item La racine nulle n'est plus pré-approuvée. \end{itemize} \begin{figure} \centering - \includegraphics[scale = 0.3]{centralisation/img/nomad_fixed.png} + \includegraphics[scale = 0.35]{centralisation/img/nomad/nomad_code_fixed.png} \caption{Contrat Réplica corrigé} \end{figure} \end{frame} \ No newline at end of file diff --git a/docs/presentation_metier/centralisation/wormhole.tex b/docs/presentation_metier/centralisation/wormhole.tex index 2a6af2a..0f2f1c2 100644 --- a/docs/presentation_metier/centralisation/wormhole.tex +++ b/docs/presentation_metier/centralisation/wormhole.tex @@ -1,80 +1,106 @@ % Auteur : Romain TESTUD -\begin{frame}{Le protocole Wormhole} - \begin{block}{Mise en contexte} - \begin{itemize} - \item Solution d'échanges inter-blockchains. - \item utilisation de bridges. - \end{itemize} - \end{block} - \begin{block}{Les étapes d'un transfert} - \begin{itemize} - \item Formulation de la transaction. - \item Récupération et vérification des signatures des gardiens. - \item Envoi de la transaction. - \end{itemize} - \end{block} - \begin{figure} - \centering - \includegraphics[scale = 0.3]{centralisation/img/fonctions.png} - \caption{Fonctions appelées lors d'un transfert} - \end{figure} +\begin{frame}{Wormhole - Mise en contexte} + \centering + \includegraphics[scale = 0.69]{centralisation/img/wormhole/worm_fonc.png} \end{frame} -\begin{frame}{L'attaque} +\begin{frame}{Wormhole - Mise en contexte} + \begin{itemize} + \item Transaction standard. + \end{itemize} + \centering + \includegraphics[scale = 0.45]{centralisation/img/wormhole/sysvar_trans_normal.png} +\end{frame} +%\begin{frame}{Le protocole Wormhole} +% \begin{block}{Mise en contexte} +% \begin{itemize} +% \item Solution d'échanges inter-blockchains. +% \item utilisation de bridges. +% \end{itemize} +% \end{block} +% \begin{block}{Les étapes d'un transfert} +% \begin{itemize} +% \item Formulation de la transaction. +% \item Récupération et vérification des signatures des gardiens. +% \item Envoi de la transaction. +% \end{itemize} +% \end{block} +% \begin{figure} +% \centering +% \includegraphics[scale = 0.3]{centralisation/img/fonctions.png} +% \caption{Fonctions appelées lors d'un transfert} +% \end{figure} +%\end{frame} + +\begin{frame}{Wormhole - L'attaque} \begin{block}{Attaque sur le bridge entre Solana et Ethereum} \begin{itemize} \item Le 2 Février 2022. - \item 120 000 ETH de perte. + \item 120 000 ETH (300M €) de perte. \item Correction de bug publié mais pas encore en production. \end{itemize} \end{block} -\end{frame} - -\begin{frame}{L'attaque} - \begin{block}{Passer la signature des gardiens?} - Utilisation de signatures d'une transaction antérieure. - \end{block} - \begin{block}{Passer la vérification ?} + \begin{block}{L'attaquant a contourné\dots} \begin{itemize} - \item Exploitation d'une erreur d'implémentation dans \textit{verify\_signature} - \item Appel à un programme externe. + \item la signature des gardiens. + \item la vérification des signatures. \end{itemize} - \begin{figure} - \centering - \includegraphics[scale = 0.3]{centralisation/img/sysvar_atk.png} - \caption{Appel à la fonction de vérification} - \end{figure} \end{block} \end{frame} -\begin{frame}{L'attaque} - \begin{itemize} - \item Utilisation d'une nouvelle adresse. - \item Validation des signatures par défaut. - \end{itemize} - \begin{figure} - \centering - \includegraphics[scale = 0.3]{centralisation/img/sysvar_transaction.png} - \caption{Appel à la fonction de vérification} - \end{figure} +\begin{frame}{Wormhole - L'attaque} + \centering + \includegraphics[scale=0.69]{centralisation/img/wormhole/worm_hack.png} \end{frame} -\begin{frame} +%\begin{frame}{L'attaque} +% \begin{block}{Passer la signature des gardiens?} +% Utilisation de signatures d'une transaction antérieure. +% \end{block} +% \begin{block}{Passer la vérification ?} +% \begin{itemize} +% \item Exploitation d'une erreur d'implémentation dans \textit{verify\_signature} +% \item Appel à un programme externe. +% \end{itemize} +% \begin{figure} +% \centering +% \includegraphics[scale = 0.3]{centralisation/img/sysvar_atk.png} +% \caption{Appel à la fonction de vérification} +% \end{figure} +% \end{block} +%\end{frame} + + + +\begin{frame}{Wormhole - L'attaque} + \begin{itemize} + \item Transaction de l'attaquant. + \end{itemize} + \centering + \includegraphics[scale = 0.45]{centralisation/img/wormhole/sysvar_transaction_hack.png} +\end{frame} + +\begin{frame}{Wormhole - L'attaque} \begin{block}{Transaction validée et envoyée} \begin{itemize} \item 120 000 ETH transmis. - \item Sans avoir déposé de jetons au préalable. + \item 0 wETH déposés. \end{itemize} \end{block} + \begin{block}{Correctif} + Vérification des appels externes.\\ + \centering + \includegraphics[scale = 0.5]{centralisation/img/wormhole/worm_fixed.png} + \end{block} \end{frame} -\begin{frame}{Correctif} - \begin{itemize} - \item Vérification de l'appel par \textit{sysvar\_instruction} - \end{itemize} - \begin{figure} - \centering - \includegraphics[scale = 0.3]{centralisation/img/worm_fixed.png} - \caption{Appel à la fonction de vérification} - \end{figure} -\end{frame} \ No newline at end of file +%\begin{frame}{Correctif} +% \begin{itemize} +% \item Vérification de l'appel par \textit{sysvar\_instruction} +% \end{itemize} +% \begin{figure} +% \centering +% \includegraphics[scale = 0.3]{centralisation/img/wormhole/worm_fixed.png} +% \caption{Appel à la fonction de vérification} +% \end{figure} +%\end{frame} \ No newline at end of file