2. El control de acceso es el centro de
gravedad de la seguridad informática.
Es el lugar donde se reúne la ingeniería de
seguridad con la informática.
Su función es controlar a que recursos tiene
acceso cada usuario, que documentos se
pueden leer, que programas se pueden
ejecutar, como se comparten datos con
otros usuarios, etc.
3. El control de acceso trabaja con cuatro
niveles:
- Aplicación
- Middleware
- Sistema Operativo
- Hardware
4. Las aplicaciones pueden ser escritas en
la parte superior de middleware, tal
como un sistema de gestión de base de
datos o un paquete de contabilidad,
que ejecuta una serie de propiedades
de protección.
Por ejemplo, el software de base de
datos suele tener controles de acceso
que especifican los diccionarios que un
determinado usuario puede seleccionar,
y qué procedimientos puede correr.
5. El middleware usará facilidades
proporcionadas por el sistema operativo
subyacente. Recursos tales como
archivos y puertos de comunicaciones a
partir de componentes de bajo nivel,
adquiere la responsabilidad de
proporcionar formas de controlar el
acceso a ellos.
6. Finalmente, los controles de acceso del
sistema operativo normalmente se
basarán en las características de
hardware proporcionadas por el
procesador o por hardware de gestión
de memoria asociado. Estos controlan
que las direcciones de memoria de un
proceso dado puedan tener acceso.
7. Los controles de acceso provistos de un
sistema operativo normalmente
autentifican a los usuarios mediante un
mecanismo como la contraseña o
Kerberos, luego disminuyen su acceso a
los archivos, puertos de comunicación y
otros recursos del sistema. Su efecto
puede ser modificado(la mayoría del
tiempo) por una matriz de permisos de
acceso.
8. Con columnas para los archivos y filas para los usuarios.
Escribimos r para permiso de leer, w para permiso de
escribir, x para permiso de ejecutar un programa y – para el
“no acceso”:
9. En este ejemplo simplificado..
Sam es el administrador de sistema y tiene acceso
universal(excepto por la pista de auditoria, que
incluso él solo 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. Necesita también leer
y escribir en los datos.
Bob el auditor, puede leer todo.
10. Un grupo es una lista de los usuarios, mientras
que un rol es un conjunto fijo de permisos de
acceso que uno o más directores pueden
asumir por un período de tiempo utilizando
algún procedimiento definido.
El ejemplo clásico de un rol es el
oficial de guardia en un barco.
En la mayoría de las aplicaciones de
gobierno y de negocios, es el rol lo que
Importa, aun más que el individuo.
11. El apoyo del nivel de sistema operativo
está disponible para grupos y roles pero su
aparición es bastante reciente y su
absorción es bastante lenta.
los desarrolladores suelen implementar
este tipo de funcionalidad en el código
de la aplicación
12. Otra manera de simplificar la gestión de
los derechos de acceso es almacenar la
matriz de control de acceso de una
columna a la vez, junto con el recurso al
que se refiere la columna. Esto se
conoce como una lista de control de
acceso o ACL.
13. En Unix(incluyendo su popular variante
Linux), a los archivos no se les permite
tener listas de control de acceso
arbitrarias, pero si los atributos r ,w, x
como recurso del propietario , el grupo,
y el mundo. Estos atributos permiten que
el archivo sea leído, escrito y ejecutado.
14. El sistema operativo de Apple se basa en la
versión del BSD de Unix que
corre encima del corazón de mac.
La capa del BSD proporciona la protección
de memoria; las aplicaciones no
pueden tener acceso a la
memoria de sistema a menos que
corran con permisos avanzados.
15. El sistema operativo más extenso de las
computadoras es Windows, cuya protección
se ha basado en gran parte en listas de control
de acceso desde Windows NT(v4).
La versión actual de Windows es bastante
compleja, así que es útil remontar sus
antecedentes. La protección en Windows es
muy parecida a la de Unix, y fue
inspirada por ella, y desde entonces ha
seguido la filosofía de Microsoft de
"abraza y extiende”
16. La siguiente manera de manejar la matriz de control
de acceso es almacenarlo por filas..
estas se llaman capacidades.
Los puntos fuertes y débiles de las capacidades son
más o menos lo opuesto a las ACL.
La comprobación de la seguridad del tiempo de
ejecución es más eficiente y podemos delegar
un derecho sin mucha dificultad.
Por otra parte, el cambio del estado de
un fichero puede llegar a ser repentinamente más
complicado que puede ser difícil descubrir
que usuarios tienen acceso.
17. Es un software que asiste a una aplicación para
interactuar o comunicarse con otras
aplicaciones, software, redes, hardware y/o sistemas
operativos. El control de acceso a nivel de archivos y
programas estaba muy bien en los primeros años de la
computación, cuando estos eran los recursos que
importaba. Desde alrededor de la década de 1980, el
control de acceso se realiza a otros niveles en lugar de a
nivel del sistema operativo. Por ejemplo, el sistema de un
banco filial de contabilidad generalmente se ejecutará
en la parte superior de un producto de base de datos y la
base de datos busca el sistema operativo como un
archivo de gran tamaño. Esto significa que el control de
acceso tiene que ser hecho en la base de datos; todo el
sistema operativo suministra muchos ID autentificados
para cada usuario que inicia una sesión.
18. La seguridad de bases de datos era en gran
parte una preocupación. Pero ahora es
común que las empresas tengan bases de
datos críticas, que se encargan de
inventario, envío y el comercio
electrónico, afrontado por los servidores web
que pasan las transacciones para las bases de
datos directamente.
Para configurar el sistema de base de datos
de manera segura se necesita conocimiento
especializado. La seguridad de base de datos
es ahora una disciplina por derecho propio.
19. Hay una serie de aspectos comunes en la seguridad
middleware y los controles de nivel de aplicación. La
primera es la granularidad: el sistema operativo
trabaja con los archivos, por lo general son los
objetos más pequeños con los cual sus mecanismos
de control de acceso pueden hacerle frente. La
segunda es el estado. El tercero es el nivel: podemos
acabar con distintos sistemas de control de acceso a
nivel de máquina, redes y aplicaciones, y éstas
suelen venir de diferentes proveedores puede ser
difícil mantenerlos constantes. Tales soluciones son
difíciles de diseñar correctamente, y la seguridad del
mejor sistema puede ser fácilmente reducida a la de
los peores.
20. Estos problemas llevaron a los
investigadores a buscar formas en que se
pueda controlar el acceso a una serie de
aplicaciones que maneja middleware
estándar. La investigación en la década de
1990 se centró en los corredores de
solicitud de objetos (ORB). Un ORB es un
componente de software que media
comunicación entre objetos (un objeto
consta de código y los datos agrupados).
Un ORB proporciona típicamente un medio
de control de llamadas que se hacen a
través de dominios de protección.
21. Otra forma de implementar el control de acceso es
un recinto de seguridad de software. Aquí los
usuarios desean ejecutar algún código que se ha
descargado de la Web como un applet. Su
preocupación es que el applet puede hacer algo
desagradable, como la toma de una lista de todos
sus archivos y enviárla por correo a una compañía
de software de marketing. Los diseñadores de Java
frente a este problema proporcionan una "caja de
arena" para tal código-un entorno restringido en el
que no tiene acceso al disco duro local (o en más
sólo acceso temporal a un directorio restringido), y
sólo se le permite comunicarse con el anfitrión.
22. Esto se refiere a sistemas que permiten a una
sola máquina emular un número de máquinas
de forma independiente. Fue inventado en
1960 por IBM; cuando los CPUs eran muy
caros, una sola máquina podía ser
particionada utilizando VM/370 en múltiples
máquinas virtuales, por lo que una empresa
que compraba dos cuadros principales
podrían utilizar uno para su entorno de
producción, pruebas, y aplicaciones de menor
importancia.
La virtualización es muy atractiva para la
industria
23. La mayoría de los sistemas de control de
acceso no son sólo para controlar lo que los
usuarios pueden hacer, sino limitarse a ¿qué
pueden hacer los programas también?. En la
mayoría de los sistemas, los usuarios pueden
escribir programas o descargar e instalar. Los
programas pueden ser defectuosos o
maliciosos, incluso. La prevención de un
proceso de interferir con otro es problema de
la protección. Esto por lo general significa que
el control de acceso de hardware debe estar
integrado con las funciones del procesador de
gestión de memoria.
24. Los primeros procesadores de Intel, tales como 8088/8086
usados en los primeros ordenadores , no tenían ninguna
distinción entre el sistema y el modo de usuario, ningún
programa en ejecución controlaba toda la máquina. El
80286 añadió segmento de direccionamiento y estaba
protegido por anillos, era la primera vez que se podían
ejecutar sistemas operativos adecuados. El 80386 tiene
memoria interna virtual y grandes segmentos de memoria
suficiente (4 GB) que podían ser ignorados y tratados
como la máquina de 32 bits plana. ). Los Pentium 3
finalmente añadieron una nueva característica de
seguridad, un procesador de número de serie. Esta causó
una tormenta de protestas, impulsadas por los defensores
de la privacidad, que temían que podría ser utilizado
para todo tipo de fines.
25. El ARM es el núcleo del procesador de 32-
bit con mayor frecuencia, con licencia
para proveedores de terceros de los
sistemas incrustados. El ARM original fue el
primer diseño comercial RISC. Sus sucesores
de hoy en día son importantes porque que
se incorporan en todo tipo de aplicaciones
sensibles a la seguridad de los teléfonos
móviles para proteger los datos secretos.
Rápido se multiplican y acumulan
instrucciones y tienen bajo consumo de
energía, el ARM es muy atractivo para
aplicaciones integradas.
26. Procesadores especialistas en seguridad
van desde los chips de tarjetas
inteligentes, a través de los chips TPM
ahora fijado a las placas base de los PC
(que son, básicamente, los chips de
tarjetas inteligentes con interfaces
paralelas) y tablas de Crypto
Accelerator, a un especialista en
dispositivos criptográficos.
27. Los sistemas operativos más populares, tales como Unix /
Linux y Windows son muy grandes y complejo, así que
tienen muchos errores. En consecuencia, muchos errores
son detectados y reportados. Gracias a la red, el
conocimiento se propaga ampliamente y con rapidez.
Así, en un cualquier tiempo, puede haber docenas de
fallas de seguridad que se conocen, y para el cual
secuencias de comandos de ataque están circulando en
la red. Una vulnerabilidad tiene un ciclo de vida típico por
el que se descubre; informó al CERT o al proveedor, un
parche enviado, el parche es de ingeniería inversa, y un
exploit es producido por la vulnerabilidad, y la gente que
no aplicaron el parche en el tiempo descubren que su
máquinas han sido reclutados para una botnet cuando su
ISP ellos se interrumpe el envío de spam.
28. La idea básica detrás del ataque stack-smashing es que
los programadores son a menudo descuidado acerca de
la comprobación del tamaño de argumentos, por lo que
un atacante que pasa una larga discusión a un programa
puede encontrar que algunos de ellos se trata como
código en lugar de datos. Un ejemplo clásico fue una
vulnerabilidad en el dedo Unix comando. Una aplicación
generalizada de esto sería aceptar un argumento de
cualquier longitud, aunque sólo 256 bytes habían
asignado para este argumento por el programa. Cuando
un atacante utiliza el comando con un argumento más,
los bytes de seguimiento de la discusión terminan siendo
ejecutado por el sistema.
El ataque no es aún limitada a los sistemas informáticos en
red: en al menos una tarjeta inteligente podía ser
derrotado por pasarle un mensaje más largo que su
programador había previsto.
29. Las nuevas vulnerabilidades otros son en su mayoría
variaciones sobre el mismo general tema, en que se
producen cuando los datos de gramática A se interpreta
como en gramática B. Un desbordamiento de pila es
cuando los datos se aceptan como entrada (por
ejemplo, una URL) y terminar siendo ejecutada como
código máquina. Son esencialmente fracasos de tipo de
seguridad. Existe una vulnerabilidad de cadena de
formato se presenta cuando una máquina acepta datos
de entrada como una instrucción de formato (por
ejemplo,% n en el comando C printf ()).
Desbordamientos de búfer puede ser inducida por
terminación de cadena incorrecto, pasar un tampón
inadecuadamente dimensionado para un camino
función de manipulación, y muchos otros errores sutiles.
30. SQL inserción ataca comúnmente
surgen cuando un desarrollador web
descuidado pasa a la entrada del
usuario a una base de datos de fondo
sin la comprobación para ver si se
contiene código SQL.
Hay inyección de comandos similares
problemas que afecta a las otras
lenguas utilizadas por los desarrolladores
web, como PHP y Perl.
31. Uno de los primeros ataques, pueden concebirse fue
el caballo de Troya, un programa que el
administrador es invitado a correr y que hará algún
daño si lo hace así. La gente iba a escribir juegos
que comprobado de vez en cuando si el jugador
era el administrador del sistema, y de ser así se
crearía otro administrador cuenta con una
contraseña conocida.
Otro truco consiste en escribir un programa que tiene
el mismo nombre que una frecuencia sistema
utilizado utilidad, como el comando ls que muestra
todos los archivos en un sistema Unix directorio, y
diseñarlo para abusar del privilegio de administrador
(si la hay) antes invocando la utilidad genuina.
32. Algunas clases de vulnerabilidad se puede solucionar con
herramientas automáticas. Pila sobrescribir ataques, por
ejemplo, son en gran parte debido a la falta de límites
apropiados comprobar en C (el mayor número de idiomas son
los sistemas operativos escrito en). Hay varias herramientas
(incluidas las herramientas gratuitas) disponibles para el control
de los programas en C para problemas potenciales, y hay
incluso un parche llamado compilador StackGuard que pone
un canario junto a la dirección de retorno en la pila. Esto puede
ser una azar 32-bit valor seleccionado cuando se inicie el
programa, y se comprueba cuando un función es derribado. Si
la pila ha sido sobrescrito por su parte, a continuación, con alta
probabilidad de que el canario va a cambiar [329]. La
disponibilidad de estas herramientas, y las iniciativas de
formación, como Microsoft, poco a poco han reducido el
número de errores de desbordamiento de pila. Sin embargo, las
herramientas de ataque también mejoran, y son los atacantes