| Kriptópolis alojado en |
| Zilos-Veloxia Network |
| Tu mejor defensa: |
| Bufet Almeida |
El bit NX
Es muy probable que nunca hayas oido hablar del bit NX y por tanto ignores lo que esta tecnología puede aportar a tu seguridad.
La tecnología NX (No eXecute) se utiliza para separar en la CPU las áreas que contienen datos de las que contienen código ejecutable (algo que se conoce como arquitectura Harvard y que se utiliza en los microcontroladores PIC, por ejemplo). De este modo, si algo que se encuentra marcado como dato intenta ejecutar instrucciones, el procesador detiene esa ejecución y manda un aviso al usuario, a través del sistema operativo. Dado que mucho malware trata de ejecutarse así (camuflando su código en áreas de datos de otros programas) se trata de una primera barrera defensiva. Además, áreas tan delicadas como el stack y el heap, pueden ser protegidas por el sistema operativo haciendo uso de la tecnología NX...
Esta tecnología no es nueva. Ha existido desde hace años en muchas máquinas diferentes, pero ha sido AMD quien la ha bautizado así, y al incluirla en su línea AMD64 la ha popularizado. Intel la ha denominado XD y la añade a sus procesadores a partir de algunos Pentium 4 Prescott.
Como es lógico, para poder beneficiarse de este nivel adicional de protección son necesarias dos cosas: que el procesador lo implemente y que el sistema operativo lo soporte.
Para saber si el procesador lo soporta pueden emplearse utilidades de diagnóstico del hardware, pero tampoco es necesario. A partir de Windows XP SP2 y Windows 2003 SP1 si el procesador soporta NX (denominada DEP por Microsoft) éste se habilita por defecto para los servicios y programas más críticos. Al parecer la implementación de Microsoft ha sido mejorada en Windows Vista, cerrando alguna otra vía de ataque no contemplada en su implementación para XP/2003.
Se puede comprobar si Windows está utilizando tecnología NX accediendo a Panel de Control -> Sistema -> Avanzadas -> "Performance" (no sé cómo lo denomina Microsoft en español... ¿Rendimiento?).
A continuación muestro una imagen correspondiente a un procesador que soporta NX:

Y esta es una imagen de mi propio sistema (Pentium 4 HT) que no lo soporta (ver mensaje en la parte inferior de la ventana):

A los más desafortunados, Windows nos ofrece el consuelo de proporcionarnos una especie de NX por software que, como puede suponerse, no es lo mismo (de hecho no tiene nada que ver con NX).
¿Y qué ocurre con otros sistemas operativos? ¿Soportan NX?
Solaris lo soporta desde hace diez años en máquinas SPARC, pero lo ha añadido activo por defecto en procesadores x86 a partir de Solaris 10, hace dos años.
Mac OS X para Intel lo soporta desde la versión 10.4.4.
Linux incluye soporte para NX en x86 desde la versión 2.6.8 (2004).
Entre los BSD, NetBSD y OpenBSD lo soportan, pero FreeBSD no.
Más información:
- How to Enable Processor-Based Security [Hardware Secrets].
- NX bit [Wikipedia].



Pentium 4 HT
Bueno me extraña un poco tu comentario ya que yo tengo un Pentium 4 HT y si soporta DEP, adjuntaría una captura de pantalla pero no se como subirla.
Salud y felicitaciones por tu sitio, el cual ya se me ha hecho imprescindible el visitarlo a diario.
Ya me gustaría, ya
Pero dice Intel:
Y parece que a los usuarios de HP Pavilion t740.es nos tocó la china:(
Intel Pentium 4 540 ----------------------------------------------------
Processor Name: Intel Pentium 4 540
Current Processor Freqency: 3200.2 MHz
Current Processor Freqency [MHz]: 3200
CPU Brand Name: Intel(R) Pentium(R) 4 CPU 3.20GHz
CPU Vendor: GenuineIntel
CPU Stepping: Prescott,Nocona: D0
CPU Code Name: Prescott
Microcode Update Revision: 00000013
No Execute Not Present
el mio dice que no
y es un core 2 duo 6400
en ubuntu tampoco
y me voy al ubuntu y parece que tampoco
por lo menos no soy capaz de verlo
root@Ordenador-fijo:/home/danielo# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz
stepping : 6
cpu MHz : 1596.000
cache size : 2048 KB
physical id : 0
siblings : 1
core id : 255
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmopat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni nitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
bogomips : 4259.71
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz
stepping : 6
cpu MHz : 1596.000
cache size : 2048 KB
physical id : 1
siblings : 1
core id : 255
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmopat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni nitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
bogomips : 4255.20
por si acaso
root@Ordenador-fijo:/home/danielo# grep -iq nx /proc/cpuinfo && echo "NX soportado" || echo "NX NO SOPORTADO"
NX NO SOPORTADO
root@Ordenador-fijo:/home/danielo#
...será alguna opción en la BIOS?
En algunos casos sí
Mira a ver por si acaso. Yo tampoco tengo la opción en la BIOS, pero hay quien sí la tiene y puede elegir activarla o no.
Efectiviwonder
Era una opción en la BIOS
estaba en disabled
Ya está funcionando
Daniel
Este sí
# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 44
model name : AMD Sempron(tm) Processor 3000+
stepping : 2
cpu MHz : 1809.576
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr
pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx
fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni
lahf_lm
bogomips : 3621.20
El siguiente script hace la búsqueda directamente:
grep -iq nx /proc/cpuinfo && echo "NX soportado" || echo "NX NO SOPORTADO"
que alguien me corrija...
Solaris en arquitectura SPARC lo soporta desde hace mucho tiempo, como bien dice el articulo. Solo hay que meter algun parametro en el /etc/system para activarlo.
Pero me queda una duda... Creo recordar que alguna vez vi un exploit de ejemplo para saltarse esa proteccion en solaris... He estado buscando y ahora no encuentro nada de eso. La pregunta es ¿alguien puede confirmarlo o negarlo?. Lo digo porque, aunque esta bien eso de poner todas las barreras posibles, puede que no sea buena la sensacion de falsa seguridad que proporciona implementar en x86 una solucion para la que ya hay exploits en otras arquitecturas..
cpuinfo
hola,
he visto que utlilizais la orden "cpuinfo" en linux y me gustaria saber si hay algun equivalente en windows xp.
Gracias.
cpuinfo
Primeramente cpuinfo en Linux no es una orden, es simplemente un archivo que se encuentra en el directorio /proc. En windows yo no conozco un comando o archivo de sistema operativo que te pueda dar esa info, pero hay pequeñas aplicaciones como CPU-Z que te dan todos los detalles sobre el hardware que conforma tu PC, CPU, Motherboard, memoria, etc.
Opinar