# [securité] vulnérabilité de strcpy,(strcpy, RANDEXEC) résolu

## loux.thefuture

bonjour,

j'ai des petits soucis avec pax :

paxtest kiddie me donne :

...

Return to function (strcpy)              : Vulnerable

Return to function (memcpy)              : Vulnerable

Return to function (strcpy, RANDEXEC)    : Vulnerable

Return to function (memcpy, RANDEXEC)    : Vulnerable

...

alors que j'ai activé ce qu'il faut (enfin je pense) dans le noyau :

cat .config :

...

CONFIG_PAX=y

#

# PaX Control

#

# CONFIG_PAX_SOFTMODE is not set

CONFIG_PAX_EI_PAX=y

CONFIG_PAX_PT_PAX_FLAGS=y

CONFIG_PAX_NO_ACL_FLAGS=y

# CONFIG_PAX_HAVE_ACL_FLAGS is not set

# CONFIG_PAX_HOOK_ACL_FLAGS is not set

#

# Non-executable pages

#

CONFIG_PAX_NOEXEC=y

CONFIG_PAX_PAGEEXEC=y

CONFIG_PAX_SEGMEXEC=y

# CONFIG_PAX_DEFAULT_PAGEEXEC is not set

CONFIG_PAX_DEFAULT_SEGMEXEC=y

CONFIG_PAX_EMUTRAMP=y

CONFIG_PAX_MPROTECT=y

# CONFIG_PAX_NOELFRELOCS is not set

CONFIG_PAX_KERNEXEC=y

#

# Address Space Layout Randomization

#

CONFIG_PAX_ASLR=y

CONFIG_PAX_RANDKSTACK=y

CONFIG_PAX_RANDUSTACK=y

CONFIG_PAX_RANDMMAP=y

CONFIG_PAX_NOVSYSCALL=y

#

# Grsecurity

#

CONFIG_GRKERNSEC=y

# CONFIG_GRKERNSEC_LOW is not set

# CONFIG_GRKERNSEC_MEDIUM is not set

# CONFIG_GRKERNSEC_HIGH is not set

CONFIG_GRKERNSEC_CUSTOM=y

#

# Address Space Protection

#

CONFIG_GRKERNSEC_KMEM=y

# CONFIG_GRKERNSEC_IO is not set

CONFIG_GRKERNSEC_PROC_MEMMAP=y

CONFIG_GRKERNSEC_BRUTE=y

CONFIG_GRKERNSEC_MODSTOP=y

CONFIG_GRKERNSEC_HIDESYM=y

...

Auriez-vous une idée pour résoudre ce problème ?

Merci

Loux

----------

## PabOu

Salut,

Il me semble que c'est normal, et cela se protège à l'aide d'une autre technologie (comme par exmple ProPolice/SSP)

----------

## boozo

'alute

d'après la doc et selon ton architecture, tu dois avoir celà :

 *Quote:*   

> Return to function (strcpy)              : Vulnerable
> 
> Return to function (memcpy)              : Vulnerable
> 
> Return to function (strcpy, RANDEXEC)    : Killed
> ...

 

avec la justification founie par PabOu en sus   :Wink: 

 *Quote:*   

> #  strcpy and memcpy are listed as Vulnerable. This is expected and normal - it is simply showing the need for a technology such as ProPolice/SSP
> 
> # there is no randomization for PAGEEXEC. This is normal since our recommended x86 kernel configuration didn't activate the PAGEEXEC setting. However, on arches that support a true NX (non-executable) bit (most of them do, including x86_64), PAGEEXEC is the only method available for NOEXEC and has no performance hit.

 

Edit : pourrais-tu faire le nécessaire pour la conformité de ton titre stp merci   :Wink: 

----------

## PabOu

j'ai la meme config que lui et j'ai le meme output que lui, donc c'est normal il me semble :)

----------

## loux.thefuture

Bonjour,

j'ai bien compris que mon "output" était normale, 

mais j'ai utilisé le profile "hardened" donc je devrais avoir la protection SSP" ?

Loux

PS: pour le titre, c'est mieux ?

----------

## PabOu

normalement, si tu utilises le profile hardened depuis le début, tu as bien les patchs Pie et SSP qui ont été appliqués sur GCC et compagnie.

Si tu as changé de profile (pour choisir hardened) après une install qui fonctionne déjà, tu dois t'assurer que tu compiles avec les flags "hardened" et "pic", faire un bootstrap.sh et puis un emerge world -e

edit : tout ca c'est avec un kernel hardened-sources.. pour un grsec-sources ou selinux-sources, apparement, c'est directement dans le kernel, mais je ne suis pas sur de ce que je raconte là.

----------

## loux.thefuture

Bonjour,

j'ai problème pour sécurisé un ordinateur avec gentoo, lorsque je lance "paxtest kiddie" j'obtiens :

<

Return to function (strcpy)              : Vulnerable

Return to function (memcpy)              : Vulnerable

Return to function (strcpy, RANDEXEC)    : Vulnerable

Return to function (memcpy, RANDEXEC)    : Vulnerable

>

pour tant j'ai installé la distribution gentoo en profiles hardened avec en plus USE="hardened pic".

ma question est : "est-ce normale au vu des options que j'utilise" et si non "comment y remédier ?"

Merci

Loux

PS : ci-dessous les informations

voici ce que dit "uname -a" :

<

Linux localhost 2.6.14-hardened-r5 #1 PREEMPT Sat Mar 11 15:26:08 CET 2006 i686 AMD Athlon(tm) Processor AuthenticAMD GNU/Linux

>

voici ce que dit "gcc -v" :

<

Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/specs

Configured with: /var/tmp/portage/gcc-3.4.5/work/gcc-3.4.5/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.5 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.5 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.5/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.5/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/g++-v3 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu

Thread model: posix

gcc version 3.4.5 (Gentoo Hardened 3.4.5, ssp-3.4.5-1.0, pie-8.7.9)

>

et voici les options pax de mon noyau :

<

# PaX

#

CONFIG_PAX=y

#

# PaX Control

#

# CONFIG_PAX_SOFTMODE is not set

CONFIG_PAX_EI_PAX=y

CONFIG_PAX_PT_PAX_FLAGS=y

CONFIG_PAX_NO_ACL_FLAGS=y

# CONFIG_PAX_HAVE_ACL_FLAGS is not set

# CONFIG_PAX_HOOK_ACL_FLAGS is not set

#

# Non-executable pages

#

CONFIG_PAX_NOEXEC=y

CONFIG_PAX_PAGEEXEC=y

CONFIG_PAX_SEGMEXEC=y

# CONFIG_PAX_DEFAULT_PAGEEXEC is not set

CONFIG_PAX_DEFAULT_SEGMEXEC=y

CONFIG_PAX_EMUTRAMP=y

CONFIG_PAX_MPROTECT=y

# CONFIG_PAX_NOELFRELOCS is not set

CONFIG_PAX_KERNEXEC=y

#

# Address Space Layout Randomization

#

CONFIG_PAX_ASLR=y

CONFIG_PAX_RANDKSTACK=y

CONFIG_PAX_RANDUSTACK=y

CONFIG_PAX_RANDMMAP=y

CONFIG_PAX_NOVSYSCALL=y

>

Loux

----------

## xaviermiller

rien à voir avec GCC ou le noyau, ce sont des fonctions de glibc qui sont marquées "deprecated".

essaie les versions en "_s" : srtrcpy_s , memcpy_s, ... qui font des copies en vérifiant la taille du buffer de destination  :Wink: 

----------

## loux.thefuture

bonjour,

je comprends votre réponse,

mais j'utilise pour tester mon systéme l'utilitaire paxtest (emerge paxtest) qui teste un certain de vulnérabilités

et je ne veux pas changer le code source de cet utilitaire.

pourquoi gcc ne transforme-t-il pas le code strcpy en strcpy_s, y a-t-il un moyen de forcer cette transformation ?

Cordialement

Loux

----------

## boozo

'alute

 *loux.thefuture wrote:*   

> pour tant j'ai installé la distribution gentoo en profiles hardened avec en plus USE="hardened pic"

 

normalement qd tu installe directement en profile hardened tu n'as pas besoin de mettre ces USEflags il ne servent que si su jumpe de profile et que tu recompiles tout   :Wink: 

en revanche quelle sont les sources que tu as utilisé ? hardened ? grsec ? ou tu patch juste avec pax ?

----------

## loux.thefuture

Bonjour,

oui je sais que cela n'est pas nécessaire de rajouter "hardened et pic" dans USE avec le profiles hardened.

pour les sources que j'utilise, c'est hardened comme le montre 'uname -a'

<

Linux localhost 2.6.14-hardened-r5 #1 PREEMPT Sat Mar 11 15:26:08 CET 2006 i686 AMD Athlon(tm) Processor AuthenticAMD GNU/Linux 

>

Cordialement

Loux

----------

## xaviermiller

 *loux.thefuture wrote:*   

> pourquoi gcc ne transforme-t-il pas le code strcpy en strcpy_s, y a-t-il un moyen de forcer cette transformation ?
> 
> Cordialement
> 
> Loux

 

Ce n'est pas à GCC de le faire, car il faut adapter proprement les sources (dont entre autres s'assurer que le buffer destination a une taille connue lors du copy). C'est au programmeur à le faire.

----------

## loux.thefuture

Bonjour,

oui je comprends que les sources doivent être adaptées par le programmeur et pas par la personne qui les installe !

Cependant si je veux (moi utilisateur et non programmeur) protéger mon serveur des buffers overflows des techniques existent

avec les sources hardened, pax et grsecurity (si j'ai bien compris). J'en veux pour preuve le howto

http://www.gentoo.org/proj/en/hardened/grsecurity.xml

le problème c'est que j'ai fait quasiment la même chose que dans ce howto mais je n'obtiens pas les même résultats sur paxtest !

voici ce que je devrais obtenir :

<

Return to function (strcpy)              : Vulnerable

Return to function (memcpy)              : Vulnerable

Return to function (strcpy, RANDEXEC)    : Killed

Return to function (memcpy, RANDEXEC)    : Killed

>

et moi j'obtiens vulnérable à tous ces test 

Cordialement

Loux

----------

## xaviermiller

Et pourquoi ne pas simplement ignorer le message ? c'est pour un pc @ home ?

----------

## loux.thefuture

Bonjour,

je veux faire un serveur sécurisé, cela ne sert à rien d'installer les sources hardened, de renforcer la compilation avec gcc + ssp + pie

si à la fin un simple strcpy ma programmé crée une vulnérabilité sur la machine !

En plus dans le tutorial ca marche et moi non et la je suis sec 

A+

loux

----------

## xaviermiller

Est-ce que la doc que tu as lue est à jour par rapport aux sources que tu as utilisées" ?

----------

## loux.thefuture

hello

je pense que la doc date un peu mais les mécanismes utilisés sont les mêmes

A+

loux

----------

## xaviermiller

Bref, faudra trouver quelqu'un qui est dans le même cas que toi pour comparer vos résultats  :Wink: 

----------

## loux.thefuture

Hello,

en gros il faudrait quelqu'un qui a monté un serveur sécurisé avec hardened-sources + SSP + PIE + PAX

et qui a testé paxtest

A+

loux

----------

## boozo

j'ai checké tout l'a-m sur le mien qui à la même config PAX que toi mais nada... rien à faire   :Confused: 

je penche pour la doc non à jours et/ou avec des modifs dans le code depuis... vais voir avec d'autres s'ils on mieux que nous et je dis le cas échéant   :Rolling Eyes: 

----------

## guilc

Salut,

De ce que je peux checker chez moi sur ma Gentoo hardened et sur des debian grsec, ça fait pareil partout, avec PAX activé...

/me sait pas pourquoi il met vulnerable

----------

## PabOu

moi pareil, sur une gentoo hardened avec hardened-sources, comme je l'ai dit dans l'autre sujet de loux.thefuture (je ne pige pas pourquoi il a ouvert 2 threads pour le meme sujet d'ailleurs.. il a peut-etre perdu le premier qui à du passer sur la 2eme page)

----------

## boozo

ah je me disais aussi... j'avais pas rêvé les deux topic   :Confused: 

faudrait merger les deux topic en fait... vais demander aux mod's s'ils peuvent faire qqch

----------

## kernelsensei

 *boozo wrote:*   

> ah je me disais aussi... j'avais pas rêvé les deux topic  
> 
> faudrait merger les deux topic en fait... vais demander aux mod's s'ils peuvent faire qqch

 

Done !

----------

## loux.thefuture

tout ca c'est de ma faute,

mais j'avais pas fait un topic propre la première fois

alors je me suis dit qu'en recommençant cela irait mieux

mea culpa

Loux

----------

## PabOu

je rajoute ce lien à la discussion :

http://forums.grsecurity.net/viewtopic.php?p=5560&sid=7ee0a02f854d887e180c97eda6005dfb

----------

## loux.thefuture

Merci pour le lien,

cela explique que strcpy et autres sont vulnerables

et que je ne peux rien à faire à cela pour l'instant

merci à tous pour la discussion

A+

loux

----------

## El_Goretto

Merci de remplacer le [solve par un (résolu) STP  :Smile: 

Quitte à raccourcir ton titre...

----------

## PabOu

 *loux.thefuture wrote:*   

> Merci pour le lien,
> 
> cela explique que strcpy et autres sont vulnerables
> 
> et que je ne peux rien à faire à cela pour l'instant
> ...

 

mais si, tu peux y faire! c'est à cela que servent les flags hardened et pic qui ont été appliqués sur ta chaine de compilation

----------

## loux.thefuture

Bonjour,

je ne suis pas d'accord avec ta remarque,

j'ai utilisé les options dont tu parles "hardened et pic" comme les autres dans ce topic et nous avons tous la vulnérabilité sur strcpy

alors je pense que tu ne peux pas dire cela ?

as-tu essayé ?

A+

loux

----------

## PabOu

Non, je n'ai pas essayé, mais comme c'est expliqué dans le lien que j'ai donné, c'est un comportement normal pour paxtest. Il est donc normal que ca t'affiche "Vulnerable", meme si tu as placé d'autres lignes de défense afin de les contrer.

En résumé : Ils ne veulent pas donner le sentiment d'une protection parfaite.

----------

## xaviermiller

Vu que c'est open source : vous y pouvez !

yaka éditer les sources, remplacer les strcpy comme il faut et envoyer le patch au développeur  :Wink: 

----------

## _droop_

 *XavierMiller wrote:*   

> Vu que c'est open source : vous y pouvez !
> 
> yaka éditer les sources, remplacer les strcpy comme il faut et envoyer le patch au développeur 

 

Vérifier que ça compile et que ça marche. Il faut aussi s'arranger que les gens puissent choisir entre la version normale et la version "sécurisée"... (option de configure à priori).

----------

## xaviermiller

 *_droop_ wrote:*   

>  *XavierMiller wrote:*   Vu que c'est open source : vous y pouvez !
> 
> yaka éditer les sources, remplacer les strcpy comme il faut et envoyer le patch au développeur  
> 
> Vérifier que ça compile et que ça marche. Il faut aussi s'arranger que les gens puissent choisir entre la version normale et la version "sécurisée"... (option de configure à priori).

 

Ah ? faut en plus tester ? chavais pas ...  :Laughing: 

----------

## _droop_

 *XavierMiller wrote:*   

> Ah ? faut en plus tester ? chavais pas ... 

 

 :Cool:   :Laughing: 

----------

