Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
Contabilidad de
usuarios
Datos
Sam rw
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
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.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.
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.
de de
Figura 4.6: Ataque aplastante de pila
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
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.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
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].