% 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}
    \pause
    \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}{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 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}
    \pause
    \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}{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}
\end{frame}

\begin{frame}
    \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.
        \end{itemize}
    \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}

%\begin{frame}
%    Etapes de transfer
%    \begin{itemize}
%        \item Vérification des signatures 
%        \item post\_vaa appelle la fonction verify signature
%        \item Verification effectuée par un programme de solana 
%        \item image des input dans le code %https://github.com/wormhole-foundation/wormhole/blob/91296e67722032debf04e95c71b3d701d4625c5b/solana/bridge/program/src/instructions.rs#L153
%    \end{itemize}
%\end{frame}

%\begin{frame}
%    Erreur d'implémentation dans verify signature
%    \begin{itemize}
%        \item Pas de vérification du programme renseigné
%        \item possibilité d'utiliser un programme externe
%    \end{itemize}
%\end{frame}
%
%\begin{frame}
%    Correction de l'erreur
%    \begin{itemize}
%        \item Commit pushed le 2 Fevrier
%        \item change load........ rajoute checked
%        \item Confirme l'utilisation du programme interne
%        \item qqun observait le git en attendant un push interessant
%    \end{itemize}
%\end{frame}
%
%\begin{frame}
%    Besoins (???) de l'attaque
%    \begin{itemize}
%        \item passer la collection des signatures
%        \item passer la vérification des signatures
%    \end{itemize}    
%\end{frame}
%
%\begin{frame}
%    Collection des signatures
%    \begin{itemize}
%        \item utilisation de signatures d'une ancienne transaction
%    \end{itemize}
%\end{frame}
%
%\begin{frame}
%    Vérification des signatures
%    \begin{itemize}
%        \item Exploitation de l'erreur d'implémentation de verify\_signature
%    \end{itemize}
%\end{frame}
%
%\begin{frame}
%    
%\end{frame}
%
%\begin{frame}{Wormhole}
%    Attaque sur le bridge entre Solana et Ethereum :
%    \begin{itemize}
%        \item Quelques heures après un correctif non déployé.
%        \item Exploitation d'un défaut d'implémentation.
%        \item La transaction de l'attaquant est signée par les gardiens.
%    \end{itemize}
%\end{frame}
%\begin{frame}{Wormhole}
%    \begin{block}{Fonctionnement du dépôt de jeton}
%        \begin{itemize}
%            \item Appel de plusieurs fonctions de vérification lors du dépôt.
%            \begin{itemize}
%                \item $complete\_wrapped$ $\Rightarrow$ 
%                 $transfer\_message$
%                 $\Rightarrow$  $post\_vaa$
%                 $\Rightarrow$  $verify\_signature$
%            \end{itemize}
%            %\item Fonction complete\_wrapped appellée lors du mint de Wormhole ETH sur Solana
%            %\item transfer\_message en paramètre : spécifie le token et combien doit être mint, signé par les gardiens
%            %\item Contrat sur Solana, créé en utilisant la fonction post\_vaa qui vérifie la signature des gardiens
%            %\item Appel a verify\_signature qui utilise un programme de Solana pour verifier les signatures
%        \end{itemize}
%        Erreur d'implémentation dans $verify\_signature$.
%    \end{block}
%\end{frame}
%
%\begin{frame}{Wormhole}
%    \begin{block}{$verify\_signature$ appelle un programme de vérification}
%        \begin{itemize}
%            \item $Sysvar: Instructions$ : Alias du programme.
%            \item Vérification des signatures des gardiens.
%            \item Il est possible d'utiliser d'une adresse différente.
%        \end{itemize}  
%    \end{block}
%    %\begin{figure}
%    %    \centering
%    %    \includegraphics[scale = 0.3]{img/wormhole_img1.png}
%    %\end{figure}
%\end{frame}
%
%\begin{frame}{Wormhole}
%    \begin{itemize}
%        \item Adresse tierce entrée par l'attaquant.
%        \item Validation de la transaction sans signature.
%    \end{itemize}
%    %\begin{figure}
%        %\centering
%        %\includegraphics[scale = 0.7]{img/wormhole_img2.png}
%    %\end{figure}
%\end{frame}