della sicurezza, passando poi a quelle relative all'analisi ed al controllo
dell'esecuzione, e alle funzioni per le modalità avanzate di creazione dei
processi e l'uso dei cosiddetti \textit{namespace}. Infine affronteremo le
-\textit{sytem call} attinenti ad una serie di funzionalità specialistiche come
+\textit{system call} attinenti ad una serie di funzionalità specialistiche come
la gestione della virgola mobile, le porte di I/O ecc.
\section{La gestione avanzata della sicurezza}
sez.~\ref{sec:file_ownership_management}).\\
\constd{CAP\_DAC\_OVERRIDE}& Evitare il controllo dei
permessi di lettura, scrittura ed esecuzione dei
- file, (vedi sez.~\ref{sec:file_access_control}).\\
+ file, (vedi
+ sez.~\ref{sec:file_access_control}).\\
\constd{CAP\_DAC\_READ\_SEARCH}& Evitare il controllo dei
permessi di lettura ed esecuzione per
le directory (vedi
\label{tab:proc_capabilities}
\end{table}
+% TODO: verificare ed aggiungere le nuove capacità CAP_BPF, CAP_PERFMON, vedi
+% https://lwn.net/Articles/822362/
+
\constbeg{CAP\_SETPCAP}
Prima di dettagliare il significato della capacità più generiche, conviene
+
\subsection{La gestione del \textit{Secure Computing}.}
\label{sec:procadv_seccomp}
% TODO: trattare keyctl (man 2 keyctl)
-
+% (fare sezione dedicata ????)
+% TODO documentare la Crypto API del kernel
% TODO trattare le funzioni di protezione della memoria pkey_alloc, pkey_free,
% pkey_mprotect, introdotte con il kernel 4.8, vedi
-% http://lwn.net/Articles/689395/ e Documentation/x86/protection-keys.txt
+% http://lwn.net/Articles/689395/ e Documentation/x86/protection-keys.txt
+
+% TODO documentare la syscall getrandom, introdotta con il kernel 3.17, vedi
+% http://lwn.net/Articles/606141/, ed introdotta con le glibc solo con la
+% versione 2.25, vedi https://lwn.net/Articles/711013/
+
+%\subsection{La gestione delle chiavi crittografiche}
+%\label{sec:keyctl_management}
+
+% TODO non è chiaro se farlo qui, ma documentare la syscall bpf aggiunta con il
+% kernel 3.18, vedi http://lwn.net/Articles/612878/; al riguardo vedi anche
+% https://lwn.net/Articles/660331/
+
\section{Funzioni di gestione e controllo}
\label{sec:proc_manage_control}
% TODO documentare ARCH_SET_CPUID e ARCH_GET_CPUID, introdotte con il kernel
% 4.12, vedi https://lwn.net/Articles/721182/
+
+% TODO documentare PR_SPEC_DISABLE_NOEXEC in 5.1, vedi
+% https://lwn.net/Articles/782511/
+
\label{sec:prctl_operation}
\end{basedescript}
\func{sys\_clone} riprende, come per \func{fork}, da dopo l'esecuzione della
stessa.
+% TODO trattare anche clone3 (vedi https://lwn.net/Articles/792628/), aggiunta
+% con il kernel 5.3
+% e aggiunte successive, col 5.5
+% il flag CLONE_CLEAR_SIGHAND
+% https://git.kernel.org/linus/49cb2fc42ce4
+% https://git.kernel.org/linus/41585bbeeef9
+
+
La necessità di avere uno \textit{stack} alternativo c'è solo quando si
intende creare un \textit{thread}, in tal caso infatti il nuovo \textit{task}
vede esattamente la stessa memoria del \textit{task}
\const{CLONE\_CHILD\_SETTID}.
La funzione ritorna un l'identificatore del nuovo \textit{task}, denominato
-\texttt{Thread ID} (da qui in avanti \ids{TID}) il cui significato è analogo
+\textit{Thread ID} (da qui in avanti \ids{TID}) il cui significato è analogo
al \ids{PID} dei normali processi e che a questo corrisponde qualora si crei
un processo ordinario e non un \textit{thread}.
padre la \textit{file descriptor table} (vedi sez.~\ref{sec:file_fd}),
questo significa che ogni \textit{file descriptor} aperto da un processo
verrà visto anche dall'altro e che ogni chiusura o cambiamento dei
- \textit{file descriptor flag} di un \textit{file descriptor} verrà per
+ \textit{file descriptor flags} di un \textit{file descriptor} verrà per
entrambi.
Se non viene impostato il processo figlio eredita una copia della
\item[\constd{CLONE\_PARENT\_SETTID}]
\item[\constd{CLONE\_PID}]
+% TODO trattare CLONE_PIDFD introdotto con il kernel 5.2, vedi
+% https://lwn.net/Articles/787963/ e anche https://lwn.net/Articles/789023/
+
\item[\constd{CLONE\_PTRACE}] se questo flag viene impostato ed il processo
chiamante viene tracciato (vedi sez.~\ref{sec:process_ptrace}) anche il
figlio viene tracciato.
% informazioni su setns qui: http://lwn.net/Articles/532748/
% http://lwn.net/Articles/531498/
-
+% TODO: se si applicano e ci stanno trattare gli argomenti di ioctl_ns
\section{Funzionalità avanzate e specialistiche}
\label{sec:process_special}
+% TODO: trattare userfaultfd, introdotta con il 4.23, vedi
+% http://man7.org/linux/man-pages/man2/userfaultfd.2.html
+
+% TODO: trattare process_vm_readv/process_vm_writev introdotte con il kernel
+% 3.2, vedi http://man7.org/linux/man-pages/man2/process_vm_readv.2.html e i
+% precedenti tentativi https://lwn.net/Articles/405346/
+
\subsection{La gestione delle operazioni in virgola mobile}
\label{sec:process_fenv}
%
% TODO l'I/O sulle porte di I/O
-% consultare le manpage di ioperm, iopl e outb
+% consultare le manpage di ioperm, iopl e outb e
+% https://lwn.net/Articles/804143/
% non c'entra nulla qui, va trovato un altro posto (altri meccanismi di I/O in
% fileintro ?)
+% emulata a partire dal kernel 5.5, vedi https://lwn.net/Articles/804143/
+%
Da fare
% LocalWords: libcap lcap obj to text dup clear DIFFERS get ncap caps ssize
% LocalWords: argument length all setpcap from string name proc cat capgetp
% LocalWords: capsetp getcap read sigreturn sysctl protected hardlinks tmp
-% LocalWords: dell' symlink symlinks pathname TOCTTOU of
+% LocalWords: dell' symlink symlinks pathname TOCTTOU of execve attack kcmp