[CT417]: Some notes

This commit is contained in:
2024-10-23 10:10:43 +01:00
parent b0b8d793fe
commit ae979b41cf
2 changed files with 72 additions and 0 deletions

View File

@ -1294,4 +1294,76 @@ Limitations of static code analysis include:
\item \textbf{Performance overhead:} large codebases can take time to analyse thoroughly.
\end{itemize}
\section{Software Security}
\textbf{Software security} is the concept of implementing mechanisms \& adopting best development practices to protect software against malicious attacks, i.e. to make it resistant to attacks and to keep it functional when attacked.
In traditional software design \& development practices, software security was almost an afterthought.
Secure software is defined as software engineered in such a way that its operation and functionality continues as normal even when subjected to malicious attacks.
\\\\
In computer security, a \textbf{threat} is a potential negative action or event facilitated by a vulnerability that results in an unwanted impact to a computer system or application.
A threat can either be a negative \textit{intentional} event such as a cyberattack, or an \textit{accidental} even such as an earthquake.
Different definitions from different authorities for what constitutes a threat include:
\begin{itemize}
\item \textbf{ISO27005:} a potentital cause of an incident that may result in harm of systems \& organisation.
\item \textbf{NIST:} any circumstance or event with the potential to adversely impact organisation operations, organisational assets, or individuals through an information system via unauthorised access, destruction, disclosure, modification of information, and / or denial of service.
\item \textbf{ENISA:} any circumstance or event with the potential to adversely impact an asset through unauthorised access, destruction, disclosure, modification of data, and / or denial of service.
\end{itemize}
\subsection{Threat Classification}
Microsoft classifies threats into the following categories:
\begin{itemize}
\item \textbf{Spoofing of user identity:} e.g., an attacker takes on the identity of an administrator.
\item \textbf{Tampering:} e.g., an attacker changes an account balance.
\item \textbf{Repudiation:} e.g., a user denies performing an action without either parties having any way to prove otherwise.
\item \textbf{Information disclosure:} privacy breach or data leak.
\item \textbf{Elevation of privilege:} an attacker elevates their own security level to an administrator.
\item \textbf{Denial of Service (DOS):} a cyber attack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to the internet.
\end{itemize}
The term \textbf{threat agent} is used to indicate an individual, thing, or a group that can manifest a threat.
These incldue:
\begin{itemize}
\item Non-target specific, e.g. a computer virus, worms, trojans, \& logic bombs.
\item Employees, e.g. disgruntled staff or contractors.
\item Organised crime \& criminals.
\item Corporation, e.g. partners or competitors.
\item Human (unintentional), e.g., accidents, carelessness.
\item Human (intentional), insider, outsider.
\item Natural, e.g., flood, fire, lighting, meteor, earthquakes.
\end{itemize}
\subsubsection{Requirement-Level Threats}
Expertise in requirements engineering \& information system security is a rare combination: customers \& users don't know what they want with respect to security, and requirement engineers don't know what questions to ask to elicit security requirements.
This combined lack of security expertise leads to missing or unidentified security requirements, resulting in security vulnerabilities.
\subsubsection{Hardware-Level Threats}
\begin{table}[h!]
\centering
\begin{tabular}{|>{\arraybackslash}p{0.5\textwidth}|>{\arraybackslash}p{0.5\textwidth}|}
\hline
\textbf{Threat} & \textbf{Countermeasure} \\ \hline
Eavesdropping devices (e.g., keyloggers) & Physical Security \\ \hline
Power outage & Uninterruptible Power Supply \\ \hline
Natural Disasters & Geographically dispersed redundancy to avoid a single point of failure \\ \hline
Sabotage & Physical Security \\ \hline
\end{tabular}
\caption{Hardware-Level Threats \& Countermeasures}
\end{table}
\subsubsection{Code-Level Threats}
Code-level threats include \textbf{unintentional} threats, which are mainly caused by a lack of secure coding knowledge.
These can be mitigated with software security education \& training, automatic static \& dynamic code analysis, and peer code review.
\\\\
\textbf{Intentional} threats can be prevented with peer code review, job rotation, \& mandatory vacation.
\subsubsection{Design-Level Threats}
\textbf{Design-level threats} relate to weaknesses in principal OO design \& object interaction, therefore secure design is more fundamental than secure coding, e.g., object attributes being public rather than private.
Best OO design practices are captures in design patterns for security.
Code implementation without a solid design is dangerous \& costly.
\subsubsection{Architectural-Level Design Threats}
\textbf{Architectural design} decisions entail overarching design decisions.
Widely accepted solutions to these recurring architectural design problems are referred to as \textbf{architectural patterns}.
\end{document}