Sei sulla pagina 1di 52

Capítulo

Control de acceso
Volviendo a los primeros sistemas de tiempo compartido, la
gente sistemas consideraba a los usuarios, y cualquier código
que escribieron, como los enemigos mortales de nosotros y el uno
del otro.Nosotrosfueroncomoelpolicíafuerza
en una barriada violenta.
— Roger Needham
Microsoft podría haber incorporado medidas de seguridad
eficaces como estándar, pero prevaleció el sentido común. Los
sistemas de seguridad tienen un desagradable hábito de
backfiring y no hay duda de que causarían
enormes problemas.
— Rick Maybury

4.1 Introducción
El control de acceso es el centro tradicional de gravedad de la seguridad
informática. Es donde la ingeniería de seguridad se encuentra con la
informática. Su función es controlar qué principios (personas, procesos,
máquinas, .. .) tienen acceso a qué recursos del sistema — qué archivos pueden
leer, qué programas pueden ejecutar, cómo comparten datos con otros
principales, etc.
El control de acceso funciona en varios niveles (Figura 4.1).

Hardware

Del

Middlewar
Figura 4.1: Controles de acceso a diferentes niveles en un sistema

93
9 Capítulo 4 Control de
4 acceso
1. Los mecanismos de control de acceso que el usuario ve en el nivel de
aplicación pueden expresar una directiva de seguridad muy rica y
compleja. Un moderno busi- ness en línea podría asignar personal a una
de docenas de roles diferentes, cada uno de los cuales podría iniciar
algún subconjunto de varios cientos de transacciones posibles en el
sistema.Algunosdeestos(como reembolsos)podríarequierendualcontrolo
la aprobación de un supervisor. Y eso no es nada comparado con la
complejidad de los controles de acceso en un sitio de redes sociales
moderno, que tendrá un matorral de reglas y opciones sobre quién
puede ver, copiar y separarqué datos de quién.
2. Las aplicaciones se pueden escribir sobre middleware, como un
sistema de administración de bases de datos o un paquete de
contabilidad, que aplica una serie de propiedades de protección. Por
ejemplo, el software de contabilidad puede garantizar que una
transacción w hich carga un libro mayor por una cantidad determinada
debe acreditar otro libro mayor por la misma cantidad, mientras que el
software de base de datos normalmente tiene controles deacceso que
especifican qué dictio- naries un usuario determinado puede
seleccionar y qué procedimientos pueden ejecutar.
3. El middlewareutilizará las instalaciones proporcionadas por el sistema
operativo subyacente. A medida que se construyen recursos como
archivos y puertos de comunicaciones a partir de componentes de nivel
inferior, adquiere la responsabilidad de proporcionar formas de
controlar el acceso a ellos.
4. Por último, los controles de acceso al sistema operativo normalmente se
basarán en las características de hardware proporcionadas por el
procesador o por el hardware de administración de memoria asociado.
Estos controlan a qué direcciones de memoria puede acceder un
proceso determinado.
A medida que trabajamos desde el hardware desde el sistema operativo y el
middleware hasta la capa deaplicación, los controles se vuelven
progresivamente más complejos y menos fiables. La mayoríade los fraudes
informáticos reales implican que el personal descubra características del
código de aplicación que pueden explotar deuna manera oportunista, o
simplemente abusando de las características de la aplicación que se les confió
en ellos.Sin embargo,lagunasencontrol de accesomecanismos — talescomo en
el software de base de datos utilizado en un gran número de servidores web —
puede exponer muchos sistemas simultaneoy obligar a un gran número de
empresas a parchear o reescribir sus productos. Así que en este capítulo, nos
centraremos en los fundamentos: control de acceso a los niveles de hardware,
sistema operativo y base de datos. Usted tiene que entender los principios
básicos para design controles de nivel de aplicación útiles también
(IdarmuchosejemplosenParteIIdecómoacombinaraccesocontroles con las
necesidades desolicitudes).
Al igual que con los otros bloques de creación discutidos hasta ahora, el
control de acceso sólo tiene sentido en el contexto de un objetivo de protección,
normalmente expresado como una política de seguridad. Los PC tienen un
legado desafortunado, ya que el viejo usuario que opera
4.1 Introducción 95

sistemas como DOS y Win95/98 permiten que cualquier proceso modifique


cualquier dato; como resultado, muchas aplicaciones no se ejecutarán a menos
que se ejecuten con privilegios de administrador y, por lo tanto, se les dé acceso
a toda la máquina. Insistir en que el software se ejecute como administrador
esmás conveniente para el programador. Pero la gente tiene objetivos de
protección implícitos; no esperas que un programa de envoltura retráctil
debatruce tu disco duro. Por lo tanto, una política de seguridad explícita es una
buena idea.
Ahora uno de los mayores desafíos en la seguridad informáticaimpedía que
un programa interfiera con otro. Usted no quiere que un virus para ser capaz
de robar las contraseñas de su navegador, o para parchear una aplicación
bancaria con el fin de robar su dinero. Además, muchos problemas cotidianos
de fiabilidad se derivan de aplicacionesque interactúan entre sí o con la
configuración del sistema. Sin embargo, es difícil separar las aplicaciones
cuando el cliente desea compartir datos.Seseríahacerphishingmuchomás
difícilsila gentefueronsimplementeno puede pegar direcciones URL de correos
electrónicos en una browser, pero eso haría la vida cotidiana mucho más difícil
también. El historial de un solo usuario de la informática personal ha hecho
que la gente esté acostumbrada a todo tipo de formas de trabajo que no son
realmente consistentes con la separación de aplicaciones y sus datos de
maneras útiles. Enhechos, un administrador superior de Microsoft opinó en
2000 que realmente no había nada que hacer en los controles de acceso del
sistema operativo, ya que los equipos cliente eran de un solo usuario y los
equipos de servidor eran de una sola aplicación.
El péndulo se está balanceando hacia atrás. Los centros de alojamiento
hacen un uso cada vez mayor de la virtualización; tener máquinas
exclusivamente para su propio uso cuesta varias veces lo que usted paga por el
mismo recurso en máquinas compartidas. La iniciativa Trusted Computing, y
Microsoft Vista, ponen más énfasis en separar las aplicaciones unas de otras;
incluso si no te importa la seguridad, evitar que tus programas sobrescriban
los archivos de configuración de los demás deberían hacer su PC mucho más
fiable. Más seguro de operar systems han llevado a ataques cada vez más
técnicos en el software que no sea el sistema operativo; usted no quiere que su
cuenta de corretaje hackeado a través de un juego de computadora que descaró
que más tarde truns out para ser inseguro. Y a los empleadores les gustaría
formas de asegurarse de quelos portátiles de employees no recojan malware
en casa, por lo que tiene sentido tener una partición (o máquina virtual ) para
el trabajo y otro para el juego. Deshacer el daño causado por muchos años de
promiscuidad de intercambio de información será difícil, pero a medio plazo
podríamos esperar razonablemente un marco que permita las
interaccionesentreaplicacionesaserrestringido a controlableinterfaces.
Muchos sistemas de control de acceso se basan en los mecanismos
proporcionados por el sistema operativo. Comenzaré discutiendo los
mecanismos deprotección de operación-syst em que apoyan el aislamiento de
múltiples procesos.Estosvinohistóricamente: inventarse junto con los
primeros sistemas de intercambio de tiempo enel
96 Capítulo 4 Control de
acceso
1960s — y siguen siendo la base sobre la que se construyen muchos mecha-
nisms de capa superior. A continuación, hablaré sobre los sistemas de bases de
datos, que proporcionan mecanismos de control de acceso ampliamente
similares que pueden o no estar vinculados a los mecanismos de los
sistemasoperativos. Por último, hablaré sobre tres técnicas avanzadas de
protección: el espacio aislado, la virtualización y la "computación de
confianza". El espacio aislado es un control de nivel de aplicación, que se
ejecuta por ejemplo en un explorador para restringir lo que el código móvil
puede hacer; la virtualización se ejecuta debajo del sistema operativo, creando
dos o más máquinas virtuales independientes entre las cuales se pueden
controlar o impedir flujos de infor-mación; y Trusted Computing es un
proyecto para crear dos máquinas virtuales en paralelo, uno es el versi "viejo,
de curado"de un sistema operativo y el segundo es un entorno más restringido
en el que se pueden llevar a cabo operaciones críticas para la seguridad, como
la criptografía.
El último sistema de Microsoft, Vista, está tratando de dejar de ejecutar todo
el código conprivilegio sadministración r, y estas tres técnicas modernas son
cada una, de forma independiente, tratando de lograr lo mismo - para
llevarnos de vuelta a donde estaríamos si todas las aplicaciones tuvieran que
ejecutarse con privilegios de usuario en lugar de como administrador. Eso es
más o menos donde computing estaba en la década de1970, cuando la gente
ejecutaba su código como procesos sin privilegios en miniordenadores y
mainframes de tiempo compartido. Sólo el tiempo dirá si podemos recuperar
el Edén perdido del orden y el control aludido en la cita de Roger Needham al
comienzo de este capítulo, y para escapar de la desordenada realidad de hoy a
la que se refiere la cita de Rick Maybury; orth haciendo.

4.2 Controles de acceso al sistema operativo


Los controles de acceso proporcionados con un sistema operativo
normalmente autentican entidades de seguridad mediante un mecanismo
como contraseñas o Kerberos y, a continuación, median su acceso a archivos,
puertos de comunicaciones y otros recursos del sistema.
Su efecto a menudo se puede modelar mediante una matriz de permisos de
acceso, con columnas para archivos y filas para los usuarios. Escribiremos r
para obtener permiso para leer, w para obtener permiso para escribir, x para
obtener permiso para ejecutar un programa y - para ningún acceso en absoluto,
como se muestra en la Figura 4.2.

Operación Accounts Sistema de


Auditoría Contable
Datos Sendero
Sam rwx rwx Rw r
Alice x x Rw
Bob 4.2: Rx
Figura r
Matriz de control r ingenuor
de acceso
4.2 Operativo Sistema Acceso 97
Controles
En este ejemplo simplificado, Sam es el administrador del sistema y tiene
acceso universal (excepto a la pista de auditoría, que incluso él sólo debería ser
capaz de leer). Alice, la gerente, necesita ejecutar el sistema operativo y la
aplicación, pero sólo a través de las interfaces aprobadas — ella no debe tener
la capacidad de
manipularlos.Ellatambiénnecesidadesaleeryescribireldatos.Bob,elauditor,
puede leertodo.
Esto es a menudo suficiente, pero en el caso específico de un sistema de
contabilidad no es exactamente lo que necesitamos. Queremos asegurarnos de
que las transacciones estén bien formadas, de modo que cada deb coincida con
un crédito en otro lugar, por lo que no querríamos que Alice tuviera acceso
deescritura desinhibido al archivo de cuenta. También preferiríamos que Sam
no tuviera este acceso. Así que preferimos que el acceso de escritura al archivo
de datos contables sea posible sólo a través del programa de contabilidad. Los
permisos de acceso podrían tener el aspecto que se encuentra en la Figura 4.3:

Usu
ario Seguimiento de datosdel
programa del sistema
Sam rwx rwx r r
Alice rx x –
Programa de cuentasrx r rw w Bob
rx de acceso
Figura 4.3: Matriz de control r para contabilidad
r r

Otra forma de expresar una política de este tipo sería con el acceso triples
de (usuario, programa, archivo). En el caso general, nuestra preocupación no
es con un programa tanto como un dominio de protección que es un conjunto
de procesos o subprocesos que comparten el acceso a los mismos recursos
(aunque en un momento dado podrían tener diferentes archivos abiertos o
diferentes programación priorities).
Las matrices de control de acceso (ya sea en dos o tres dimensiones) se
pueden utilizar para implementar mecanismos de protección así como
simplemente modelarlos.Peroquehacerno escalar bien. Por ejemplo, un banco
con 50.000 empleados y 300 solicitudes tendría una matriz de control de
acceso de 15.000.000 de entradas. Esto es incómodamente grande. No sólo
podría imponer un problema de rendimiento, sino también ser vulnerable a
los errores de los administradores. Normalmente necesitaremos una forma
más compacta de almacenar y administrar esta información. Las dos formas
principales de hacer esto son comprimir a los usuarios y comprimir los
derechos. En cuanto al primero de ellos, lo más sencillo es utilizar grupos o
roles para administrar los privilegios de conjuntos de usuarios
simultáneamente, mientras que en el segundo podemos almacenar la matriz
de control de acceso ya sea por columnas (listas de control de acceso) o filas
(capacidades,a vecesconocido como'billetes')[1102, 1344].(Hay enfoques más
complejos que implican motores de políticas, pero aprendamos a caminar
antes de intentar ejecutar.)
98 Capítulo 4 Control de
acceso

4.2.1 Grupos y roles


Cuando nos fijamos en las grandes organizaciones, por lo general nos
encontramos con que la mayoría del personal encaja en una u otra de un
pequeño número de categorías. Un banco podría tener 40 o 50: cajero, cajero
jefe, contador de sucursales, gerente de sucursal, etc. Sólo unas pocas docenas
de personas (seguridad manager, jefe de comercio de divisas, .. .) tendrán que
tener sus derechos de acceso definidos individualmente.
Por lo tanto, queremos un pequeño número de grupos predefinidos, o roles
funcionales, a los que se puede asignar personal. Algunas personas usan el
grupo de palabras y el rol int invariablemente,y con muchos sistemas loson;
pero la definición más cuidadosa es que un grupo es una lista de entidades de
seguridad, mientras que un rol es un conjunto fijo de permisos de accesoque
uno o más directores pueden asumir durante un período de tiempo utilizando
algunos procedure.Elclásicoejemplodeapapeleseloficialdeel reloj en un barco.
Hay exactamente un guardián a la vez, y hay un procedimiento formal por el
cual un oficial alivia a otro cuando el reloj cambia. De hecho, en la mayoríade
las aplicaciones gubernamentales y empresariales, es el papel que importa más
bienel individuo.
Los grupos y roles se pueden
combinar.Eloficialesdeelrelojdetodosbarcosactualmente en el mares un
grupo de roles. En la banca, el gerente de la sucursal de Cambridge podría
tener sus privilegios expresados por la pertenencia al gerente del grupo
unaasunción de la función de gerente interino de la sucursal de Cambridge.
El director del grupo podría expresar un rango en la organización (y tal vez
incluso una banda salarial) mientras que el gerente deun contador asistente
de pie mientras el gerente, el subgerente y el contador de sucursales están
enfermos.
La aplicación es que la aplicación debe ser cuidadosa. En un buque de
guerra, queremos que incluso un marinero ordinario pueda mantenerse de pie
si todos los ancianos han sido asesinados.Enabanco,quepodríatienen una
política que "las transferencias de más de $10 millones deben ser aprobadas
por dos empleados, uno con rango al menos gerente y otro con rango al menos
contador asistente". Si el gerente de la sucursal está enfermo, entonces el
contador asistente que actúa como gerente podría tener que proporcionar la
segunda firma en una transferencia grande.
El soporte a nivel del sistema operativo está disponible para grupos y roles,
pero su apariencia ha sido bastante reciente y su ptake usigue siendo lento. Los
desarrolladores solían implementar este tipo de funcionalidad en el código de
aplicación, o como middleware personalizado (en la década de 1980 trabajé en
dos proyectos bancarios dondegrupoel soporte fue codificado a mano como
extensiones para el sistema operativo del mainframe). Windows 2000
introdujo un amplio apoyo a los grupos, mientras que los investigadores
académicos han hecho bastante trabajo desde mediados de los años 90 en el
control de acceso basado en roles (RBAC), que discutiré más adelante en la
Parte II, y que está empezando para ser desplegado en algunas grandes
applications.
4.2 Operativo Sistema Acceso 99
Controles

4.2.2 Listas de control de acceso


Otra forma de simplificar la administración de derechos de acceso es
almacenar la matriz de control de acceso una columna a la vez, junto con el
recurso al que hace referencia la columna. Esto se denomina una lista de
control de acceso o ACL (pronunciado 'ackle'). En el primero de nuestros
ejemplos anteriores, la ACL para el archivo 3 (el archivo de cuenta) podría
verse como se muestra aquí en la figura 4.4.
Las ACL tienen una serie de ventajas y desventajas como medio de
administrar el estado de
seguridad.EstospuedeserdivididoengeneralpropiedadesdeACL, y propiedades
específicas deimplementaciones.
Las ACL son una opción natural en entornos donde los usuarios administran
su propia seguridad de archivos, y se generalizaron en los sistemas Unix
comunes en universidades y laboratorios científicos de la década de
1970.Ellosareelbásicoacceso mecanismo de control en sistemas basados en
Unix como GNU/Linux y OS/X de Apple; los controles de acceso en Windows
también se basan en ACL, pero se han vuelto más complejos con el tiempo.
Cuando la políticade control de acceso se establece de forma centralizada, las
ACL son adecuadas para los entornos en los que laprotección está orientada a
los datos; son menos adecuadas cuando la población de usuarios es grande y
cambia constantemente, o donde los usuarios quieren poder delegar su
autoridad para ejecutar un programa en particular a otro usuario durante
algún período establecido de time. Las ACL son fáciles de implementar, pero
no son eficientes como un medio de hacer la comprobación de seguridad en
tiempo de ejecución, ya que el sistema operativo típico sabe qué usuario está
ejecutando un programa en particular, en lugar de a qué archivos se ha
autorizado a acceder desde que era Invoca. El sistema operativo debe
comprobar la ACL en cada acceso a archivos o realizar un seguimiento de los
derechos de acceso activos de alguna otra manera.
Por último, distribuir las reglas de acceso en ACL significa que puede ser
tedioso encontrar todos los archivos a los que un usuario hcomo acceso. Por lo
general, la revocación del acceso de un empleado que acaba de ser despedido
tendrá que realizarse cancelando su contraseña u otro mecanismo de
autenticación. También puede ser tedioso ejecutar comprobaciones en todo el
sistema; por ejemplo, verificar que ningún archivo tiene been izquierda
mundial-escrito podría implicar la comprobación de ACL en millones de
archivos de usuario.
Echemos un vistazo a dos ejemplos importantes de ACL: su implementación
en Unix y Windows.

Contabilidad de
usuarios
Datos
Sam rw

Bob 4.4: Lista


Figura r de control de acceso (ACL)
100 Capítulo 4 Control de
acceso

4.2.3 Seguridad del sistema operativo Unix


En Unix (incluyendo su variante popular Linux), los archivos no pueden tener
listas de control de acceso arbitrarias, sino simplemente atributos rwx para el
recurso propietario, el grupo y el mundo.Estos atributos permiten leer, escribir
y ejecutar el archivo. La lista de control de acceso como se muestra
normalmente tiene una marca para mostrar si el archivo es un directorio, a
continuación, marca r, w y xparamundo,grupoypropietario respectivamente;
tiene el nombre del propietario y el nombre del grupo. Un directorio con todos
los indicadores establecidos tendría el ACL:

drwxrwxrwx Alice Accounts

En nuestro primer ejemplo en la Figura 4.3, la ACL del archivo 3 sería:

-rw-r----- Cuentas de Alice

Este registro that el archivo no es un


directorio;elarchivopropietariopuedeleeryescribirlo; los miembros del grupo
pueden leerlo pero no escribirlo; los miembros que no son del grupo no tienen
acceso en absoluto; el propietario del archivo es Alice; y el grupo esCuentas.
En Unix, el programa que obtiene el control cuando se inicia la máquina (el
kernel del sistema operativo) se ejecuta como supervisor y tiene acceso sin
restricciones a toda la máquina. Todos los demás programas se ejecutan como
usuarios y tienen su acceso mediado por el supervisor. Las decisiones de
Access se toman sobre la base del ID de usuario asociado con el programa. Sin
embargo, si esto es cero (raíz), entonces la decisión de control de accesoes 'sí'.
Así que root puede hacer lo que le gusta: acceder a cualquier archivo,
convertirse en cualquier usuario, o lo que sea. Lo que es más, hay unareciertas
cosas que sólo la raíz puede hacer, como iniciar ciertos procesos de
comunicación. El ID de usuario raíz normalmente está disponible para el
administrador del sistema.
Esto significa que (con la mayoría de los sabores de Unix) el administrador
del sistema puede hacer cualquier cosa, por lo que tenemos dificultades para
implementar una pista de auditoría como un archivo que no puede
modificar.Estenosólosignificaque,ennuestroejemplo,Sampodríatinker con las
cuentas, y tienen dificultad para defenderse si fue falsamente acusado de
retoque, pero que un hacker who se las arregló para convertirse en el
administrador del sistema podría eliminar todas las pruebas de suintrusión.
Las distribuciones de Berkeley, incluyendo FreeBSD y OS/X, van de alguna
manera hacia la solución del problema. Los archivos se pueden configurar
como solo anexar, inmutables o no se pueden eliminar para el usuario, el
sistema o
ambos.Cuandoconjuntoporausuarioenasuficienteseguridadnivelduranteelbot
aproceso,queno puedeseranuladooeliminadomás
tarde,inclusoporraíz.Variosmilitaresvariantesirainclusomayorproblemasaper
mitirseparacióndedeber.Sin embargo,elmás simpleyla
mayoríacomúnmaneraaprotegerregistroscontraraízcompromisoesamantener
ellospor
separado.Enelviejodíasquesignificabaenviandoelsistemaregistroaaimpresora
enabloqueadohabitación;hoy en
4.2 Operativo Sistema Acceso 10
Controles
día,dadoelvolúmenesdedatos,quesignificaenviandoqueaotromáquina,adminis 1
tradoporalguienotra cosa.
En segundo lugar, las ACL solo contienen los nombres de los usuarios, no
de los programas; por lo que no hay una manera directa de implementar triples
de acceso de (usuario, programa, archivo).
4.2 Operativo Sistema Acceso 101
Controles
En su lugar, Unix proporciona un método indirecto: el atributo de archivo set-
user-id (suid). El propietario de un programa puede marcarlo como suid, lo que
le permite ejecutarse con el privilegio de su propietario en lugar del privilegio
del usuario que lo ha invocado. Así que con el fin de lograr la funcionalidad
necesaria por nuestro segundo ejemplo anterior, podríamos crear un usuario
'paquete decuenta' para poseer el archivo 2 (el paquete decuentas), hacer que el
archivo suid y colocarlo en un directorio al que Alice tiene acceso. A este usuario
especial se le pueden dar los atributos de control de acceso que necesita el
programa de cuentas.
Una forma de ver esto es que un problema de control de acceso que se
modela naturalmente en tres dimensiones, triples (usuario, programa, datos)
— se está implementando utilizando mecanismos bidimensionales.
Losmecanismos son mucho menos intuitivos que los triples y la gente comete
muchos errores al implementarlos. Los programadores son a menudo
perezosos o se enfrentan a plazos ajustados; por lo que sólo hacen la raíz
suidaplicación, por lo que puede hacer cualquier cosa. Esta práctica conduce a
algunos agujeros de seguridad bastante impactantes. La responsabilidad de
hacer queel control de acceso decisio ns se mueve del entorno del sistema
operativo al programa, y la mayoría de losprogramadores no tienen suficiente
experiencia y cuidado para comprobar todo lo que deben. (Es difícil saber qué
comprobar, ya que la persona que invoca un raíz suidprograma controla su
environía y a menudo puede manipular esto para causar protecciónfallas.)
En tercer lugar, las ACL no son muy buenas para expresar el estado mutable.
Supongamos que queremos que una transacción sea autorizada por un gerente
y un contador antes de que se actúe; podemos hacer esto en el nivel
deaplicación (por ejemplo, teniendo colas de transacciones a la espera de una
segunda firma) o haciendo algo elegante con
suid.Engeneral,gestiónestadoaccesoreglasesdifícil;esteincluso puede
complicar la revocación de los usuarios que acaban de ser fuego d, ya que
puede ser difícil rastrear los archivos que podrían tenerabierto.
Cuarto, el ACL de Unix nombra solamente a un usuario. Las versiones
anteriores permiten que un proceso contenga solo un identificador de grupo a
la vez y lo obligan a usar un programa con privilegios para tener acceso a otros
grupos; los tallos de Unix sy más nuevosponen un proceso en todos los grupos
en los que se encuentra el usuario. Esto es todavía mucho menos expresivo de
lo que a uno le podría gustar. En teoría, los mecanismos ACL y suid se pueden
utilizar a menudo para lograr el efecto deseado. En la práctica, los
programadores a menudo no pueden molestarse en averiguar cómo hacer esto,
y diseñar su código para requerir mucho más privilegio del que realmente
debería tener.

4.2.4 OS/X de Apple


El sistema operativo OS/X de Apple se basa en la versión FreeBSD de Unix
run- ning en la parte superior del kernel Mach. La capa BSD proporciona
protección de memoria; las aplicaciones no pueden acceder a la memoria del
sistema (o a la de cada una) a menos que se ejecuten con permisos avanzados.
Este means, por ejemplo, que se puede matar una aplicación acuñada
utilizando el comando 'Forzar salir'; por lo general no tiene
102 Capítulo 4 Control de
acceso
para reiniciar el
sistema.OnsuperiordeesteUnixnúcleosonanúmerodegráficoscompo-
nents,incluyendoOpenGL,Cuarzo,QuicktimeyCarbono,mientras
queenelinterfaz de usuario Aqua proporciona una vista elegante y coherente a
la usuario.
A nivel del sistema de archivos, OS/X es casi un Unix estándar. La
instalación predeterminada tiene la cuenta raíz deshabilitada, pero los
usuarios que pueden administrar el sistema están en un grupo 'wheel' que les
permite su a root. La implicación más visible es que si usted es un usuario de
este tipo, puede instalar programas (se le pide la contraseña raíz cuando lo
hace). Esto puede ser un enfoque ligeramente mejor que Windows (hasta XP)
o Linux, que en la práctica permiten que sólo los administradores instalen
software, pero no insisten en un paso de autenticación cuando lo hacen; los
muchos usuarios de Windows que se ejecutan como administrador es por
comodidad para mayor comodidad hacer cosas terribles por error (y el
malware que descargan hace cosas terribles deliberadamente). Aunque
Microsoft está luchando para ponerse al día con Vista, como voy a discutir a
continuación, la ventaja de Apple puede ser aumentada aún más por OS / X
versión 10.5 (Leopard), que se basa en TrustedBSD, una variante de BSD
desarrollado para sistemas gubernamentales que incorpora control de acceso
obligatorio. (Discutiré esto en el Capítulo 8.)

4.2.5 Windows – Arquitectura básica


El sistema operativo de PC más extendido es Windows, cuya protección se ha
basado en gran medida en las listas de control de acceso desde Windows NT.
El versi actualen Windows (Vista) es bastante complejo, por lo que es útil
rastrear sus antecedentes. La protección en Windows NT (Windows v4) era
muy similar a Unix, y se inspiró en ella, y desde entonces ha seguido la filosofía
de Microsoft de 'abrazar y extender'.
En primer lugar, rather que simplemente leer, escribir y ejecutar hay
atributos separados para tomarposesión , cambie los permisos y elimine,lo que
significa que se puede admitir unadelegación más
flexible.Estosatributosaplicaragruposcomobiencomousuarios y permisos de
grupo le permiten lograr el mismo efecto que suidprogramas en Unix. Los
atributos no están simplemente activados o desactivados, como en Unix, sino
que tienen varios valores: puede establecer AccessDenied, AccessAllowed o
SystemAudit. Estos se analizan en ese order. Si un AccessDenied se encuentra
en un ACL para el usuario o grupo relevante, después no se permite ningún
acceso independientemente de las marcas AccessAllowed en conflicto. Una
ventaja de la sintaxis más rica es que puede organizar los asuntos para que las
tareas de configuración diarias, como la instalación de impresoras, no
requieran privilegios de administrador completos. (Sin embargo, esto se hace
raramente.)
En segundo lugar, los usuarios y los recursos se pueden dividiren dominios
con administradores distintos, y la confianza se puede heredar entre dominios
en una dirección o en ambos. En una gran empresa típica, puede poner a todos
los usuarios en un dominio de personal administrado por Recursos Humanos,
mientras que recursos como servers e impresoras podrían estar en dominios
de recursos bajo control departamental; las estaciones de trabajo individuales
pueden incluso estar administrados por sus usuarios.
4.2 Operativo Sistema Acceso 103
Controles
Las cosas se organizarían para que los dominios de recursos departamentales
confíen en el dominio de usuario, pero noen vic eversa, por lo que un descuido
administrador departamental no puede hacer mucho daño fuera de su propio
dominio.Elindividualestaciones de
trabajoseríaengireconfianzaeldepartamento(pero no al revés)así quequelos
usuarios pueden realizar tareas que requieren privilegios locales (la instalación
de muchos paquetes de software requiere esto). Los administradores siguen
siendo todopoderosos (por lo que no puede crear pistas de auditoría
verdaderamente resistentes a la manipulación sin usar dispositivos de
almacenamiento de escritura una vez o escribir en machines controlados por
otros) pero el daño que pueden hacer puede ser limitado por una organización
adecuada. La estructura de datos utilizada para administrar todo esto y ocultar
los detalles de ACL de la interfaz de usuario, se denomina Registro.Problemas
con el diseño de una arquitectura de seguridad de Windows en
muygrandesorganizacionesincluirnombrandoproblemas(que exploraré en el
Capítulo
6),elmaneradominiosescalacomoelnúmerodeprincipalesaumentos(mal),yelrest
ricciónqueausuarioenotrodominiono puedeserunadministrador(lo que puede
causar
complejas interacciones entre grupos locales y globales).
Una peculiaridad de Windows es que todo el mundo es un principal, no un
valor predeterminado o una ausencia de control, por lo que 'eliminar todo el
mundo significa simplemente detener un archivo que es generalmente
accesible. Un recurso se puede bloquear rápidamente estableciendo que todos
no tengan acceso. Esto nos lleva naturalmente al tema de las capacidades.

4.2.6 Habilidades de capa


La siguiente manera de administrar la matriz de control de acceso es
almacenarla por filas. Estas se denominan capacidades, y en nuestro ejemplo
en la Figura 4.2 anterior, las capacidades de Bob serían como en la Figura 4.5
aquí:

Auditoría de contabilidad
Sistem Programde cuentas
Dato operativas
Send
de usuario a a s ero
Bob Rx R R R
Figura 4.5: A Capacidad

Las fortalezas y debilidades de las capacidades son más o menos lo contrario


de las ACL. La comprobación de seguridad en tiempo de ejecución es más
eficiente, y podemos delegar un derecho sin mucha dificultad: Bob podría
crear un certificado diciendo 'Aquí estámi capacidad y por la presente delego
a David el derecho de leer el archivo 4 de 9am a 1pm, firmado Bob'. Por otro
lado, cambiar el estado de un archivo puede volverse de repente más
complicado,ya que puede ser difícilaveriguar a qué usuarios tienen acceso.
Esto puede ser aburrido cuando tenemos que investigar un incidente o
preparar evidencia de un crimen.
Hubo una serie de implementaciones experimentales en la década de 1970,
que eran más bien como contraseñas de archivo; los usuarios obtenían cadenas
104 Capítulo 4 Control de
acceso
de bits hard-to-guess para las diversas capacidades de lectura, escritura y otras
capacidades a las que tenían derecho. Se
4.2 Operativo Sistema Acceso 105
Controles
se encontró que tal acuerdo podía dar una protección muy completa [1344].
No era atípico encontrar que casi todo un sistema operativo podía ejecutarse
en modo de usuario en lugar de como supervisor, por lo que los errores del
sistema operativo no eran críticos para la seguridad.(De hecho, muchos
errores del sistema operativo causaron violaciones de seguridad, lo que hizo
que la depuración del sistema operativo sea mucho más fácil.)
Los sistemas de la serie IBM AS/400 emplearon protección basada en
capacidades y gozaron de cierto éxito comercial. Ahora las capacidades han
hecho una renuestra limitada en forma de certificados de clave pública.
Discutiré los mecanismos de criptografía de clave pública en Chapter 5, y daré
detalles más concretos de los sistemas basados en certificados, como SSL/TLS,
en la Parte II. Por ahora, piense en un certificado de clave pública como una
credencial, firmado por alguna autoridad, que declara que el titular de una
determinada clave criptográfica esuna persona determinada, o un miembro
de algún grupo, o el titular de algunos privilegio.
Como ejemplo de dónde pueden ser útiles las capacidades basadas en
certificados, considere un
hospital.Siqueimplementadoareglacomo'aenfermeraserátienenaccesoatodose
lpacientesquesonensubarrio,oquetienensidonoenelúltimo90días'ingenuamen
te, cada decisión de control de acceso en el sistema de registro del paciente
voluntadrequierenvarias referencias a los sistemas administrativos, para
averiguar quéenfermerasyquepacientesfueronenquebarrio,cuándo.Así
queafracasodeeladministrativosistemaspuedeahoraafectanpacienteseguridad
muchomásdirectamentequeantes,yesteesclaramenteamalocosa.Asuntospued
esermuchosimplificadopordandoenfermerascertificados que les dan derecho
a acceder a los archivos asociados
consuactualbarrio.Talesasistematienesidoutilizadoparavariosañosennuestrou
niversidadhospital.Públicoclavecertificadossona
menudoconsideradoaser'crypto'más
bienque'accesocontrol»,conelresultadoquesuimplicacionesparaaccesocontrol
políticasyarquitecturassonnopensamientoa través
de.ElleccionesquepodríatienensidoaprendidodeelcapacidadsistemasdeelAños
70sonen generalteneraserredescubierto(por el camino
difícil).Engeneral,ellímiteentrecriptoyaccesocontrolesaculpalíneadondecosas
puedefácilmenteirmal.Elexpertosa menudo
provienen de diferentes orígenes, y los productos de diferentes proveedores.

4.2.7 Windows – Características añadidas


Varios sistemas, desde productos de control de acceso a mainframe hasta
sistemas de investigación, han combinado ACL y capacidades en un intento de
obtener lo mejor de ambos mundos. Pero la aplicación más importante de las
capacidades está en Windows.Windows 2000 agregó capacidades de dos
maneras que pueden invalidar ocomplementar las ACL de Windows NT. En
primer lugar, los usuarios o grupos pueden estar en la lista blanca o en la lista
negra mediante perfiles. (Algunas listas negras limitadas fuerontambién es
posible en NT4.) La directiva de seguridad se establece por grupos en lugar de
por el sistema en su conjunto. Los grupos están diseñados para ser el método
principal para la gestióny el control de la configuración centralizada (la
directiva degrupo invalida los perfiles individuales). La directiva de grupo se
106 Capítulo 4 Control de
acceso puede asociar con sitios, dominios o
4.2 Operativo Sistema Acceso 107
Controles
unidades organizativas, por lo que puede empezar a abordar algunos de los
problemas de complejidad real con la
nomenclatura.Políticaspuedesercreadonosotrosingestándarherramientasoco
dificado sin formato personalizado. Los grupos se definen en Active
Directory,una base dedatos orientada a objetos que organiza usuarios, grupos,
máquinas y unidades organizativas dentro de un dominio en un espacio de
nombres jerárquico, indexándolos para que se puedan buscar en cualquier
atributo. También hay listas de control de acceso más finas en recursos
individuales.
Como ya se ha mencionado, Windows adoptó Kerberos de Windows 2000
como su principal medio de autenticar usuarios a través de redes1. Esto se
resume detrás de la interfaz del proveedor de soporte de seguridad (SSPI) que
permite a los administradores conectar otros servicios de autenticación.
Esto nos lleva a la segunda manera en que las capacidades insinúan su
camino en Windows: en muchas aplicaciones, la gente utiliza la clave pública
protocol TLS, que es ampliamente utilizado en la web, y que se basa en
certificados de clave pública. La administración de estos certificados puede
proporcionar otra capa de control de acceso orientada a la capacidad fuera del
ámbito de Directorio.
La última versión de Windows, Vista, introduce un conjunto adicional de
mecanismos de protección. Probablemente el más importante es un paquete
de medidas destinadas a alejarse de la situación predeterminada anterior de
todo el software que se ejecuta como root . En primer lugar, el kernel es
cperdido a los desarrolladores; en segundo lugar, el subsistema de gráficos se
elimina del kernel, al igual que la mayoría de los controladores; y en tercer
lugar, el Control de cuentas de usuario (UAC) reemplaza el privilegio de
administrador predeterminado con los valores predeterminados deusuario en
su lugar. Esto implicó grandes cambios; en XP, muchas tareas rutinarias
requerían privilegios administrativos y esto significaba que las empresas
generalmente hacían que todos sus usuarios administradores, lo que hizo
difícil contener los efectos del malware. Además, los desarrolladores
escribieron su software en el supuesto de que woulod tienen acceso a todos los
recursos del sistema.
En Vista, cuando un administrador inicia sesión, se le dan dos tokens de
acceso: uno estándar y uno de
administrador.Elestándartokenesutilizadoastartelescritorio,explorer.exe, que
actúa como el proceso primario para procesos de usuario posteriores. Esto
significa, por ejemplo, que incluso los administradores navegan por la web
como usuarios normales, y el malware que descargan no puede sobrescribir
los archivos del sistema a menos que se le dé una autorización
posterior.Cuandoatareaescomenzóquerequiereadminprivilegio,entoncesausu
ario que lo tiene obtiene unsolicitud de elevaciónpidiéndole que lo autorice
introduciendo una contraseña de administrador.(Esto pone Windows en línea
con oS/X de Apple, aunque los detalles bajo el capó difieren un poco.)

1De hecho, era una variante propietaria, con cambios en el formato de ticket que impiden a los
clientes de Windows trabajar con las infraestructuras Kerberos de Unixexistentes. La
documentación de los cambios se publicó a condición de que no se utilizara para realizar
implementaciones compatibles. El objetivo de Microsoft era conseguir que todos instalaran
servidores Kerberos Win2K. Esto causó una protesta en la comunidad de sistemas abiertos
108 Capítulo 4 Control de
acceso
[121].Desdeentonces,elEuropaUniónprocesadosunantimonopoliocaso en
contraMicrosoftqueresultadoeninterfazespecificacionesserhechodisponibleentarde2006.
4.2 Operativo Sistema Acceso 109
Controles
Por supuesto, los usuarios administradores a menudo son engañados para
instalar malicioso tanftware, por lo que Vista proporciona más controles en
forma de niveles de integridad de archivos. Discutiré estos junto con otros
controles de acceso obligatorios en el capítulo 8, pero la idea básica es que los
procesos de baja integridad (como el código que descarga de Internet) no
deben ser capaces de modificar los datos de alta integridad (como los archivos
del sistema). Queda por ver cuán eficaces serán estas medidas; los usuarios
domésticos probablemente querrán eludirlos para conseguir que las cosas
funcionen, mientras que Microsoft está proporcionandoherramientas cada vez
más sofisticadospara permitir a los administradores de TI bloquear las redes
corporativas, paraelpunto,paraejemplo,deprevenciónla mayoría de los
usuarios de la instalación de cualquier cosa de medios extraíbles. UAC y los
controles obligatorios de integridad pueden sin duda desempeñar un papel en
esta ecología, pero tendremos que esperar y ver cómo se desarrollan las cosas.
El problema final con el que se enfrentaron los desarrolladores de Vista es
elacto f que un gran número de aplicaciones existentes esperanraíz,así
quequequepuede jugar con la configuración del registro (para una sala de
verguenza, ver [579]). Según la gente de Microsoft, esta es una de las
principales razones de la falta de robustez: las aplicaciones se monos con
recursos del sistema de maneras incompatibles. Por lo tanto, hay un servicio
de información de aplicaciones que inicia aplicaciones que requieren
privilegios elevados para ejecutarse. Vista utiliza tecnología de virtualización
para aplicaciones heredadas: si modifican el registro, por
ejemplo,nomodificarelregistro 'real' pero simplemente la versión de la misma
que pueden ver. Esto se ve como una "solución a corto plazo"
[885].Yoesperarquevoluntadseralrededorparaalargotiempo,yEstoycuriosoave
rsielañadidocomplejidadvoluntadservalorelreducidomalwareriesgo. A pesar
de la virtualización, el bugbear con Vista es compatibilidad. Como este libro
salió a la prensa a principios de enero de 2008, las ventas de
Vistalento,conusuarios personales quejándose de que los juegos y otros
pplicationssólono lo hizotrabajo,mientras
quenegociousuariosfueronesperandoparaserviciopaquete1yposponera gran
escaladespliegueatarde2008oinclusotemprano2009. Claramente ha sido caro
para Microsoft alejarse de ejecutar todo como raíz, pero es claramente un
movimiento necesario y merecen crédito completo por morder la bala.
En resumen, Windows proporciona un conjunto más rico y flexible de
herramientas de control de acceso que cualquier sistema vendido
anteriormente en los mercados masivos. Todavía tiene limitaciones de diseño.
La implementación de roles cuyos requisitos difieren de los de los grupos
podría ser complicado en algunas aplicaciones; Los certificados SSL son la
forma obvia de hacerlo, pero requieren una infraestructura de administración
externa. En segundo lugar, Windows sigue siendo (en sus encarnaciones de
consumidores) un sistema operativo de un solo usuario en el sentido de que
sólo una persona puede operar un PC a la vez. Por lo tanto, si quiero ejecutar
un usuario sin privilegios y sacrificial en mi PC para acceder a sitios web poco
confiables que podrían contener código malicioso, tengo que cerrar sesión e
iniciar sesión de nuevo, o utilizar otras técnicas que son tan inconvenientes
que pocos usuariosb Otro. (En mi Mac, puedo ejecutar dos usuarios
simultáneamente y cambiar entre ellos rápidamente.) Por lo tanto Vista debe
ser visto como el último paso en un viaje, en lugar de un destino. La versión
110 Capítulo 4 Control de
accesotambién tiene algunos
inicial
4.2 Operativo Sistema Acceso 111
Controles
peculiaridades de implementación indeseables. Por ejemplo, utiliza algunas
heurísticas extrañas para tratar de mantener la compatibilidad con los
programas que suponen que se ejecutarán++ como administrador: si compilo un
programa C llamado Fred Installer.exe Entonces Vista pediráed privilegio para
ejecutarlo, y decirle que se está ejecutando en Windows XP, mientras que si
llamo al programa simplemente Fred.exe se ejecutará como usuario y se le dirá
que se está ejecutando en Vista [797]. Determinar los privilegios de un
programa sobre la base de su nombre de archivo es Extrañore.
Y por último, hay serios problemas de usabilidad. Por ejemplo, la mayoría
de los usuarios ejecutarán cuentas de administrador que siguen ejecutando
todo el tiempo y se verán tentados a deshabilitar UAC; si no lo hacen, se
acostumbrarán a hacer clic en el cuadro de diálogo de la UAC que les pregunta
para siempre si realmente tenían la intención de hacer lo que acaban de
intentar. Por estas razones, UAC puede ser mucho menos eficaz en la práctica
de lo que podría ser en teoría [555]. Sin duda veremos a su debido tiempo.
Es interesante pensar en lo que los controles de acceso futuros podrían
soportar, por ejemplo, una aplicación de banca electrónica que estaría
protegida contra el malware que se ejecuta en la misma máquina. Microsoft
creó algunas ideas en el contexto de su proyecto "Trusted Computing", que
describiré a continuación en la sección 4.2.11, pero no llegaron a Vista.

4.2.8 Middleware
Hacer el control de acceso a nivel de archivos y programas estaba muy bien en
los primeros días de lacomputación, cuando estos eran los recursos que
importaban. Desde aproximadamente la década de 1980, la creciente escala y
complejidad ha significado que el control de acceso se haga en otros niveles en
lugar de (a veces así como) a nivel del sistema operativo. Por ejemplo, el
sistema de contabilidad de sucursales de un banco normalmente se ejecutará
encima de un producto de base de datos y la base de datos busca en el sistema
operativo como un archivo grande. Esto significa que el control de acceso debe
realizarse en la base de datos; todos los suministros del sistema operativo
puede ser un ID autenticado para cada usuario que inicia sesión.

4.2.8.1 Controles de acceso a bases de datos


Hasta el auge de las puntocom, la seguridad de la base de datos era en gran
medida una preocupación de la sala de back-room. Pero ahora es común que
las empresas tengan bases de datos críticas, que manejan el inventario, el envío
y el comercio electrónico, frente a servidores web que pasan acciones trans a
las bases de datos directamente. Estas bases de datos ahora contienen gran
parte de los datos de mayorrelevitación a nuestras vidas, como cuentas
bancarias, registros de vehículos y registros de empleo, y fallas de front-end a
veces exponen la propia base de datos a usuarios en línea aleatorios.
Los productos de base de datos, como Oracle, DB2 y MySQL, tienen sus
propios mecanismos de control de acceso. Comoelbase de datosse
veaeloperandosistemacomoasolo grandearchivo,ella
mayoríaeloperandosistemapuedehaceresaidentificarusuariosya
112 Capítulo 4 Control de
acceso
separe la base de datos de otras aplicaciones que se ejecutan en el mismo
equipo. Los controles de acceso a la base de datos se modelan en general en
mecanismos de sistema operativo, con privilegios normalmente disponibles
tanto para usuarios como para objetos (por lo que los mecanismos son una
combinación de listas de control deacceso y capacidades). Sin embargo, la
arquitectura típica de control de acceso a la base de datos es más compleja
incluso que Windows: Oracle 10g tiene 173 privilegios de sistema de los cuales
al menos seis se pueden utilizar para hacerse cargo del
sistemacompletamente[804].No haysonmás privilegios porque un producto
de base de datos moderno es muy complejo y algunas de las cosas que uno
quiere controlar implican niveles mucho más altos de abstracción que los
archivos o procesos. La otra cara es que a menos que los desarrolladores sepan
lo que están haciendo, es probable que dejen una puerta trasera abierta.
Algunos productos permiten a los desarrolladores omitir los controles del
sistema operativo. Por ejemplo, Oracle tiene cuentas de sistema operativo
(cuyos usuarios deben ser autenticados externamente por la plataforma) y
cuentas de base de datos (cuyos usuarios son au directamente por el software
Oracle). A menudo es más conveniente utilizar cuentas de base de datos, ya
que evita que el desarrollador sincronice su trabajo con los detalles de lo que
otros departamentos están haciendo. En muchas instalaciones, la base de
datos es accesible directamente desde el exterior; esto plantea todo tipo de
problemas, desde contraseñas predeterminadas hasta defectos en los
protocolos de red. Incluso cuando la basede datos está protegidadesde el
exterior por un front-end de servicio web, esto a menudo contiene lagunas que
permiten que el código SQL se inserte en la base de datos.
Los errores de seguridad de la base de datos también pueden causar
problemas directamente. El gusano Slammer en enero de 2003 se propagó
mediante un flujo de apilaren Microsoft SQL Server 2000 y creó grandes
cantidades de tráfico y las máquinas comprometidas enviaron un gran número
de paquetes de ataque a direcciones IP aleatorias.
Así como Windows es más complicado de configurar de forma segura,
porque es más complejo, por lo que la típica database sistema es aún más
complicado, y se necesita conocimiento especializado que está fuera del
alcance de este libro. La seguridad de las bases de datos es ahora una disciplina
por derecho propio; si tiene que bloquear un sistemade base de datos, o incluso
simplemente revisar uno como parte de una asignación másamplia, le
recomiendo encarecidamente que lea un texto especializado, como el [804] de
David Litchfield.

4.2.8.2 Problemas generales de Middleware


Hay una serie de aspectos comunes a la seguridad de middleware y controles
de nivel de
aplicación.Elprimeroesgranularidad:comoeloperandosistemaobrasconarchiv
os, estossonpor lo generalelmás
pequeñoobjetosconquesuaccesocontrolmecanismos
puedentrato.Elsegundoesestado.Unaccesoreglatalescomo'aenfermerapuedev
erelregistros decualquierpacienteensubarrio'o'atransacciónmás
de$100,000debeserautorizadas por un gestor y un contable se refiere tanto al
Estado de gestión: en el primer caso, la lista de derechos, como en el segundo
4.2 Operativo Sistema Acceso 113
la lista de transacciones que hasta ahoraControles
han sido autorizadas por un solo
director. El tercero es el nivel: podemos terminar con sistemas de control de
acceso separados en la máquina, la red y la aplicación
114 Capítulo 4 Control de
acceso
niveles, y como estos vienen típicamente de diferentes proveedores puede ser
difícil mantenerlos consistentes.
La facilidad de administración suele ser un cuello de botella crítico. En las
empresas que he aconsejado, la administración del sistema operativo y el
sistema de base de datos han sido realizadas por diferentes departamentos,
que no hablan entre sí; y a menudo la presión del usuario impulsa a los
departamentos de TI a poner en hacks crudos que hacen que los diversos
sistemas de control de acceso parecen funcionar como uno solo, pero que
abren agujeros serios. Un ejemplo es 'inicio de sesión único'. A pesar de los
mejores esfuerzos de los administradores de computadoras, la mayoríade las
grandes empresas acumulantallos de muchas arquitecturas diferentes, por lo
que los usuarios reciben más y más inicios de sesión para diferentes sistemas
y el costo de administrarlos aumenta.Muchosorganizacionesquieroadar a cada
empleado un solo inicio de sesión a todas las máquinas de la red. La solución
comercials puede implicar un único servidor de seguridad a través del cual
deben pasar todos los inicios desesión y el uso de una tarjeta inteligente para
realizar varios protocolos de autenticación para diferentes sistemas. Estas
soluciones son difíciles de diseñar correctamente, y la seguridad del mejor
sistema se puede reducir muy fácilmente a la de lo peor.

4.2.8.3 ORBs e Idiomas de Políticas


Estos problemas llevaron a los investigadores a buscar maneras en las que el
control de acceso para una serie de aplicaciones podría ser manejado por
middleware estándar. La investigación en la década de 1990 se centró en
corredores de solicitud de objetos (ORB). Un ORB es un componente de
software ese Media Communications Entre Objetos (un Objeto consiste en
código y datos agrupados,
++ una abstracción utilizada en lenguajes orientados a
objetos como C ). Un ORB normalmente proporciona un medio de control de
las llamadas que se realizan a través de dominios de protección. el Obj
comúnect Solicitar Arquitectura de Broker (CORBA) es un intento de un
estándar de la industria para sistemas orientados a objetos; un libro sobre la
seguridad de CORBA es [182]. Esta tecnología está empezando a adoptarse en
algunas industrias, como teletrabajos.
La investigación desde el año 2000 ha incluido el trabajo en idiomas para
expresar la seguridad, con proyectos como XACML (Sol), XrML (ISO) y
SecPAL (Microsoft). Siguieron los primeros trabajos en 'Policymaker' de Matt
Blaze y otros [188], y variaron en su expresividad. XrML se ocupa de temas y
objetos, pero no de relaciones, por lo que no puede expresar fácilmente un
concepto como 'Alice es el gerente de Bob'. XACML hace relaciones pero no
admite variables cuantificadas universalmente, por lo que no puede expresar
fácilmente que 'el tutor de un niño pueda firmar su tarjeta de informe' (que
podríamos querer programar como 'si x es un niño e y es el guardián de xy z es
la tarjeta de informe x's, entonces y puede firmar z). El interés inicial en estos
idiomas parece provenir de la industria militar y de
ladequetienenrelativamentesimpleestadoensuaccesocontrolpoli-cies. De
hecho, los ingenieros de DRM ya han desarrollado una serie de lenguajes
especializados de gestión de derechos que están integrados en productos como
Windows Media Player y pueden expresar conceptos como como 'El usuario X
puede reproducir este archivo como
4.2 Operativo Sistema Acceso 115
Controles
audio hasta finales de septiembre y puede grabarlo en un CD sólo una
vez.Eldrm interoperable puede crear una demanda de mecanismos más
generales que puedan adoptar y ampliar los productos que ya campo.
Si surge un lenguaje de políticas convenientemente expresivo y se adopta
como un lenguaje de scripting estándar además de las interfaces de control de
acceso que lasprincipales aplicaciones proporcionan a sus administradores,
podría proporcionar algún valor al permitir que las personas vinculen el acceso
controles cuando se construyen nuevos servicios sobre varios servicios
existentes. Tal vez haya dos advertencias. Enprimer lugar, las personas que
implementan el control de acceso al personalizar un paquete no es probable
que lo hagan como un trabajo detiempo completo, por lo que puede ser mejor
permitirles usar un lenguaje con el que estén familiarizados, en el que tendrán
menos probabilidades de cometer errores. En segundo lugar, lacomposición de
la uridad seces un problema difícil; es fácil llegar a ejemplos de sistemas que
están seguros de forma aislada, pero que se rompen horriblemente cuando se
unen. Veremos muchos ejemplos en la Parte II.
Por último, cuanto más alto en un sistema construimos los mecanismos de
protección, más complejos serán, más software confiarán, y cuanto más cerca
estén del ser humano de la marca 1, que los menos confiables probablemente
demuestren.PlataformaproveedorestalescomoMicrosofttienenmás
doctorados de seguridad, y más experiencia en diseño de seguridad, que casi
cualquier proveedor de aplicaciones; y un cliente que personaliza un paquete
de aplicación por lo general tiene menos experiencia todavía. Código escrito
por los usuarios es más probable que tenga defectos evidentes. Por ejemplo,
los accidentes fatales que ocurrieron en la atención médica como resultado del
error Y2K no fueron fallos en la plataforma, sino errores en hojas de cálculo
desarrolladas por médicos individuales, para hacer cosas como procesar los
resultados de las pruebas de laboratorio y calcular la radiología Dosis. Permitir
que los usuarios aleatorios escriban código crítico para la seguridad conlleva
los mismos riesgos que permitirles escribir código crítico para la seguridad.

4.2.9 Código de espacio aislado y de fabricación de


pruebas
A finales de la década de 1990 se aparilaba en otra forma de implementar el
control de acceso: el sandboxdesoftware. Esto fue introducido por Sun con su
lenguaje de programación Java. El modelo es que un usuario quiere ejecutar
algún código que ha descargado de la web como un applet, pero le preocupa
que el applet pueda hacer algo desagradable, como tomar una lista de todos
sus archivos y enviarlo por correo a una empresa de marketing de software.
Los diseñadores de Java abordaron este problema proporcionando un
"sandbox" para dicho código, un entorno restringido en el que no tiene acceso
a la disco duro local (o a lo sumo solo acceso temporal a un directorio
restringido) y solo se le permite comunicarse con el host del que procede. Estos
objetivos de seguridad se cumplen haciendo que el código sea ejecutado por
un intérprete , la Java Virtual Machine (JVM) — que sólo tiene derechos de
acceso limitados [539].Javaestambiénse utiliza en tarjetas inteligentes, pero
(al menos en las implementaciones actuales) la JVM es en efecto un
compiladorexternoaeltarjeta,queaumentoselproblemadecómoelcódigoquepro
ductos
116 Capítulo 4 Control de
acceso
se puede llegar a la tarjeta de unamanera oxidada. Otra aplicación está en el
nuevo formato Blu-ray para DVDs de alta definición; los jugadores tienen
máquinas virtuales que ejecutan código de administración de derechos
incluido con el disco. (Describo los mecanismos en detalle en la sección
22.2.6.2.)
Una alternativa es el código de prueba. Aquí, el código que se va a ejecutar
debe llevar consigo una prueba de que no hace nada que contravenga la política
de seguridad local. De esta manera, en lugarde utilizar un intérprete con la
penalización de velocidad resultante, uno simplemente tiene que confiar en un
programa sho rt que comprueba las pruebasproporcionadas por los programas
descargados antes de permitir que se ejecuten. La sobrecarga de una JVM no
es necesaria [956].
Ambos son alternativas menos generales a una arquitectura que soporta el
confineme de nivel de supervisor adecuadont.

4.2.10 Virtualización
Esto se refiere a los sistemas que permiten a una sola máquina emular un
número de máquinas de forma independiente. Fue inventado en la década de
1960 por IBM [336]; cuando las CPU eran muy caras, una sola máquina podía
ser particionada usando VM/370 en varias máquinas virtuales, de modo que
una empresa que compraba dos mainframes pudiera usar uno para su entorno
de producción y el otro como una serie de lógicamente separados máquinas
para desarrollo, pruebas y aplicaciones menores.
El paso a los PC vio la aparición de software de máquina virtual para esta
plataforma, con ofertas de varios proveedores, en particular VMware y (en
forma de código abierto) el proyecto Xen. La virtualización es muy atractiva
para la industria del hosting,ya que los clientes se pueden vender una parte de
una máquina en un centro de alojamientof o mucho menos que una máquina
entera. En los pocos años que los productos robustos han estado disponibles,
su uso se ha vuelto extremadamente extendido.
En el extremo del cliente, la virtualización permite a las personas ejecutar
un sistema operativo host encima de un invitado (por ejemplo, Windows
encima de Linux u OS/X) y esto ofrece no sólo flexibilidad, sino la perspectiva
de una mejor contención. Por ejemplo, un empleado podría tener dos copias
de Windows ejecutándose en su computadora portátil: una versión bloqueada
consu entorno deoficina y otra para su uso en casa. La separación puede ser de
alta calidad desde el punto de vista técnico; el problema habitual es operativo.
Las personas pueden sentir la necesidad de compartir datos entre las dos
máquinas virtuales y recurrir a mecanismos ad hoc, desde memorias USBa las
cuentas de correo web, que socavan la separación. Sin embargo, los
diseñadores de sistemas militares están muy interesados en la virtualización;
Hablo de sus usos en la sección 8.5.3.

4.2.11 Computación de confianza


La iniciativa 'Trusted Computing' fue puesta en marchapor Microsoft, Intel,
IBM, HP y Compaq para proporcionar un PC más
seguro.Sudeclaradoobjetivofueaproporcionar
4.2 Operativo Sistema Acceso 117
Controles
complementos de software y hardware a la arquitectura de PC que permitirían
a las personas estar seguras de que un programa determinado se ejecutaba en
una máquina con una especificación determinada; es decir, ese software no
había sido parcheado (ya sea por el usuario o por otro software) y wa s que se
ejecuta en un tipo identificable y la configuración de PC en lugar deen un
emulador. La motivación inicial era apoyar la gestión de los derechos digitales.
El problema era este: si Disney iba a descargar una copia de una película de
alta definición a Windows Media Player en su PC, ¿cómo podrían estar seguros
de que no era una versión hackeada, o ejecutar en una copia de ¿Ventanas que
se estaba ejecutando en la parte superior de Xen?Enen cualquier caso, la
película podría ser arrancado y terminar en el intercambio de
archivossistemas.
La propuesta de hardware era agregar un chip, el Módulo de plataforma de
confianza o TPM, que pudiera supervisar el PC en el momento del arranque e
informar de su estado al sistema operativo; las claves criptográficas estarían
disponibles en función de este estado. Por lo tanto, si se modifica una
plataforma(por ejemplo, cambiando la ROM de arranque o el controlador de
disco duro), se derivarían claves diferentes y no estaría disponible material
cifrado previamente. Un PC también podría utilizar su TPM para certificar a
otros PC que estaba en unconfiguración,
unprocesollamadoremotoatestación.Depor
supuesto,individualPCspodríaserhackeadode maneras menos detectables,
como instalar memoria de doble puerto o interferir con el bus desde el TPM a
la CPU, pero la idea era excluir-coste break-once-run-
anywhereataques.Entoncesotra vez,eloperandosistemavoluntad romper de
vez en cuando, y el reproductor multimedia; por lo que la idea era hacer que la
protección del contenido dependa de lo menos posible, y tener mecanismos de
revocación que obligarían a la gente a actualizar lejos de rotosoftware.
Por lo tanto, un proveedor de contenido digital might sólo sirven productos
premium a una máquina en una configuración aprobada.Además,basado en
datosaccesopolíticas de control podrían aplicarse. Un ejemplo de ello se
encuentra en los mecanismos de "Gestión de los derechos de la información"
introducidos con Office 2003; aquí, un archivo se puede marcar con controles
de acceso en un lenguaje de expresión de derechos que puede indicar, por
ejemplo, que sólo puede ser leído por ciertos usuarios nombrados y sólo
durante un cierto período de tiempo. Los documentos de procesamiento de
texto (así como las películas) podrían marcarse como 'view sólo tres veces'; un
narcotraficante podría hacer arreglos para que la hoja de cálculo con los envíos
de cocaína de noviembre sea ilegible después de diciembre, y así
sucesivamente.
Hay objeciones a los controles de acceso basados en datos basados en la
política de competencia, a la que volveré en la Parte
III.Paraahora,mipreocupacióneselmecanismos. El problema al que se
enfrentaba Microsoft era mantener la compatibilidad con el viejo mundo malo
donde miles de aplicaciones con errores e inseguras se ejecutan como
administrador, al tiempo que se crea la posibilidad de nuevos dominios access
a los que el antiguo código buggy no tiene Acceso. Uno de los propuestos
arquitectura, Palladium, fue presentado en
2002;esteprevistocorriendoelviejo,inseguro,softwareenparalelamente a lo
118 Capítulo 4 Control de
acceso
nuevo, más segurocomponentes.
4.3 Protección del 113
hardware
Además del sistema operativo normal, Windows tendría un 'Nexus', un
kernel de seguridad lo suficientemente pequeño como para ser verificado, que
hablaría directamente con el TPM hardware y monitorear lo que pasó en el
resto de la máquina;y cada aplicación tendría un programa de control de nexus
(NCP) que se ejecutaría en la parte superior del nexo en la máquina virtual
segura y administraría cosas críticas como claves criptográficas. Los NCP
tendrían acceso directo al hardware. De esta manera, un programa DRM como
unreproductor media podría mantener sus claves criptográficas en su NCP y
usarlas para enviar contenido a la pantalla y altavoces directamente, de modo
que el contenido de texto sin formato no podría ser robado por spyware.
En el momento de la escritura, las características de memoria con cortinas
no se utilizan en Vista;las presentaciones en los talleres de investigación de
Microsoft indicaron que obtener un control de acceso yuna virtualización
precisos para trabajar en las capas intermedias de un funcionamiento tan
complejo sistema ha resultado ser una tarea masiva. Mientras tanto, el TPM
está disponible para elalmacenamiento de claves raíz para utilidades como el
cifrado de discoduro; esto está disponible como 'BitLocker' en las versiones
más caras de Vista. Queda por ver si la visión más completa de Trusted
Computing puede hacerse funcionar; hay una creciente sensación en la
industria de que era demasiado difícil y, como también es políticamente tóxico,
es probable que sea abandonada silenciosamente. De todos modos, los TPM
nos llevan al problema más general de los mecanismos de protección de
hardware en los que se basan los controles de acceso.

4.3 Protección del hardware


La mayoría de los sistemas de control de acceso se establecen no sólo para
controlar lo que los usuarios pueden hacer, sino para limitar lo que los
programas pueden hacer también. En la mayoría de los sistemas, los usuarios
pueden escribir programas o descargarlos e instalarlos. Así que los programas
pueden ser buggy o incluso maliciosos.
La prevención de un proceso de interferencia con otro es el prob- lem de
protección. El problema del confinamiento se define generalmente como el de
evitar que los programas se comuniquen hacia afuera que no sean a través de
canales autorizados. Hay varios sabores de cada uno. El objetivo puede ser
evitar interferencias activas, como la sobrescritura de memoria, o detener un
proceso leyendo la memoria de otro directamente. Esto es lo que los sistemas
operativos comerciales se propuso hacer. Los sistemas militares también
pueden tratar de proteger los metadatos (los datos apartirotros datos, sujetos
o procesos) para que, por ejemplo, un usuario no pueda averiguar qué otros
usuarios han iniciado sesión en el sistema o qué procesos están ejecutando. En
algunas aplicaciones, como el procesamiento de datos censales, el
confinamiento significa permitir que un programo lea los datos, pero no nada
al respecto que no sean los resultados de ciertas consultas restringidas.
A menos que se utilicen técnicas de espacio aislado (que son demasiado
restrictivas para los entornos de programación generales), resolver el
problema de confinamiento en un solo procesador significa, al menos, tener
un mecanismo que detenga a
114 Capítulo 4 Control de
acceso
programa de sobrescribir el código o los datos de otra persona. Puede haber
áreas de memoria que se comparten para permitir la comunicación entre
procesos; pero los programas deben estar protegidos contra modificaciones
accidentales o deliberadas, y deben tener acceso a la memoria que está
igualmente protegida.
Esto normalmente significa que el control de acceso al hardware debe
integrarse con las funciones de administración de memoria del procesador. Un
mecanismo típico es el direccionamiento de segmentos. La memoria se aborda
mediante dos registros,un registro de segmento que apunta a un segmento de
memoria y otro registro de direcciones que apunta a una ubicación dentro de
esesegmento. Los registros de segmentos son controlados por el sistema
operativo, y a menudo por un componente especial del mismo llamado
monitor de referencia que vincula los mecanismos de control de acceso con el
hardware.
La implementación real se ha vuelto más compleja como lo han hecho los
propios procesadores.
TempranoIBMmainframeshabíaadosestadoCPU:elmáquina estaba en estado
autorizado o wcomo no. En este último caso, el programa se limitó a un
segmento de memoria asignado por el sistema operativo. En el primero, podría
alterar los registros de segmentos a voluntad. Un programa autorizado era uno
que se cargaba desde una biblioteca autorizada.
Cualquier directiva de control de acceso deseada se puede implementar
además de esto, dadas las bibliotecas autorizadas adecuadas, pero esto no
siempre es eficaz; y la seguridad del sistema depende de mantener el código
incorrecto (ya sea malicioso o con errores) fuera de las bibliotecas autorizadas.
Así que los procesadores posteriores ofrecían mecanismos de hardware más
complejos.Multics,unoperandosistemadesarrolladoenMITenelAños 1960y
que inspiró el desarrollo de Unix, introdujoanillos de protecciónque expresan
diferentes niveles de privilegio: anillo 0 programas h acceso completo del
anuncio al disco, los estados del supervisor corrió en el timbre 2, y el código de
usuario en varios niveles menos privilegiados [1139]. Sus características se han
adoptado hasta cierto punto en procesadores más recientes, como la línea de
procesadores principales Intel del 80286 en adelante.
Hay una serie de problemas generales con la interconexión de mecanismos
de seguridad de hardware y software. Por ejemplo, a menudo ocurre que un
proceso con menos privilegios, como el código de aplicación, debe invocar un
proceso con más privilegios, como un dispositivo driver. Los mecanismos para
hacer esto deben diseñarse con cierto cuidado, o se pueden esperar errores de
seguridad. El sistema operativo de mainframe DE IBM MVS, por ejemplo,
tenía un error en el que un programa que ejecutaba una tarea normal y una
tarea autorizada simultáneamente hacerque el primero también esté
autorizado [774]. Además, el rendimiento puede depender drásticamente de si
las rutinas en diferentes niveles de privilegios se llaman por referencia o por
valor [1139].

4.3.1 Procesadores Intel y 'Computación de confianza'


Los primeros procesadores Intel, como el 8088/8086 utilizado en los
primeros PC, no tenían distinción entre el sistema y el modo de usuario, y por
lo tanto no había protección en absoluto — cualquier programa en ejecución
4.3 Protección del 115
controlaba toda la máquina.El80286añadidoprotegido hardware
116 Capítulo 4 Control de
acceso
segmento y anillos, por lo que por primera vez podría ejecutar sistemas
operativos adecuados. El 80386 había incorporado memoria virtual y
segmentos de memoria lo suficientemente grandes (4 Gb) que podían ser
ignorados y la máquina tratada como una máquina de direcciones planas de
32 bits. Los chips de las series 486 y Pentium añadieronrendimiento más
alto(cachés, ejecución sin orden y MMX).
Los anillos de protección están respaldados por una serie de mecanismos.
El nivel de privilegio actual sólo se puede cambiar mediante un proceso en el
anillo 0 (el núcleo). Los procedimientos no pueden acceder a objetos en anillos
de nivel inferior directamente, pero hay puertas que permitenla ejecución o f
código en un nivel deprivilegios diferente y que administran la infraestructura
de soporte, como varios segmentos de pila para diferentes niveles de
privilegios y control de excepciones. Para obtener más información, consulte
[646].
El Pentium 3 finalmente agregó una nueva función de seguridad: un número
de serie del procesador. Esto causó una tormenta de protesta porque los
defensores de la privacidad temían que pudiera ser utilizado para todo tipo de
propósitos de "hermano mayor", que pueden haber sido irracionales ya que las
computadoras tienen todo tipo denúmeros en ellos que el software puede
utilizar to decir en qué máquina se está ejecutando (ejemplos van desde
direcciones MAC a los números de
seriededurodiscocontroladores).Eneltiempoel número de serie fue lanzado,
Intel había planeado introducir soporte criptográfico en el Pentium para 2000
con el fin de DRM de upport. Su pensamiento era que a medida que obtenían
el 90% de sus ganancias de los microprocesadores de PC, donde tenían el 90%
del mercado, sólo podían hacer crecer su negocio expandiendo el mercado de
PCs;yya queelnegociomercadofuesaturado,quesignificabaventas a hogares
donde, se pensaba, DRM sería unrequisito.
De todos modos, la protesta contra el número de serie de Pentium llevó a
Intel a establecer una alianza de la industria, ahora llamada Trusted
Computing Group, para introducir la criptografía en la plataforma de PC por
medio de un procesador independiente, el Módulo de plataforma segura
(TPM), que es un chip de tarjeta inteligente montado en la placa base del PC.
El TPM funciona junto con las funciones de memoria con cortinas
introducidas en Pentium para permitir a los proveedoresde sistemas
operativos crear espacios memory aislados entre sí, e incluso contra un
proceso en un espacio de memoria que se ejecuta con privilegios de
administrador. Los mecanismos propuestos por Microsoft se describen
anteriormente y no se han puesto a disposición en las versiones comerciales
de Windows en el momento de la escritura.
Una característica de hardware de Intel que se ha implementado y utilizado
es la compatibilidad con la virtualización x86, conocida como Intel VT (o su
nombre de desarrollo, Vanderpool). AMD tiene una oferta equivalente. Las
arquitecturas de procesador es como S/370 y M68000 son fáciles de
virtualizar, y los requisitos teóricos para ello se conocen durante muchos años
[1033]. El conjunto de instrucciones nativo de Intel, sin embargo, tenía
instrucciones que eran difíciles de virtualizar, lo que requería soluciones
alternativas desordenadas, como parches alos sistemas de clasificación ope
alojados. Los procesadores con estas extensiones pueden utilizar productos
4.3 Protección del 117
como Xen para ejecutar copias no modificadas dehardware
los sistemas operativos
invitados.(Parece, sin embargo, que si la Informática de Confianza
118 Capítulo 4 Control de
acceso
mecanismos se implementan alguna vez, será complejo hacerlos trabajar junto
con la virtualización.)

4.3.2 Procesadores ARM


El ARM es el núcleo de procesador de 32 bits con mayor licencia para
proveedores externos de sistemas
embebidos;cientosdemillonessonutilizadoenmóvilteléfonos y otros
dispositivos electrónicos de consumo. El ARM original (que significaba Acorn
Risc Machine)fue el primer diseño comercial de RISC. Los chips ARM también
se utilizan en muchos productos de seguridad, desde los chips Capstone
utilizados por el gobierno de los Estados Unidos para protect datos secretos, a
las placas aceleradoras de cripto de empresas como nCipher que hacen
criptografía para grandes sitios web. Una instrucción rápida de multiplicar y
acumular y un bajo consumo de energía hicieron que el ARM sea muy atractivo
para aplicaciones integradas que realizan procesamientode señales
ycriptografía. La referencia estándar es [508].
El ARM tiene licencia como núcleo de procesador, que los diseñadores de
chips pueden incluir en sus productos, además de una serie de complementos
opcionales. El núcleo básico contiene bancos separados de registros para los
procesos del usuario y del sistema, además de un mecanismo de interrupción
de software que pone al procesador en modo supervisor y transfiere el control
a un proceso en una dirección fija. El núcleo no contiene administración de
memoria, por lo que los diseños basados en ARM pueden tener su
protecciónde hardware ampliamenteustomizada. Un coprocesador de control
del sistema está disponible para ayudar con esto. Puede admitir dominios de
procesos que tienen derechos de acceso similares (y, por lo tanto, comparten
las mismas tablas de traducción) pero que conservan cierta protección entre
sí. Esto daconmutación rápida decontex t. Los chips de CPU ARM estándar del
producto, a partir del modelo 600 en adelante, tienen este soporte de memoria
incorporado.
Hay una versión, el amuleto, que utiliza lógica autooportuna. La eliminación
de la potencia ahorrada del reloj y reduce la interferencia de RF, pero hizo
necesariointroducir características de protección de hardware, como el
bloqueo de registro, en el procesador principal para que se pudiera gestionar
la contención entre diferentes procesos de hardware. Este es un ejemplo
interesante de técnicas de protección típicas de un sistema operativo que se
recicla en el diseño de procesadores de línea principal.

4.3.3 Procesadores de seguridad


Los procesadores de seguridad especializados van desde los chips en las
tarjetas inteligentes, a través de las caderas de TPM c ahorafijadas a la mayoría
de las placas base de PC (que son básicamente chips de tarjeta inteligente con
interfaces paralelas) y placas aceleradoras criptográficas, a dispositivos
criptográficos especializados.
Muchas de las tarjetas inteligentes de menor costo todavía tienen
procesadores de 8 bits.Algunosde tienen rutinas de administración de
memoria que permiten leer ciertas direcciones solo cuando las contraseñas se
introducen en un registro en las instrucciones anteriores. El objetivo era que
4.3 Protección del 119
hardware
los diversos directores con una participación en la tarjeta - tal vez
4.4 Lo que va mal 117

un fabricante de tarjetas, un OEM, una red y un banco, todos pueden tener sus
secretos en la tarjeta y, sin embargo, estar protegidos entre
sí.Estepuedeseracuestión de software; pero algunas tarjetas tienen matrices de
control de acceso pequeñas y cableadas para hacer cumplir esteprotección.
Muchos de los dispositivos de cifrado utilizados en la banca para manejar
los PIN de ATM tienen una capa adicional de control de acceso a nivel de
aplicación en forma de"estado autorizado" que debe establecerse (mediante
dos contraseñas de consola o una clave física) cuando se van a imprimir los
PIN. Esto recuerda a los antiguos mainframes de IBM, pero se utiliza para el
control manual en lugar de programático: permite un cambio supervisor para
asegurarse de que está presente cuando se ejecuta este trabajo. Dispositivos
similares son utilizados por los militares para distribuir las llaves. Discutiré los
criptoprocesadores con más detalle en el Capítulo 16.

4.4 Lo que va mal


Los sistemas operativos populares como Unix / Linux y Windows son muy
grandes y complejos, por lo que tienen muchos errores. Se utilizan en una
amplia gama de sistemas, por lo que sus características son probadas
diariamente por millones de usuarios en circunstancias muy diversas. Por lo
tanto, muchos errores se encuentran y se informan. Gracias a la net,
elconocimiento se extiende ampliamente y rápidamente. Por lo tanto, en
cualquier momento, puede haber docenas de defectos de seguridad que se
conocen, y para los cuales los scripts de ataque están circulando en la red. Una
vulnerabilidad tiene un ciclo de vida típico mediante el que se descubre;
reportado a CERT o al proveedor; se envía un parche; el parche es de ingeniería
inversa, y se produce un exploit para la vulnerabilidad; y las personas que no
aplicaron el parche a tiempo encuentran que sus máquinas han sido reclutadas
a una botnet cuando su ISP corta ellos de fo el envío despam. Hay una variante
en la que la vulnerabilidad se explota a la vez en lugar de informar, a menudo
llamada un exploit de día cero como los ataques ocurren desde el día cero de
la existencia conocida de la vulnerabilidad. La economía, y la ecología, delciclo
de vida de lavuln erabilidad son objeto de un estudio intensivo por parte de
economistas de seguridad; Discutiré sus hallazgos en la Parte III.
El objetivo tradicional de un atacante era obtener una cuenta normal en el
sistema y luego convertirse en el sistema administrador, por lo que podría
hacerse cargo del sistema por
completo.Elprimeropasopodríatienenimplicadosadivinando,osocial-
ingeniería, una contraseña, y luego el uso de uno de los muchos errores
conocidos del sistema operativo que permiten el transitide usuario a root. Una
taxonomía de tales defectos técnicos fue compilada en 1993 por Carl Landwehr
[774]. Se trata de fallos en la implementación técnica, de los cuales voy a dar
ejemplos en las dos secciones siguientes, y también en el diseño de nivel
superior; por ejemplo, la interfaz de usuario podría inducir a las personas a
administrar incorrectamente los derechos de acceso o hacer otras cosas
estúpidas que hacen que se omita el control de acceso. Voy a dar algunos
ejemplos en la sección 4.4.3 a continuación.
118 Capítulo 4 Control de
acceso
La distinción usuario/raíz se ha vuelto menos importante en los últimos
años por dos razones. En primer lugar, los equipos Windows han
predominado, ejecutando aplicaciones que insisten en ejecutarse como
administrador, por lo que cualquier aplicación que pueda verse comprometida
proporciona acceso de administrador. En segundo lugar, los atacantes han
llegado a centrarse en comprometer un gran número de PC, que pueden
organizar en una red de bots con el fin de enviar spam o phish y así ganar
dinero. Incluso si el cliente de correo no se estuviera ejecutando como
administrador, seguiría siendo útil para un spammer que pudiera
controlarlo.Sin embargo,botnetpastorestiendenainsaltorootkitsque, como su
nombre indica, se ejecutan como root; y la distinción usuario/raíz sigue siendo
importante en entornos empresariales, donde no desea que un servidor web
comprometido o una aplicación de base de datos exponga también las otras
aplicaciones. Tal vez si un gran número de usuarios ordinarios comienzan a
ejecutar Vista con el Control de cuentas de usuario habilitado, hará que la vida
de los pastores de botnets sea un poco más difícil. Al menos podemos esperar.
En cualquier caso, los tipos básicos de ataque técnico no han cambiado
enormemente desde principios de la década de 1990 y ahora los consideraré
brevemente.

4.4.1 Smashing the Stack


Aproximadamente la mitad de los ataques técnicos a los sistemas operativos
que se informan en los boletines del Equipo de Respuesta a Emergencias
Informáticas (CERT) y las listas de correo de seguridad implican ataques de
sobreescritura de memoria, conocidos coloquialmente como la
pila'.Elproporciónfueinclusomás altoeneltardeAños 1990ytempranoAños
2000peroahora está cayendolentamente.
La idea básica detrás del ataque depilación es que los programadores a
menudo son descuidados en comprobar el tamaño de los argumentos, por lo
que un atacante quepasa un argumento largo a un programa puede encontrar
que parte de él se trata como código en lugar de datos. Un ejemplo clásico era
una vulnerabilidad en el comando de dedo Unix. Una implementación
generalizada de esto aceptaría un argumento de cualquier longitud,
aunquesólo el programahabía asignado 256 bytes para este
argumento.Cuandounatacanteutilizadoelcomandoconamás
tiempoargumento, los bytes finales de la discusión terminó siendo ejecutado
por elsistema.
La técnica habitual consiste en organizar que los bytes trailing del
argumento tengan una plataforma de aterrizaje— un largo espacio de
comandos sin operación (NOP) u otros comandos de registro que no cambien
el flujo de control, y cuya tarea es atrapar el procesador si ejecuta cualquiera
de ellos. La plataformade aterrizaje entrega el processor al código de ataque
que hará algo como crear una cuenta raíz sin contraseña, o iniciar un shell con
privilegios administrativos directamente (consulte la figura 4.6).
Muchas de las vulnerabilidades reportadas rutinariamente por CERT y
bugtraq son variantes en este tema. Escribí en la primera edición de este libro,
en 2001, 'No hay excusa para que el problema continúe, como ha sido bien
conocido por una generación'. Sin embargo, esun problema.
4.4 Lo que va mal 119

de de
Figura 4.6: Ataque aplastante de pila

La mayor parte de los sistemas de tiempo compartido de principios de


1960 lo sufrían, y lo arreglaron [549]. Los esfuerzos de análisis de
penetración en la Corporación de Desarrollo del Sistema a principios de los
años 70 mostraron que el problema de los "parámetros inesperados" seguía
siendo uno de los ataques más utilizados estrategias [799]. El proceso 80286
de Intel introdujo instrucciones explícitas de comprobación de parámetros —
verificar la lectura, verificar la escritura y verificar la longitud —
en1982,peroquefueronevitadoporla
mayoríasoftwarediseñadoresaprevenirarquitecturadependencias.En1988,gra
ndesnúmerosdeUnixcomputadorasfuerontrajohacia
abajosimultáneamenteporel'Internetgusano',que utilizó eldedovulnerabilidad
descrita anteriormente, y por lo tanto trajo mem-ory sobrescribir ataques a la
notificación de los medios de comunicación [1206]. Un artículo de 1998
describió los ataques de sobreescritura de memoria como el "ataque de la
década" [329].Sin embargo, los programadores todavía no comprueban el
tamaño deargumentos, y agujerosmantenerenque se encuentran. El ataque ni
siquiera se limita a los sistemas informáticos en red: al menos una tarjeta
inteligente podría ser derrotada por pasarlaamensajemás tiempoquesu
programador había anticipado.

4.4.2 Otros ataques técnicos


En 2002, Microsoft anunció una iniciativa de seguridad que implicaba que
cada pro- grammer estuviera capacitado en cómo escribir código seguro. (El
libro que produjeron para esto, 'Writing Secure Code' de Michael Howard y
David LeBlanc, es bueno; Se lo recomiendo a mi students [627].) Otras
empresas tecnológicas han puesto en marcha programas de formación
similares. A pesar de la formación y las herramientas, los ataques de
sobreescritura de memoria siguen apareciendo, para gran frustración de los
gerentes de la compañía de software. Sin embargo, son quizás la mitad de
todas las nuevas vulnerabilidades ahora en lugar del 90% que eran en 2001.
Las otras vulnerabilidades nuevas son principalmente variaciones en el
mismo tema general, en que se producen cuando los datos en la gramática A
se interpretacomo estar en la gramática B. Un desbordamiento de pila es
cuando los datos se acumulancomo entrada (por ejemplo, una dirección URL)
120 Capítulo 4 Control de
acceso
y terminan siendo ejecutados como código de máquina. Son esencialmente
fallas de seguridad de tipo.
Una vulnerabilidad de cadena de formato surge cuando una máquina
acepta datos de entrada como una instrucción de formato (por ejemplo, %n en
C command printf()). Estos suelen surgir cuando un programador intenta
imprimir datos proporcionados por el usuario y descuidadamente permite que
el comando de impresión interprete las instrucciones de formato en la cadena;
esto puede permitir que el autor de la cadena escriba en la pila. Hay hombrey
otras variantes en el tema; los desbordamientos de búfer pueden ser inducidos
por terminación de cadena incorrecta, pasando un búfer de tamaño
inadecuado a una función de manipulación de ruta de acceso, y muchos otros
errores sutiles. Véase el libro de Gary McGraw 'Software Security' [858] para
una taxonomía.
Los ataques de inserción de SQL suelen surgir cuando un
desarrollador web descuidado pasa la entrada del usuario a una
base de datos back-end sin comprobar si contiene código SQL. El juego a
menudo se regala por mensajesde error, de los cuales un u ser capaz y
motivado puedeinferir lo suficiente para montar un ataque. (De hecho, una
encuesta de sitios web de empresas en 2006 mostró que más del 10% eran
potencialmente vulnerables [1234].) Hay problemas similares de inyección de
comandos que afligen a otros lenguajes utilizados por los desarrolladores web,
como PHP y perl. El remedio en general es tratar todas las entradas del usuario
como sospechosas y validarla.
Comprobar el tamaño de los datos está muy bien cuando se obtiene el
cálculo del tamaño del búfer correcto, pero cuando se comete un error , por
ejemplo, si no se tiene en cuenta todos los cases de borde , puede terminar con
otro tipo de ataque llamado un ataque de manipulación de enteros . Aquí,
un desbordamiento, subdesbordamiento, envolvente o truncamiento puede
dar lugar a que el código de "seguridad" escriba un número inapropiado de
bytes en la pila.
Una vez que se tratan estos tipos de seguridad y unttacks, las condiciones de
la carrera son probablemente las
siguientes.Estosocurrircuandoatransacciónesllevadohacia
fueraendosomásetapas, y es posible que alguien lo altere después de la etapa
que implica verificar los derechos de acceso. Mencioné en el capítulo 2 cómo
una condición de carrera puede permitir a los usuarios iniciar sesión como
otros usuarios si el ID de usuario se puede sobrescribir mientras la validación
de contraseña está en curso. Otro ejemplo clásico surgió en el comando Unix
para crear un directorio, 'mkdir', que solía trabajar en dos pasos: seasignó el
storage, y luego la propiedad se transfirió al usuario. Puesto que estos pasos
eran separados, un usuario podría iniciar un 'mkdir' en segundo plano, y si esto
completó sólo el primer paso antes de ser suspendido, un segundo proceso
podría ser utilizado para replace el directorio recién creado con un enlace a el
archivo de contraseña. A continuación, el proceso original se reanudaría y
cambiaría la propiedad del archivo de contraseña al usuario. El directorio /tmp,
utilizado para archivos temporales, a menudo se puede abusar de esta manera;
el truco es w aithasta que una aplicación dirigida por un usuario conprivilegios
escribe un archivo aquí, luego cambiarlo a un enlace simbólico a otro archivo
en otro lugar — que se eliminará cuando la aplicación del usuario con
4.4 Lo que va mal 121
privilegios intente eliminar el archivo temporal.
122 Capítulo 4 Control de
acceso
Una amplia variedad de otros errores han permitido a los usuarios asumir
el estado raíz y tomar el control del sistema. Por ejemplo, el sistema operativo
PDP-10 TENEX tenía el error de que la dirección del programa podía
desbordarse en el siguiente bit de la palabra de estado de proceso que era el bit
de modo de privilegio; esto significaba que un desbordamiento de programa
podría poner un desbordamiento de programaprograma en el estado del
supervisor.Enotropor ejemplo, algunas implementaciones de Unix tenían la
característica de que si un usuario intentaba ejecutar el comando sucuando el
número máximo de archivos estaban abiertos,essuno
pudoaabiertoelcontraseñaarchivoyrespondiópordandoelusuarioraízestado.
En sistemas más modernos, los problemas de usuario a raíz más intratables
tienden a ser interacciones de características. Por ejemplo, hemos tenido
problemas con los sistemas de copia de seguridad y recuperación.
Esconvenientesiquepuededejar queusuariosrecuperarsupropioarchivos,más
bienque tener que llamar a un administrador del sistema, pero ¿cómo proteger
los activos de información de un viajero del tiempo, especialmente si el sistema
de recuperación le permite componer partes de nombres de ruta para obtener
acceso a directorios que siempre estaban cerrados a él? ¿Y qué pasa si la
funcionalidad de rebasamiento está enterrada en una aplicación a la que
necesita acceso para hacer su trabajo, y cun ser manipulado para dar acceso
root?
También ha habido muchos errores que permitieron ataques de denegación
de servicio. Por ejemplo, Multics tenía un límite global en el número de
archivos que podrían estar abiertos a la vez, pero sin límites locales.Así
queausuariopodríaescapeestelímiteycerraduraelsistema por lo
quequenoinclusoeladministradorpodríaregistroen[774].Yhasta
queeltarde1990, la mayoría de las implementaciones de los protocolos de
Internet asignaron una cantidad fija de espacio de búfer para procesar los
paquetes SYN con los que las conexiones TCP/IP soniniciado. El resultado
fueron los ataques de inundación SYN:mediante el envío deun gran número
de paquetes SYN, un atacante podría agotar el espacio de búfer disponible y
evitar que la máquina acepte cualquier nuevo
conexiones.Esteesahorafijoutilizandosincookies, que discutiré en la ParteII.
La familia más recientemente descubierta de ataques de este tipo están en
los contenedoresde llamadas delsistema. Se trata de productos de software que
modifican el comportamiento del software interceptando las llamadas del
sistema que realiza y realizando algún filtrado omanipulación. Algunos
productos de envoltura realizan virtualización; otros proporcionan
extensiones de secu- rity a los sistemas operativos. Sin embargo, Robert
Watson ha descubierto que estos productos pueden tener erroresde
sincronización y condiciones de carrera que permiten a un atacante
convertirse en root [1325]. (Los describiré con más detalle en la sección 18.3.)
La proliferación de mecanismos de simultaneidad en todas partes, con
máquinas multiprocesador de repente convirtiéndose en la norma despuésde
muchos años en los que fueron una curiosidad de investigación, puede
conducir a la carrera conditions ser la próxima gran familia de ataques.

4.4.3 Errores en la interfaz de usuario


Uno de los primeros ataques a idear fue el Caballo de Troya,un programa que
4.4 Lo que va mal 123
el administrador está invitado a ejecutar y que hará algún daño si lo hace. La
gente escribía juegos conhich comprobaba de vez en cuando si el jugador
124 Capítulo 4 Control de
acceso
era el administrador del sistema, y si es así crearía otra cuenta de
administrador con una contraseña conocida.
Otro truco es escribir un programa que tenga el mismo nombre que un utili
ty de sistema de usocomún, como el comando ls que enumera todos los
archivos en un directorio Unix, y diseñarlo para abusar del privilegio de
administrador (si existe) antes de invocar el utilidad genuina. El siguiente paso
es quejarse al administrador de que algo está mal con este directory. Cuando
el administrador entra en el directorio y escribe ls para ver lo que hay allí, se
hace el daño. La corrección es simple: la variable 'PATH' de un administrador
(la lista de directorios que se buscará para un programa con el nombre
adecuado cuando se invoca un comando) no debe contener '.' (el símbolo del
directorio actual). Las versiones recientes de Unix se envían con esto como
valor predeterminado; pero sigue siendo una trampa innecesaria para los
incauts.
Tal vez el ejemplo más grave de fallo de la interfaz de usuario, en términos
del número de sistemas en riesgo, está en Windows. Me refiero al hecho de
que, hasta que llegó Vista, un usuario necesitaba ser el administrador del
sistema para instalar cualquier cosa2. En teoría, esto podría haber ayudado a
un banco a impedir que su personal de sucursal ejecutara juegos en sus PC a
la hora del almuerzo y recogiera virus. Pero la mayoría de los entornos están
mucho menos controlados, y muchas personas necesitan ser capacesde
instalar software para hacer eltrabajo ir. Así que millones de personas tienen
privilegios de administrador que no deberían necesitarlos, y son vulnerables a
ataques en los que el código malicioso simplemente abre una caja diciéndoles
que hagan algo. Gracias a Dios Vista se está alejando de esto, pero UAC no
proporciona ninguna protección donde las aplicaciones como los servidores
web deben ejecutarse como root, son visibles para el mundo exterior y
contienen errores de software que permiten que se apoderen de ellos.
Otro ejemplo, que podría argumentarse es un error de interfaz, proviene del
uso de contenido activo de varios tipos. Esto puede ser una amenaza porque
los usuarios no tienen una manera intuitivamente clara de
controlarlos.Javascripty ActiveX en páginas web, macros en documentos de
Office y ejecutables en archivos adjuntos de correo electrónico se han utilizado
para launch ataques graves. Incluso Java, por toda su supuesta seguridad, ha
sufrido una serie de ataques que explotaron implementaciones descuidadas
[360]. Sin embargo, muchas personas (y muchas empresas) no están
dispuestas a renunciar a las campanas y silbatos queel contenido activo
puedebuscar rovide, y vimos en el capítulo 2 cómo la gente de marketing por
lo general vencer a la gente de seguridad (incluso en aplicaciones como la
banca).

4.4.4 Por qué tantas cosas van mal


Ya hemos mencionado el problema básico al que se enfrentan los diseñadores
de seguridad del sistema operativo: sus productos son enormesy por lo tanto
buggy, y son probados por grandes

2En teoría, un miembro del Grupo de Usuarios Avanzados en XP podría, pero eso hizo poca diferencia.
4.4 Lo que va mal 125

número de usuarios en paralelo, algunos de los cuales harán público sus


descubrimientos en lugar de reportarlos al proveedor. Incluso si todos los
errores se informaran responsablemente, esto no haría mucha diferencia; casi
todas las vulnerabilidades ampliamente explotadas en los últimos años ya
habían sido parcheadas. (De hecho, el 'Patch Tuesday' de Microsoft cada
moenésimo es seguido por 'Explotar miércoles' como los escritores de malware
revertir las nuevas vulnerabilidades y atacarlos antes de que todo el mundo los
parcheó.)
También hay otros problemas estructurales. Una de las causas más graves
de falla es la hinchazón del kernel. En Unix,los controladores de dispositivo s,
los sistemas dearchivos, etc. deben estar en el kernel. Hasta Vista, el kernel de
Windows solía contener controladores para un gran número de tarjetas
inteligentes, lectores de tarjetas y similares, muchos de los cuales fueron
escritos por los proveedores de equipos. Así que grandes cantidades de código
eran de confianza, en que se colocan dentro del perímetro de
seguridad.Algunosotrossistemas,talescomo MVS, introdujeron mecanismos
que disminuyen el nivel de confianza quemuchos servicios públicos.Sin
embargo,elsignificaahaceresteenella mayoríacomúnoperandosistemas son
pocos y relativamenteno estándar.
Aún más en serio, la mayoría de los desarrolladores de aplicaciones hacen
que sus programas se ejecuten como root. Las razones de esto son económicas
más que técnicas, y son lo suficientemente fáciles de entender. Una empresa
que intenta aumentar la cuota de mercado de una plataforma, como un sistema
operativo, debe desarrolladores de aplicaciones, así como a sus usuarios. Es
más fácil para los desarrolladores si los programas se pueden ejecutar como
root, por lo que los primeros productos de Windows permitieron eso. Una vez
que la vendo tiene una posicióndominante, la lógica de negocios es aumentar
la seguridad, y también personalizarla para bloquear tanto a los
desarrolladores de aplicaciones como a los usuarios con mayor fuerza. Esto
está sucediendo ahora con Windows Vista a medida que los mecanismos de
control de acceso se vuelven cada vez más complejos, y diferentes de Linux y
OS/X.Asimilarespatrón,otambiénpocoseguridadeneltempranoetapasde un
ciclo de vida de la plataforma y demasiado (del tipo equivocado) más tarde, se
ha observado en otras plataformas desde mainframes hastateléfonos.
Hacer que muchas aplicaciones y utilidades se ejecuten como root ha
introducido repetidamente vulnerabilidades horribles en las que se podrían
haber utilizado privilegios más limitados con sólo un mínimo de pensamiento
y un pequeño rediseño. Hay muchos sistemas como lpr/lpd , el subsistema de
impresora de línea Unix, que no necesita ejecutarse como root, pero de todos
modos lo hace en la mayoría de los sistemas. Esto también ha sido una fuente
de errores de seguridad en el pasado (por ejemplo, conseguir que la impresora
se ajuste al archivo de contraseña).
Algunas aplicaciones necesitan una cierta cantidad de privilegios. Por
ejemplo, los agentes de entrega de correo deben poder tratar con buzones de
usuario. Pero mientras que un diseñador prudente restringiría este privilegio
a una pequeña parte de la aplicación, la mayoría de los agentes se escriben para
que todo el programa debe ejecutarse como raíz. Elejemplo clásico es
sendmail,que tiene una larga historia deagujeros de seguridad graves; pero
muchos otros MTA también tienen problemas. El efecto general es que un
126 Capítulo 4 Control de
acceso
error que
4.4 Lo que va mal 127

debe comprometer sólo el correo de una persona puede terminar dando


privilegios de raíz a un atacante externo.
Así que vamos a tener algunos momentos interesantes a medida que los
desarrolladores se acercan a
UAC.Elprecedentessonnotodosalentador.Algunosprogramadoreshistori- cally
evitó la dificultad de instalar software no root y trabajar de forma segura
simplemente dejando importantes estructuras de datos compartidos y
recursos accesibles para todos los usuarios. Muchos sistemas antiguos
almacenaban correo en un archivo por usuario en undirectorio de escritura
mundial, lo que facilita la falsificación decorreo. El archivo Unix utmp — la lista
de usuarios que han iniciado sesión — se utilizaba con frecuencia para la
comprobación de seguridad de varios tipos, pero también es frecuentemente
mundialmente grabable! Esto debería habersido construido como un servicio
en lugar de un archivo, pero solucionar problemas como estos una vez que se
han tomado las decisiones de diseño iniciales puede ser difícil. Espero ver
todos los viejos problemas de los sistemas multiusuario de la década de 1970
volver de nuevo, como el complejo de utilizar el Vista mecanismos
correctamente sólo derrota a muchos programadores que no son especialistas
en seguridad y sólo están desparados para conseguir algo de trabajo para que
puedan terminar la asignación, recoger su bono y seguir adelante.

4.4.5 Remedios
Algunas clases de vulnerabilidad se pueden corregir utilizando herramientas
automáticas. Stack over - los ataques deescritura, por ejemplo, se deben en
gran medida a la falta de la comprobación de límites adecuados en C (el idioma
en el que están escritos la mayoría de los sistemas operativos). Hay varias
herramientas (incluyendo herramientas gratuitas) disponibles para
comprobar los programas C para posibles problemas, y taquí es incluso un
parche del compilador llamado StackGuard que pone un canario al lado de la
dirección de retorno en la pila. Esto puede ser un valor aleatorio de 32 bits
elegido cuando se inicia el programa y se comprueba cuando se derriba una
función. Si la pila se ha sobrescrito mientras tanto, entonces con alta
probabilidad el canario cambiará [329]. La disponibilidad de estas
herramientas e iniciativas de formación como las de Microsoft han reducido
lentamente el número de recursos de desbordamiento de pila.Sin
embargo,ataqueherramientastambiénmejorar,yatacantesestán encontrando
errores como vulnerabilidades de cadena de formato y desbordamientos de
enteros a los que nadie prestó mucha atención en el En la década de 1990.
En general, es necesario poner mucho más esfuerzo en el diseño, la
codificación y las pruebas. La arquitectura importa; tener interfaces limpias
que evolucionan de manera controlada, bajo el ojo de águila de alguien
experimentado que tiene una participación a largo plazo en la seguridad del
producto, puede hacer un gran diferencia.(Voy a discutir esto en mayor detalle
en la Parte
III.)Programasdebesólotienencomomuchoprivilegiocomoquenecesidad:
elprincipio de privilegio mínimo[1102]. El software también debe estar
diseñado para que la configuración predeterminada, y en general, la forma
más fácil de hacer algo, debe be seguro. La arquitectura de sonido es
fundamental para lograr valores predeterminados seguros y usar los
128 Capítulo 4 Control de
acceso
privilegios mínimos. Sin embargo, muchos sistemas se envían con valores
predeterminados peligrosos y código desordenado que potencialmente expone
todo tipo de interfaces a ataques como la inyección SQL que simplemente
eshouldn't suceder.
4.4 Lo que va mal 129

4.4.6 Creep ambiental


He señalado repetidamente que muchos fallos de seguridad son el resultado
de un cambio mental que socava un modelo de
seguridad.Mecanismosquefueronambiente restringido a menudo fallan en un
entorno más generaluno.
Los mecanismos de control de acceso no son una excepción. Unix, por
ejemplo, fue diseñado origi- nally como un 'multics de un solo usuario' (de ahí
el nombre). Luego se convirtió en un sistema operativo para ser utilizado por
un número de personas calificadas y confiables en un laboratorio que
compartían una sola máquina. En este entorno, la función de los mecanismos
de seguridad consiste principalmente en contener errores; para evitar que los
errores de escritura de un usuario o los bloqueos de programa se
desprogramen o sobrescriban los archivos de otro
usuario.Eloriginalseguridadmecanismosfueronbastanteadecuadopara
estopropósito.
Pero la seguridad de Unix se convirtió en un clásico "desastre de éxito". Unix
se amplió repetidamente sin tener debidamente en cuenta la forma en que
también era necesario ampliar los hanismos mec deprotección. Las versiones
de Berkeley asumieron una extensión de una sola máquina a una red de
máquinas que estaban todas en una LAN y todas bajo una sola administración.
Los mecanismos como rhosts se basaron en una tupla (nombre de usuario,
nombre de host) en lugar de solo un nombre de usuario, y vieron el comienzo
de la transferencia de confianza.
Los mecanismos de Internet (telnet, ftp, DNS, SMTP), que surgieron de
Arpanet en la década de 1970, fueron escritos para mainframes en lo que
originalmente era una WAN segura. Los mainframes eranautónomos, la red
estaba fuera de los protocolos de seguridad y no había transferencia de
autorización. Por lo tanto, la autenticación remota, que el modelo de Berkeley
estaba empezando a hacer prudente, simplemente no era
compatible.ElSolcontribuciones(NFS, NIS, RPC, etc.)fueronbasado en un
modelo de estación de trabajo del universo, con un entorno LAN múltiple con
gestión distribuida pero todavía normalmente en una sola organización. (Un
tutorial adecuado sobre temas como DNS y NFS está fuera del alcance de este
libro, pero hay algunos másmaterial de antecedentes detallados en la sección
sobre Vulnerabilidades en los protocolos de red en el Capítulo 21.)
Mezclar todos estos diferentes modelos de computación entre sí ha dado
lugar a un caos. Algunas de sus suposiciones iniciales todavía se aplican
parcialmente, pero ninguna de ellas unpply global más. Internet ahora tiene
cientos de millones de PC, millones de LAN, miles de WAN interconectadas y
gerencias que no solo son independientes, sino que pueden estar en conflicto
(incluidos los estados nación y los grupos subestatales que están en war
entresí). Muchos equipos no tienen ninguna administración, y hay un número
creciente de cajas de Windows y Linux conectadas a la red en forma de
máquinas de fax, enrutadores y otros productos incrustados que nunca se
parchean.
Los usuarios, en lugar de ser trustwortu pero ocasionalmente
incompetentes, ahora son en gran medida incompetentes, pero algunos son a
la vez competentes y hostiles. El código solía ser simplemente buggy, pero
ahora hay una cantidad significativa de
130 Capítulo 4 Control de
acceso
código por ahí. Los ataques a las redes de comunicaciones utilizand para ser el
ámbito de las agencias nacionales de inteligencia - ahora pueden ser realizados
por los niños del guión, personas relativamente poco calificadas que han
descargado herramientas de ataque de la red y las lanzó sin ninguna idea real
de cómo funcionan.
Así que Unix e Internet security nos da otro ejemplo de un sistema que
comenzó razonablemente bien diseñado pero que fue socavado por un entorno
cambiante.
Windows Vista y sus predecesores en la serie de productos NT tienen
mecanismos de protección más amplios que Unix, pero han existido durante
mucho menos tiempo. Lo mismo ocurre con los productos de base de datos
como Oracle. Siendo realistas, todo lo que podemos decir es que el jurado sigue
fuera.

4.5 Resumen
Los mecanismos de control de acceso funcionan en varios niveles de un
sistema, desde aplicaciones a través del middleware hasta el sistema operativo
y el hardware. Los mecanismos de nivel superior pueden ser más expresivos,
pero también tienden a ser más vulnerabl e para atacar por una variedad de
razones que van desde la complejidad intrínseca hasta los niveles dehabilidad
del implementador. La mayoría de los ataques implican la explotación
oportunista de errores, y los productos de software que son muy grandes, muy
utilizados, o ambos (como con los sistemas operativos y bases de datos) son
particularmente propensos a que se encuentren y publiciten errores de
seguridad. Los sistemas a todos los niveles también son vulnerables a los
cambios ambientales que socavan los supuestos utilizados en su diseño.
La función principal del control de acceso es limitar el daño que pueden
hacer grupos, usuarios y programas particulares, ya sea por error o malicia.
Los ejemplos de campo más importantes son Unix y Windows, que son
similares en muchos aspectos, aunque Windows es más expresivo. Los
productosde base de datos son a través deun lugar más expresivo (y por lo
tanto aún más difícil de implementar de forma segura.) El control de acceso
también es una parte importante del diseño de hardware de propósito especial,
como tarjetas inteligentes y otros dispositivos de cifrado. Se están
desarrollando nuevas técnicas para devolver el número de errores de
implementación, como los ataques de desbordamiento de pila; se encuentran
continuamente, y la fiabilidad general de los grandes sistemas de software
mejora sólo lentamente.
Los conceptos generales de control de acceso desde lectura, escritura y
execute permis- sions hasta grupos y roles se acumularán una y otra vez. En
algunos sistemas distribuidos, pueden no ser inmediatamente obvios, ya que
los mecanismos subyacentes pueden ser muy diferentes. Un ejemplo proviene
de las infraestructuras de clave pública, que son unaentation reimplem de un
antiguo concepto de control deacceso, la capacidad. Sin embargo, los
mecanismos básicos (y sus problemas) son generalizados.
Lecturaadicional 127

Problemas de
investigación

La mayoría de las cuestiones relacionadas con el control de acceso se


identificaron en la década de 1960 o principios de 1970 y se experimentales
como Multics [1139] y la CAP
[1344].Muchodeelinvestigaciónenaccesocontrolsistemasya quetieneimplicaba
reelaborar los temas básicos en nuevos contextos, como los sistemas
orientados a objetos ycódigo.
Los hilos recientes de investigación incluyen cómo combinar el control de
acceso con los mecanismos de control de admisión utilizados para
proporcionar la calidad de servicio garantizada en los sistemas operativos mu
ltimedia, y cómo implementar y administrar el control de acceso demanera
eficiente en grandes complejos sistemas, utilizando roles e idiomas de
políticas. Sin embargo, el mayor tema de investigación en 2003 – 6 ha sido la
"Computación de Confianza", y cómomecanismos podrían estar en capas sobre
los mecanismos propuestos por el Trusted Computing Group. El fracaso de
Windows Vista, como se lanzó en enero de 2007, para admitir la atestación
remota ha las velas de este esfuerzo.
Sospecho que un tema de investigación útil para los próximos años será
cómo diseñar mecanismos de control de acceso que no solo sean robustos, sino
también utilizables, tanto por los programadores como por los usuarios
finales. La separación es bastante fácil en principio; uno puede tener máquinas
diferentes, o diferentes máquinas virtuales, para diferentes tareas. Pero, ¿qué
tan feliz sería la gente con una aplicación de banca electrónica que estaba tan
bien alejada del resto del mundo digital que no podía exportar cifras de su
estado de cuenta bancario a una hoja de cálculo? Discutiré este problema con
mayor detalle cuando lleguemos a los controles de acceso obligatorios en el
capítulo 8.

Lectura adicional
El mejor libro de texto para obtener una introducción más detallada a los
problemas de control de acceso es 'Seguridad informática' deDieter Gollmann
[537]. Un informe técnico de Carl Landwehr da una referencia útil a muchos
de los defectos encontrados en los sistemas operativos en los últimos 30 años
[774]. Uno de los primeros informes sobre el tema (y de hecho sobre la
seguridad informática en general) es de Willis Ware [1319]. Uno de los
primeros artículos más influyentes es el de Jerry Saltzer y Mike Schroeder
[1102], mientras que el influyente artículo de Butler Lampson sobre el
problema del confinamiento está en [768].
La descripción clásica de la seguridad de Unix está en el periódico de Fred
Grampp y Robert Morris [550].Ella mayoríaintegrallibro de
textoenestesujetoesSim- hijo Garfinkel y Eugene SpaffordPráctica Unix y
seguridad de Internet[517], mientras que el clásico en elternet lado de las
cosas es Bill Cheswick ySteve
128 Capítulo 4 Control de
acceso
Firewalls de Bellovin y Seguridad de Internet [157], con muchos ejemplos de
ataques de red en sistemas Unix.
Los mecanismos de protección de Windows se describen brevemente en
Gollmann. Para obtener más información, consulte la documentación en línea
de Microsoft; sin duda una serie de libros de texto en Vista aparecerá pronto.
Hay una historia de arquitecturas de microprocesadores en [128], y un libro
de información para laseguridad de Java escrito por su arquitecto Li Gong
[539].
El campo de la seguridad del software se mueve rápidamente; los ataques
que están captando los titulares cambian significativamente (al menos en sus
detalles) de un año a otro. El mejor book recienteque he leído es el de Gary
McGraw [858]. Pero para mantenerse al día, no sólo debe leer libros de texto,
pero siga los últimos avisos de CERT y listas de correo como bugtraq y libros
sobre el lado oscuro como Markus Jakobsson y Zulfikar Ramzan [660].

Potrebbero piacerti anche