pruebas de seguridad del software


La seguridad del software es un tema amplio y complejo, y cada nueva pieza de software puede tener nuevas fallas de seguridad que no se ajustan a todos los patrones conocidos. No es práctico protegerse contra todos los tipos de ataques posibles debido a fallas de seguridad. En las pruebas de seguridad del software, es muy importante utilizar un conjunto de buenos principios para evitar que se inicie software no seguro y que se ataque software no seguro.

1. Conceptos básicos de las pruebas de seguridad del software

Las pruebas de seguridad del software incluyen pruebas de seguridad de programas, redes y bases de datos. De acuerdo con los diferentes indicadores de seguridad del sistema, las estrategias de prueba también son diferentes.

1. Los aspectos a considerar en las pruebas de seguridad del programa de usuario incluyen:

① Distinguir claramente los diferentes permisos de usuario en el sistema;

② Si habrá conflictos de usuarios en el sistema;

③ ¿El sistema causará confusión debido a cambios en los permisos de los usuarios?

④ Si la contraseña de inicio de sesión del usuario es visible y reproducible;

⑤ Si es posible iniciar sesión en el sistema de forma absoluta (copie el enlace después de que el usuario inicie sesión e ingrese directamente al sistema);

⑥ Si todas las marcas de autenticación se han eliminado después de que el usuario sale del sistema y si es posible usar el botón Atrás para ingresar al sistema sin ingresar una contraseña.

2. Los aspectos a considerar en las pruebas de seguridad de la red del sistema incluyen:

① Probar si las medidas de protección tomadas están correctamente ensambladas y si se aplican los parches de sistema relevantes;

② Simule ataques no autorizados para ver si el sistema de protección es fuerte;

③ Usar herramientas de inspección de vulnerabilidades de red maduras para verificar las vulnerabilidades relacionadas con el sistema;

④ Use varias herramientas de inspección de caballos de Troya para verificar la situación del caballo de Troya del sistema;

⑤ Use varias herramientas anti-trampas para verificar las lagunas de trampas de clientes de cada grupo de programas en el sistema.

3. Consideraciones de seguridad de la base de datos:

① Si los datos del sistema son confidenciales (por ejemplo, para el sistema bancario, esto es particularmente importante y los sitios web generales no tienen requisitos demasiado altos);

② Integridad de los datos del sistema;

③ Capacidad de gestión de datos del sistema;

④ Independencia de los datos del sistema;

⑤ Capacidades de copia de seguridad y restauración de datos del sistema (si la copia de seguridad de datos está completa, si se puede restaurar y si la restauración se puede completar).

2. Aspectos a considerar de acuerdo con las pruebas de seguridad del software

1. Protege el eslabón más débil

Puede que no le sorprenda que los atacantes a menudo busquen explotar las áreas más vulnerables. Incluso si dedican el mismo esfuerzo a todas las partes de su sistema, es más probable que encuentren problemas en las partes de su sistema que más necesitan mejorar. Esta intuición es ampliamente aplicable, por lo que nuestras pruebas de seguridad deben centrarse en probar las partes más débiles.

Si realiza un buen análisis de riesgos y realiza una prueba de seguridad del eslabón más débil, debería ser muy fácil identificar los componentes que cree que son los componentes más débiles del sistema y eliminar los riesgos más graves, que es una parte importante de pruebas de seguridad del software.

2. Si tiene la capacidad de defensa en profundidad

La idea detrás de la defensa en profundidad es probar el software utilizando múltiples estrategias de defensa para que al menos una capa de defensa prevenga una violación completa de piratas informáticos. El principio de "proteger el eslabón más débil" se aplica cuando los componentes tienen funciones de seguridad que no se superponen. Cuando se trata de medidas de seguridad redundantes, la protección general provista es mucho más sólida que la provista por cualquier componente individual, y la prueba de las capacidades de defensa en profundidad es el principio que deben seguir las pruebas de seguridad del software.

3. ¿Existen medidas de protección contra fallas?

Muchos ejemplos aparecen en el mundo digital. A menudo surgen problemas debido a la necesidad de admitir software heredado inseguro. Por ejemplo, digamos que la versión original del software era muy "ingenua" y no usaba encriptación en absoluto. Ahora el software quiere corregir este problema, pero ha establecido una gran base de usuarios. Además, el software ha implementado muchos servidores que probablemente no se actualizarán durante mucho tiempo. Los clientes y servidores más nuevos e inteligentes necesitan interoperar con clientes más antiguos que no se han actualizado con el nuevo protocolo. El software quiere obligar a los usuarios mayores a actualizar, y no se espera que los usuarios mayores constituyan una parte tan grande de la base de usuarios que de todos modos sea una verdadera molestia. Qué hacer Haga que el cliente y el servidor examinen el primer mensaje que reciben entre sí y, a partir de ahí, determinen qué sucedió. Si estamos "hablando" con una pieza de software antiguo, entonces no estamos realizando el cifrado.

Desafortunadamente, un pirata informático sofisticado puede obligar a dos nuevos clientes a pensar que el otro es el antiguo cliente manipulando los datos a medida que atraviesan la red. Para empeorar las cosas, tener soporte para compatibilidad con versiones anteriores completa (bidireccional) todavía no elimina el problema.

Una mejor solución a este problema es diseñar desde el principio con un esquema de actualización forzada, hacer que el cliente detecte que el servidor ya no lo soporta. Si el cliente puede recuperar el parche de forma segura, se actualiza. De lo contrario, le dice al usuario que debe obtener manualmente una nueva copia. Pero esté preparado para usar esta solución desde el principio, y los primeros usuarios se sentirán ofendidos.

Es muy importante comprobar si las medidas de protección adoptadas están correctamente ensambladas y si se aplican los parches de sistema pertinentes. 4. Mínimo privilegio El principio de mínimo privilegio estipula que solo se otorgan los mínimos derechos de acceso necesarios para realizar las operaciones.Es
  muy importante probar si las medidas de protección tomadas están bien ensambladas y si se aplican los parches de sistema pertinentes.

4. Privilegio mínimo

El principio de privilegios mínimos establece: Asegúrese de que solo se conceda la menor cantidad de acceso necesaria para realizar una operación, y que el acceso se conceda solo durante la menor cantidad de tiempo necesario para su uso.

Cuando el software da acceso a ciertas partes, generalmente existe el riesgo de abusar de los privilegios asociados con ese acceso. Por ejemplo, supongamos que te vas de vacaciones y le das las llaves de tu casa a tu amigo para que pueda alimentar a tus mascotas, recoger el correo, etc. Aunque puedes confiar en ese amigo, siempre existe la posibilidad de que tu amigo organice una fiesta en tu casa o haga otras cosas que no te gustan sin tu permiso.

Un programador puede desear acceder a algún objeto de datos, pero solo para leer de ese objeto. Sin embargo, por la razón que sea, a menudo el programador realmente necesita más privilegios que los requeridos. Por lo general, el programador intenta facilitar la programación.

El principio de privilegio mínimo puede ser muy efectivo si la estructura de derechos de acceso establecida por el software no es "acceso total o ningún acceso".

5. Separación

La idea básica detrás de la partición es que si dividimos un sistema en tantas unidades independientes como sea posible, podemos minimizar la cantidad de daño que se le puede hacer al sistema.

Por lo general, si un atacante aprovecha un desbordamiento de búfer en el código, realiza una escritura sin procesar en el disco y modifica aleatoriamente cualquier dato en la memoria donde reside el kernel. No hay ningún mecanismo de protección que le impida hacerlo. Por lo tanto, es muy importante que el sistema esté moderadamente separado. El software debe admitir directamente los archivos de registro en el disco local que nunca se pueden borrar, lo que significa que hasta

La información de auditoría precisa no se puede mantener cuando un atacante irrumpe.

El uso adecuado de la separación facilitará la gestión del sistema, pero si se separa cada función, el sistema será difícil de gestionar.

3. El objetivo principal de las pruebas de seguridad es encontrar posibles riesgos de seguridad en el diseño del programa propio del software y verificar la capacidad de la aplicación para evitar intrusiones ilegales. Las estrategias de prueba son diferentes según los diferentes indicadores de seguridad. Si se siguen los mismos principios, para probar la seguridad del software La seguridad será propicia para la implementación de las especificaciones de trabajo de pruebas de seguridad del software y el desarrollo del trabajo de pruebas de seguridad del software.

La prueba de seguridad comprueba la capacidad del sistema para evitar intrusiones ilegales. Durante la prueba de seguridad, los evaluadores se hicieron pasar por intrusos ilegales y utilizaron varios métodos para intentar atravesar la línea de defensa. Por ejemplo, ① tratar de interceptar o descifrar contraseñas; ② software hecho a medida para destruir el mecanismo de protección del sistema; ③ causar fallas intencionales en el sistema, intentar ingresar ilegalmente mientras se recupera; ④ tratar de derivar la información requerida navegando de manera no confidencial datos, y así sucesivamente. En teoría, con el tiempo y los recursos suficientes, no existen sistemas inaccesibles. Por lo tanto, el principio del diseño de seguridad del sistema es hacer que el costo de la intrusión ilegal exceda el valor de la información protegida. En este momento, el intruso ilegal no tiene ganancias.

Las pruebas de seguridad se utilizan para verificar si el mecanismo de protección integrado en el sistema realmente puede proteger el sistema de intrusiones ilegales. Como dice el refrán: "La seguridad de un sistema debe, por supuesto, ser capaz de resistir ataques desde el frente, pero también debe ser capaz de resistir ataques desde el costado y desde atrás".

Durante las pruebas de seguridad, el evaluador desempeña el papel de un individuo que intenta atacar el sistema. Los probadores pueden tratar de obtener contraseñas del sistema a través de medios externos y pueden usar software de cliente que puede romper cualquier defensa para atacar el sistema; pueden "dominar" el sistema para que otros no puedan acceder a él; entrometerse en el sistema durante la recuperación del sistema; usted puede encontrar la clave para ingresar al sistema y así sucesivamente navegando por los datos no confidenciales.

Con el tiempo y los recursos suficientes, es seguro que las buenas pruebas de seguridad acabarán entrando en un sistema. La tarea del diseñador del sistema es diseñar el sistema de modo que el precio pagado por romper el sistema sea mayor que el valor de la información obtenida después de romper el sistema.

Intercambio de recursos de aprendizaje de seguridad de red:
entrada de base cero

Para los estudiantes que nunca han estado expuestos a la seguridad de la red, hemos preparado una hoja de ruta detallada de aprendizaje y crecimiento para usted. Se puede decir que es la ruta de aprendizaje más científica y sistemática, y no es problema para todos seguir esta dirección general.


————————————————
Declaración de derechos de autor: este artículo es un artículo original del bloguero de CSDN "Hombre mono de mediana edad", siguiendo el acuerdo de derechos de autor CC 4.0 BY-SA, adjunte el original enlace fuente y esta declaración.
Enlace original: https://blog.csdn.net/2301_76161259/article/details/129561319

Supongo que te gusta

Origin blog.csdn.net/huzia/article/details/130283233
Recomendado
Clasificación