Typo + exo not in submissions
This commit is contained in:
parent
b459443d9e
commit
6fd83df1fd
6 changed files with 93 additions and 73 deletions
|
|
@ -27,7 +27,8 @@ On trouve par exemple :
|
|||
* `CAP_KILL` : permet de tuer n'importe quel processus ;
|
||||
* `CAP_SYS_BOOT` : permet d'arrêter ou de redémarrer la machine ;
|
||||
* `CAP_SYS_MODULE` : permet de charger et décharger des modules ;
|
||||
* et beaucoup d'autres, il y en a environ 39 en tout !
|
||||
* et beaucoup d'autres, il y en a environ 39 en tout (ça dépend de la
|
||||
version du noyau) !
|
||||
|
||||
|
||||
### `ping`
|
||||
|
|
@ -44,16 +45,16 @@ utilisateur de prendre les droits du super-utilisateur, le temps de l'exécution
|
|||
du programme.
|
||||
|
||||
Les problèmes surviennent lorsque l'on découvre des vulnérabilités dans les
|
||||
programmes Setuid root. En effet, s'il devient possible à un utilisateur
|
||||
programmes Setuid root. En effet, s'il devient possible pour un utilisateur
|
||||
d'exécuter du code arbitraire, ce code sera exécuté avec les privilèges de
|
||||
l'utilisateur root ! Dans le cas de ping, on se retrouverait alors à pouvoir
|
||||
lire l'intégralité de la mémoire, alors que l'on avait juste besoin d'écrire
|
||||
sur une interface réseau.
|
||||
|
||||
C'est donc à ce moment que les *capabilities* entrent en jeu : un processus (ou
|
||||
même un thread) privilégié peut décider, à son lancement, de réduire ses
|
||||
*capabilities*, pour ne garder que celles dont il a réellement besoin. Ainsi,
|
||||
`ping` pourrait se contenter de `CAP_NET_RAW`.
|
||||
même un thread) privilégié peut décider, généralement à son lancement, de
|
||||
réduire ses *capabilities*, pour ne garder que celles dont il a réellement
|
||||
besoin. Ainsi, `ping` pourrait se contenter de `CAP_NET_RAW`.
|
||||
|
||||
|
||||
## Les attributs de fichier étendus
|
||||
|
|
@ -95,8 +96,8 @@ cat: toto: Permission denied
|
|||
Hello World!
|
||||
```
|
||||
|
||||
Bien que les droits UNIX traditionnels ne vous donne pas accès au fichier, les
|
||||
ACL POSIX vous autorisent à lire le contenu du fichier.
|
||||
Bien que les droits UNIX traditionnels ne vous donnent pas accès au fichier,
|
||||
les ACL POSIX vous autorisent à le lire.
|
||||
|
||||
Vous pouvez voir ces attributs avec la commande :
|
||||
|
||||
|
|
@ -134,18 +135,41 @@ Ou, dans sa version plus lisible :
|
|||
|
||||
## Exercice : visualisateur de capabilities d'un processus
|
||||
|
||||
Écrivons maintenant un script permettant de voir les *capabilities* d'un
|
||||
processus :
|
||||
Écrivons maintenant un programme permettant de voir les *capabilities*
|
||||
d'un processus :
|
||||
|
||||
```shell
|
||||
42sh$ ./view_caps 1
|
||||
cap_user_header_t
|
||||
-----------------
|
||||
Version: 20080522
|
||||
PID: 1
|
||||
|
||||
cap_user_data_t
|
||||
---------------
|
||||
effective: 0xffffffff
|
||||
CAP_AUDIT_CONTROL
|
||||
CAP_AUDIT_READ
|
||||
CAP_AUDIT_WRITE
|
||||
CAP_BLOCK_SUSPEND
|
||||
CAP_CHOWN
|
||||
CAP_DAC_OVERRIDE
|
||||
CAP_DAC_READ_SEARCH
|
||||
permitted: 0xffffffff
|
||||
CAP_AUDIT_CONTROL
|
||||
CAP_AUDIT_READ
|
||||
CAP_AUDIT_WRITE
|
||||
CAP_BLOCK_SUSPEND
|
||||
CAP_CHOWN
|
||||
CAP_DAC_OVERRIDE
|
||||
CAP_DAC_READ_SEARCH
|
||||
inheritable: 0x0
|
||||
```
|
||||
|
||||
## Rendu
|
||||
Astuces : `capget(2)`, X-macros, ...
|
||||
|
||||
|
||||
|
||||
|
||||
## Aller plus loin
|
||||
## Pour aller plus loin
|
||||
|
||||
Je vous recommande la lecture des *man* suivants :
|
||||
|
||||
|
|
@ -154,7 +178,10 @@ Je vous recommande la lecture des *man* suivants :
|
|||
|
||||
Et de ces quelques articles :
|
||||
|
||||
* [https://www.freedesktop.org/wiki/CommonExtendedAttributes/](Guidelines for
|
||||
extended attributes)
|
||||
* [https://lwn.net/Articles/211883/](File-based capabilities)
|
||||
* [http://lwn.net/Articles/199004/](A bid to resurrect Linux capabilities)
|
||||
* [Guidelines for extended attributes](https://www.freedesktop.org/wiki/CommonExtendedAttributes/)
|
||||
* [File-based capabilities](https://lwn.net/Articles/211883/)
|
||||
* [A bid to resurrect Linux capabilities](https://lwn.net/Articles/199004/)
|
||||
|
||||
Pour revenir à Docker, par défaut, un certain nombre de *capabilities* sont
|
||||
désactivées par défaut ; vous pouvez en ajouter et en retirer via les arguments
|
||||
`--cap-add` et `--cap-drop` du `docker run`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue