117 lines
3.7 KiB
TeX
117 lines
3.7 KiB
TeX
\documentclass[12pt,a4paper]{article}
|
|
|
|
\usepackage[cm]{fullpage}
|
|
\usepackage{amsthm}
|
|
\usepackage{amsmath}
|
|
\usepackage{amsfonts}
|
|
\usepackage{amssymb}
|
|
\usepackage{xspace}
|
|
\usepackage[english]{babel}
|
|
\usepackage{fancyhdr}
|
|
\usepackage{titling}
|
|
\renewcommand{\thesection}{Exercise \projnumber.\arabic{section}:}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% This part needs customization from you %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% please enter your group number your names and matriculation numbers here
|
|
%TODO
|
|
\newcommand{\groupnumber}{5}
|
|
\newcommand{\name}{Tobias Eidelpes}
|
|
\newcommand{\matriculation}{01527193}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% End of customization %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\newcommand{\projnumber}{3}
|
|
\newcommand{\Title}{minnieThor}
|
|
\setlength{\headheight}{15.2pt}
|
|
\setlength{\headsep}{20pt}
|
|
\setlength{\textheight}{680pt}
|
|
\pagestyle{fancy}
|
|
\fancyhf{}
|
|
\fancyhead[L]{Formal Methods for Security and Privacy \projnumber\ - minnieThor}
|
|
\fancyhead[C]{}
|
|
\fancyhead[R]{Group \groupnumber}
|
|
\renewcommand{\headrulewidth}{0.4pt}
|
|
\fancyfoot[C]{\thepage}
|
|
|
|
|
|
\begin{document}
|
|
\thispagestyle{empty}
|
|
\noindent\framebox[\linewidth]{%
|
|
\begin{minipage}{\linewidth}%
|
|
\hspace*{5pt} \textbf{Formal Methods for Security and Privacy (SS2021)} \hfill Prof.~Matteo Maffei \hspace*{5pt}\\
|
|
|
|
\begin{center}
|
|
{\bf\Large Project \projnumber~-- \Title}
|
|
\end{center}
|
|
|
|
\vspace*{5pt}\hspace*{5pt} \hfill TU Wien \hspace*{5pt}
|
|
\end{minipage}%
|
|
}
|
|
\vspace{0.5cm}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
\section*{Group \groupnumber}
|
|
Our group consists of the following members:
|
|
\begin{center}
|
|
\textbf{\name} %please fill the information above
|
|
|
|
\matriculation %please fill the information above
|
|
\end{center}
|
|
|
|
\section{Abstract Semantics}
|
|
\emph{Nothing to fill in here, unless you feel that there is something about the
|
|
implementation that we should consider when grading.}
|
|
|
|
\section{Fixing reentrancy}
|
|
|
|
\subsubsection*{Justification for the soundness of \texttt{alice.txt}:}
|
|
|
|
By switching the order of line 5 and line 6 in \texttt{alice.txt}, the contract
|
|
\texttt{bob.txt} has been fixed. This works because \texttt{sent} is set to 1
|
|
\emph{before} the call instruction is executed and therefore reentering the
|
|
function is possible but will not execute another call instruction because
|
|
\texttt{sent} has already been set to 1. The contract now follows the
|
|
\emph{Check-Effects-Interactions Pattern}, which requires that checks and state
|
|
changes have to occur before calls to other contracts.
|
|
|
|
\section{Soundness of the \texttt{CALL} rules}
|
|
|
|
\subsubsection*{Soundness classification of \texttt{CALL} rule sets:}
|
|
|
|
\textbf{Call 1}: Unsound \\
|
|
\textbf{Call 2}: Sound \\
|
|
\textbf{Call 3}: Unsound \\
|
|
\textbf{Call 4}: Unsound \\
|
|
\textbf{Call 5}: Sound
|
|
|
|
\subsubsection*{Intuition for the sound rule sets:}
|
|
|
|
\paragraph{Call 2:}
|
|
|
|
The first two rules are the same rules as presented in the lecture. The third rule
|
|
models the case where the contract resumes execution after a call with the same
|
|
storage as before the call. This rule applies when the contract was not called
|
|
and produced a successful halting state before the contract resumes the
|
|
execution after the call.
|
|
|
|
The fourth rule, however, models the case where the contract resumes execution
|
|
after it was left by another call from a contract that resulted in a halting
|
|
state.
|
|
|
|
\paragraph{Call 5:}
|
|
|
|
As for Call 2, the first two rules are the same as presented in the lecture. The
|
|
third rule is correct because in case of $sa[size - 4] = 1$, the local memory
|
|
and the persistent storage are correctly over-approximated. The other case is
|
|
where $sa[size - 4] = 0$. In this case the caller's memory may not be
|
|
manipulated, as formalized by the small-step semantics.
|
|
|
|
\end{document}
|
|
|