*: extend and refine structure

This commit is contained in:
steveej 2017-08-10 19:09:58 +02:00
parent 4101d31ba8
commit 5a8e11c18b
6 changed files with 264 additions and 157 deletions

View file

@ -75,7 +75,7 @@ Details about the challenge of writing code that does memory management safely,
* TODO: is it worth to explain ECC?
* TODO: explain that the hardware might be unsafe but this is not in scope of the thesis
\section{Summary}
\section{Recap}
% Summarize the content of Chapter 1 and preview of content of Chapter 2.
\label{chap:mmt}
The \autoref{chap:mmt} gives a detailed introduction to memory management in contemporary architectures and \glspl{OS}.
@ -104,7 +104,7 @@ This chapter starts with the provides a thorough introduction to modern memory m
\subsection{Multi-Level Paging}
\subsection{Top-Level Page table Self-Reference}
\subsection{Top-Level Page Table Self-Reference}
\subsection{Caching Lookups}
@ -113,12 +113,18 @@ This chapter starts with the provides a thorough introduction to modern memory m
* http://taptipalit.blogspot.de/2013/10/theory-recursive-mapping-page.html
* https://www.coresecurity.com/blog/getting-physical-extreme-abuse-of-intel-based-paging-systems-part-2-windows
\section{Stack And Heap Concept}
\section{Memory Allocation}
\chapter{Common Memory-Related Errors}
\chapter{Memory-Related Software-Programming Weaknesses}
\label{chap:context.mem-weaknesses}
Software vulnerabilities can be categorized by their underlying weaknesses.
This chapter explains the weaknesses of interest for this project and gives concrete examples for their manifestation.
\section{Weakness Categories}
This work focuses on the following weaknesses defined in the \gls{CWE}
\begin{itemize}
\item{Improper Restriction of Operations within the Bounds of a Memory Buffer}
https://cwe.mitre.org/data/definitions/119.html
@ -126,6 +132,8 @@ This work focuses on the following weaknesses defined in the \gls{CWE}
% TODO: find more
\end{itemize}
\section{Manifestation Examples}
\subsection{Uninitialized Pointers}
\begin{lstlisting}[language=C,
@ -158,26 +166,44 @@ if (ptr == NULL) {
}
\end{lstlisting}
\subsection{TODO: more}
\chapter{Memory-Safety Analysis Techniques}
As per the previous \autoref{chap:context.mem-weaknesses} there is general awareness of the problems, and there has been ongoing effort to develop and improve techniques that assist the programmer to detect and avoid such mistakes first- or secondhand.
\section{Static vs. Dynamic Analysis}
* TODO: explain first-/secondhand -> static/dynamic -> compile-time/runtime -> offline/online
* TODO: Explain static and dynamic checks
\section{Requirements}
* TODO: which knowledge is required to analyze access to memory?
\section{Limitations}
* TODO: deadlock example
\chapter{Introduction To Rust}
\section{Compiler Architecture}
- TODO: Tokens? AST? LLVM?
- TODO: Tokens? AST? LLVM? (http://embed.rs/articles/2016/arm-inline-assembly-rust/)
- TODO: BSYS SS17 GITHUB IO Rust Memory Layout - 4
\section{Static Analysis Features}
- TODO: How does static typing help with preventing programming errors
- TODO: How does the Rust's static analysis work, theoretically and practically
- TODO: how could memory be dynamically allocated and still safety checked?
- TODO: How can memory be dynamically allocated and still safety checked?
\subsection{Ownership And Borrows}
- TODO: Who owns global 'static variables?
- https://nercury.github.io/rust/guide/2015/01/19/ownership.html
\subsection{Lifetimes}
- TODO: Where are global 'static variables allocated?
\subsection{Ownership}
- TODO: Who owns global 'static variables?
\subsection{Type Safety}
- TODO: how does casting work?
- TODO: demonstrate raw pointers
- TODO: what's the equivalent of void*?
\subsection{The Newtype Pattern}
@ -188,3 +214,11 @@ if (ptr == NULL) {
https://aturon.github.io/features/types/newtype.html
\subsection{Im/mutability}
- TODO: describe Rc, Arc, and {Ref,}Cell
\section Language Extension
\subsection{Syntax Extension}
\subsubsection{Macros}
\subsubsection{Annotations}
\subsection{Compiler Plugins}