{"id":644,"date":"2013-10-10T17:57:35","date_gmt":"2013-10-10T20:57:35","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=644"},"modified":"2013-10-10T18:03:11","modified_gmt":"2013-10-10T21:03:11","slug":"nptl-exec-shield-e-outros-palavroes-que-fazem-seus-programas-crasharem","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=644","title":{"rendered":"NPTL, Exec-Shield e outros palavr\u00f5es que fazem seus programas crasharem"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>NPTL<\/b><\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td align=\"justify\">NPTL, tamb\u00e9m conhecido como\u00a0<i>Native POSIX Thread Library<\/i>, \u00e9 o novo sistema de threading do kernel 2.6. O NPTL promete melhor compatibilidade com o padr\u00e3o POSIX, maior escalabilidade e maior desempenho na cria\u00e7\u00e3o e destrui\u00e7\u00e3o de threads, colocando o\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>\u00a0em p\u00e9 de igualdade com os Unix comerciais em termos de alto desempenho (e custando muuuuuuuuito menos! \ud83d\ude42 Para os chegados em tecnicalidades ou estudiosos de sistemas operacionais, vale a leitura do\u00a0<i>paper<\/i>\u00a0descritivo da biblioteca em:<\/p>\n<ul>\n<li><a href=\"http:\/\/people.redhat.com\/drepper\/nptl-design.pdf\">http:\/\/people.redhat.com\/drepper\/nptl-design.pdf<\/a><\/li>\n<\/ul>\n<p>A RedHat vem implementando um backport do NPTL para os seus kernels 2.4 desde o RedHat 9 e o kernel do Fedora Core 1 tem o mesmo patch.<\/p>\n<p>S\u00f3 que alguns programas podem crashar alegremente, deixando voc\u00ea com um segfault na m\u00e3o e uma cara de tacho. Exemplos cl\u00e1ssicos s\u00e3o o\u00a0<i>IBM JRE<\/i>\u00a0e o\u00a0<i>Sun JVM<\/i>\u00a0(antes do 1.4.1, bem, voc\u00ea deveria estar utilizando o 1.4.2 mesmo&#8230;). Neste caso, LD_ASSUME_KERNEL \u00e9 seu amigo.<\/p>\n<p>LD_ASSUME_KERNEL \u00e9 uma vari\u00e1vel de ambiente que diz ao kernel para utilizar o velho LinuxThreads em vez do NPTL, com isso deixando o programa problem\u00e1tico mais feliz. Pode assumir os valores 2.2.5, 2.4.1 ou 2.4.19 (ou seja, emula\u00e7\u00e3o do comportamento de kernels espec\u00edficos). Uma boa pol\u00edtica \u00e9 utilizar um alias do shell para o programa crashento, por exemplo:<\/td>\n<\/tr>\n<tr>\n<td>alias programa_crashento=&#8221;LD_ASSUME_KERNEL=2.4.1 programa_crashento&#8221;<!--more--><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Exec-Shield<\/b><\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td align=\"justify\">Exec-Shield \u00e9 uma nova feature de seguran\u00e7a, dispon\u00edvel para kernels 2.4 e 2.6; os patches para o kernel 2.4 e 2.6 est\u00e3o em:<\/p>\n<ul>\n<li><a href=\"http:\/\/people.redhat.com\/mingo\/exec-shield\/\">http:\/\/people.redhat.com\/mingo\/exec-shield\/<\/a><\/li>\n<\/ul>\n<p>O patch marca largos peda\u00e7os do c\u00f3digo de um programa, incluindo a\u00ed o stack, n\u00e3o execut\u00e1veis. Com isso, ele cumpre dois pap\u00e9is:<\/p>\n<ol>\n<li>Protege contra toda a mal\u00e9fica fam\u00edlia Overflow: stack, buffer e function pointer (ponteiro de fun\u00e7\u00e3o). De quebra, acaba com uma das cr\u00edticas do pessoal de BSD contra o\u00a0<a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>, a facilidade de crashar um kernel com buffer overflows \ud83d\ude00<\/li>\n<li>Torna aleat\u00f3rio o ponto na VM onde o bin\u00e1rio \u00e9 carregado, com isso torna mais dif\u00edcil a vida dos exploits que tentam acessar c\u00f3digo ou dados para fins de ataque.<\/li>\n<\/ol>\n<p>Mas como nem tudo na vida \u00e9 perfeito, alguns programas n\u00e3o querem nem saber e saem crashando. E agora? O problema pode ser resolvido de diversas formas:<\/p>\n<p>1) Voc\u00ea pode desabilitar o Exec-Shield apenas para o programa infrator, utilizando o programa &#8216;setarch&#8217;. Utilizando a t\u00e9cnica do alias:<\/td>\n<\/tr>\n<tr>\n<td>alias programa_crashento=&#8221;setarch i386 programa_crashento&#8221;<\/td>\n<\/tr>\n<tr>\n<td align=\"justify\">2) Desabilitando o Exec-Shield, temporariamente ou direto.2.1) Desabilitando temporariamente:<br \/>\nO arquivo\u00a0<i>\/proc\/sys\/kernel\/exec-shield<\/i>\u00a0controla o comportamento do Exec-Shield. Quando est\u00e1 em 0, o Exec-Shield \u00e9 desabilitando. Ent\u00e3o, como root, digite:<b># cat 0 &gt; \/proc\/sys\/kernel\/exec-shield<\/b><\/p>\n<p>para desabilitar a partir do momento da digita\u00e7\u00e3o.<\/p>\n<p>2.2) Desabilitando em tempo de boot:<br \/>\nVoc\u00ea pode utilizar o par\u00e2metro de kernel exec-shield (exec-shield=0) ou ent\u00e3o colocar\u00a0<i>kernel.exec-shield=0<\/i>\u00a0em\u00a0<i>\/etc\/sysctl.conf<\/i>. Reboote ap\u00f3s as altera\u00e7\u00f5es, e o Exec-Shield ser\u00e1 desabilitado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Palavras finais<\/b><\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td align=\"justify\">Al\u00e9m dos sites citados, o RELEASE-NOTES do Fedora Core 1 tamb\u00e9m \u00e9 uma excelente ajuda:<\/p>\n<ul>\n<li><a href=\"http:\/\/download.fedora.redhat.com\/pub\/fedora\/linux\/core\/1\/i386\/os\/RELEASE-NOTES.html\">http:\/\/download.fedora.redhat.com\/&#8230;\/RELEASE-NOTES.html<\/a><\/li>\n<\/ul>\n<p>Para os interessados nos caminhos do kernel,\u00a0<a href=\"http:\/\/www.kerneltrap.org\/\">www.kerneltrap.org<\/a>\u00a0\u00e9 bookmark obrigat\u00f3rio. Tem mat\u00e9rias interessantes sobre NPTL e Exec-Shield por l\u00e1.<\/p>\n<p>Voc\u00ea pode precisar, de repente, de utilizar mais de uma t\u00e9cnica contra programas repetidamente infratores.<\/p>\n<p>Divirtam-se!<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>NPTL NPTL, tamb\u00e9m conhecido como\u00a0Native POSIX Thread Library, \u00e9 o novo sistema de threading do kernel 2.6. O NPTL promete melhor compatibilidade com o padr\u00e3o POSIX, maior escalabilidade e maior desempenho na cria\u00e7\u00e3o e destrui\u00e7\u00e3o de threads, colocando o\u00a0Linux\u00a0em p\u00e9 de igualdade com os Unix comerciais em termos de alto desempenho (e custando muuuuuuuuito menos! [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1,42,51,68,271],"tags":[391,388,387,389,390],"class_list":["post-644","post","type-post","status-publish","format-standard","hentry","category-viazap","category-leitura-recomendada","category-linux-linuxrs","category-redes-2","category-seguranca-2","tag-crasharem","tag-exec-shield","tag-nptl","tag-palavroes","tag-programas"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=644"}],"version-history":[{"count":4,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/644\/revisions"}],"predecessor-version":[{"id":651,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/644\/revisions\/651"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}