[C] Un exemple de jail basée sur ptrace
|
19-07-2013, 21h53
(Modification du message : 20-07-2013, 10h34 par b0fh.)
Message : #1
|
|
b0fh
![]() Membre actif ![]() Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
[C] Un exemple de jail basée sur ptrace
Hello,
Je vous partage un petit gadget utilisant une API pas des plus clairement documentées: un exemple de jail linux simple utilisant ptrace pour filtrer les syscalls. (pratique quand on n'a pas de kernel supportant seccomp v2). Notez que ça ne fonctionne que si les threads sont interdits, dans le cas contraire le filtrage est vulnérable à une course. C'est un moyen simple de bloquer execve() ou socket() si le programme n'en a pas besoin, et ainsi compliquer considérablement certains scénarios d'exploitation ! Code C :
|
|
20-07-2013, 03h33
Message : #2
|
|
notfound
![]() #!/usr/bin/env bash ![]() Messages : 687 Sujets : 47 Points: 272 Inscription : Sep 2012 |
RE: [C] Un exemple de jail basée sur ptrace
Y'a juste un fail dans ton code, à cause des balises de code.
Code C :
|
|
20-07-2013, 10h23
Message : #3
|
|
Kiwazaru
![]() Padawan d'un super escargot ![]() Messages : 284 Sujets : 26 Points: 139 Inscription : Mar 2012 |
RE: [C] Un exemple de jail basée sur ptrace
J'ai pas bien pigé le principe du code, j'ai compris dans la généralité qu'il hook certains syscall, like a ptrace, mais au final, ça reviens à coder un ptrace like, ou tout simplement un autre projet dont je n'ai pas compris le but? :p
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
|
|
20-07-2013, 10h48
Message : #4
|
|
b0fh
![]() Membre actif ![]() Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: [C] Un exemple de jail basée sur ptrace
Ahoui, merci pour la remarque sur le formatage. Saleté de moteur de rendu.
C'est pas du ptrace-like, c'est du ptrace. C'est juste que l'API est assez imbitable et la documentation pas des mieux organisées (man 2 ptrace n'est pas vraiment fourni en exemples.) Du coup, c'était surtout pour donner un exemple simple qui illustre les détails chiants, comme par exemple le danger d'appeler PTRACE_SETOPTIONS quand le process tracé n'est pas encore dans l'état stoppé, ou le fait qu'il faille distinguer a la main les syscall-enter des syscall-exit et des occurrences de signaux, et bien sur le florilège de macros pour disséquer le retour de wait(). |
|
20-07-2013, 11h07
Message : #5
|
|
gruik
![]() gouteur de savon ![]() Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] Un exemple de jail basée sur ptrace
(20-07-2013, 10h48)b0fh a écrit : Saleté de moteur de rendu. oui, bon.. je pense pas que geshi soit vraiment en cause, plutot la facon dont c'est intégré à mon avis :x Citation :C'est juste que l'API est assez imbitable et la documentation pas des mieux organisées "ptrace is unique and arcane" ;o en tous cas c'est un code de mini-sandbox clair et concis pour le coup, thx ![]() |
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)