Soware Seguridad De Desarrollo De Capítulo 8

Transcription

Guía de certificados cissp, 3ª ediciónPRÓXIMOPREVCapítulo 7 Operaciones de seguridad Capítulo 8Seguridad de desarrollo deso wareEste capítulo abarca los siguientes temas:Conceptos de desarrollo de software:Describe las arquitecturas de software y losidiomas utilizados para implementarlas.Seguridad en el ciclo de vida del desarrollode sistemas y software: Los conceptosdiscutidos incluyen el Ciclo de Vida de Desarrollodel Sistema; el Ciclo de Vida de Desarrollo deSoftware; métodos de desarrollo de software ymodelos de madurez; operación y mantenimiento;gestión del cambio; y el equipo de productointegrado.Controles de seguridad en desarrollo: Losconceptos discutidos incluyen las prácticasrecomendadas de seguridad de desarrollo desoftware, la seguridad del entorno de software, losproblemas de código fuente, las herramientas deanálisis de código fuente, la seguridad delrepositorio de código, la seguridad de la interfaz deprogramación de aplicaciones, las amenazas desoftware y los mecanismos de protección desoftware.Capítulo 9 Preparación final

Evaluar la eficacia de la seguridad delsoftware: Los conceptos discutidos incluyenauditoría y registro, análisis y mitigación deriesgos, y pruebas de regresión y aceptación.Impacto en la seguridad del softwareadquirido: Analiza el ciclo de vida del softwareadquirido y el impacto en la seguridad del softwareadquirido.Directrices y normas de codificaciónseguras: Describe las debilidades yvulnerabilidades de seguridad en el nivel de códigofuente, la seguridad de las interfaces deprogramación de aplicaciones y las prácticas decodificación seguras.La seguridad de desarrollo de software cubre todos losproblemas de seguridad y controles que losprofesionales de seguridad deben entender cuando setrata de software comercial o desarrolladointernamente. Esto incluye entender el ciclo de vidadel desarrollo de software y ser capaz de evaluar laeficacia de la seguridad del software y el impacto delsoftware.El software está en el corazón de todas las funcionesde los sistemas informáticos. Varios tipos de software,incluidos los sistemas operativos, las aplicaciones ylas utilidades, trabajan juntos para entregarinstrucciones de un humano al hardware. Todas estasinstrucciones se crean con la intención de hacerposible alguna operación.Cuando el software se escribe y desarrolla, el enfoquese puede poner en su funcionalidad y facilidad de usoo en su seguridad. En muchos casos, los dos objetivospodrían funcionar a propósitos cruzados. Dar unaatención inadecuada a la seguridad de una pieza desoftware da como resultado un software que puedeintroducir problemas de seguridad tanto a laaplicación como a los sistemas en los que se ejecuta.

Además, algunos tipos de software se desarrollanintencionalmente para crear aberturas de seguridaden una red o sistema. En este capítulo se analiza lametodología de desarrollo de software, las mejoresprácticas para el desarrollo seguro y los tipos demalware y métodos para mitigar los efectos delmalware.TEMAS DE LA FUNDACIÓNCONCEPTOS DE DESARROLLO DESOFTWAREEl software comprende las instrucciones escritas quepermiten a los seres humanos comunicarse con elhardware de la computadora. Estas instruccionesestán escritas en varios lenguajes de programación. Amedida que la programación ha evolucionado a lolargo de los años, cada lenguaje sucesivo ha entregadomás funcionalidad a los programadores. Los lenguajesde programación se pueden clasificar en categorías enfunción del tipo de instrucciones que creen y de quéparte del sistema hablan. Esta sección cubre lascategorías principales.Lenguajes de máquinaLos lenguajes de máquina son los que entreganinstrucciones directamente al procesador. Este fue elúnico tipo de programación realizada en la década de1950 y utiliza instrucciones binarias básicas sin uncompilador o intérprete (programas que conviertentipos de lenguaje más altos en un formulario quepuede ejecutar el procesador). Este tipo deprogramación consume mucho tiempo y es propensaa errores. La mayoría de estos programas fueron muyrudimentarios debido a la necesidad de mantener uncontrol estricto de su longitud.Lenguajes y ensambladores de la Asamblea

Considerados como lenguajes de máquina "un pasopor encima", los lenguajes ensambladores utilizansímbolos o mnemotécnicos para representarsecciones de código binario complicado. Por lo tanto,estos lenguajes utilizan un ensamblador paraconvertir el código al nivel de máquina. Aunque estosimplifica y acorta enormemente el código, todavíarequiere un amplio conocimiento de la arquitecturadel equipo. También significa que cualquier códigoescrito en estos idiomas será específico del hardware.Aunque el lenguaje de ensamblado es más sencillo deescribir que el lenguaje de máquina, no es tan fácil decrear como los idiomas de alto nivel que se describena continuación.Lenguajes, compiladores e intérpretes dealto nivelEn la década de 1960, surgió un tercer nivel delenguaje llamado idiomas de alto nivel. Estasinstrucciones utilizan instrucciones abstractas (porejemplo, IF–THEN–ELSE) y son independientes delprocesador. Son más fáciles de trabajar, y su sintaxises más similar al lenguaje humano. Este código utilizaensambladores o compiladores para convertir lasinstrucciones en código de máquina. El resultado finales una disminución en el número total de escritoresde código necesarios para un proyecto determinado.Una cuarta generación de lenguajes llamadoslenguajes de muy alto nivel se centra en algoritmosabstractos que ocultan parte de la complejidad alprogramador. Esto libera a los programadores paracentrarse en los problemas del mundo real que estántratando de resolver en lugar de los detalles quecontinúan detrás de las escenas.Finalmente, en la década de 1990, una quintageneración de idiomas comenzó a surgir llamadaslenguas naturales. El objetivo es utilizar estoslenguajes para crear software que pueda resolverproblemas por sí solo en lugar de requerir que un

programador cree código para hacer frente alproblema. Aunque este objetivo no se realizaplenamente, vale la pena perseguir el procesamientobasado en el conocimiento y la inteligencia artificial.Existe una distinción significativa con respecto a laseguridad entre el código compilado y el códigointerpretado. Dado que el código compilado ya se hatraducido al lenguaje binario, detectar códigomalintencionado dentro de una aplicación es muydifícil. El código interpretado, por otro lado, utiliza unintérprete de lenguaje que es una pieza de softwareque permite al usuario final escribir un programa enalgún lenguaje legible por el ser humano y hacer queeste programa sea ejecutado directamente por elintérprete. En este caso detectar código malicioso esalgo más fácil porque el código es un poco más legiblepor los seres humanos.Programación orientada a objetosEn el desarrollo de software clásico, los datos seintroducen en un programa, el programa administralos datos de principio a fin y se devuelve un resultado.La programación orientada a objetos (OOP)proporciona la misma funcionalidad, pero seintroduce de forma más eficiente a través dediferentes técnicas. En OOP, los objetos se organizanen una jerarquía de clases con característicasdenominadas atributos asociados a cada uno. OOPhace hincapié en el empleo de objetos y métodos enlugar de tipos o transformaciones como en otrosenfoques de software.El programador crea las clases de objetos, pero notodos los objetos en sí. El software del programapermite crear objetos bajo demanda cuando seanecesario a través de solicitudes. Cuando llega unasolicitud, normalmente desde un objeto existente paraque un nuevo objeto lleve a cabo alguna función, secrea (crea una instancia) con el código necesario. Noimporta si los objetos se escriben en un lenguaje de

programación diferente siempre y cuando los objetostengan la capacidad de comunicarse entre sí, unproceso que normalmente es posible a través de unainterfaz de programación de aplicaciones (API).Además, dado que los objetos se organizan en clasesjerárquicas, los métodos de objeto (funcionalidades oprocedimientos) se pueden pasar de una clase a unasubclase a través de un proceso denominadoherencia. Los objetos contienen o encapsulanvaloresde atributo. Los objetos se comunican con losmensajes enviados a la API de otro objeto. Diferentesobjetos pueden reaccionar de forma diferente almismo mensaje, que se denominacomportamientodel objeto. El código que define cómose comportará un objeto con respecto a un mensaje sedenomina método.Algunas partes de un objeto pueden ser privadas, loque significa que sus datos internos y operación noson visibles para otros objetos. Esta privacidad seproporciona a través del proceso de encapsulación y aveces se denomina ocultación de datos. Laabstracción es la capacidad de suprimir estos detallesinternos innecesarios. Otros objetos, sujetos yaplicaciones pueden hacer uso de la funcionalidad delos objetos a través de interfaces estandarizadas sinpreocuparse por los detalles de la funcionalidad.OOP utiliza tipos de datos con rangos definidos. Losprogramadores deben identificar todos los objetos dedatos y sus relaciones a través de un procesodenominado modelado de datos. A continuación, elobjeto se generaliza en una clase de objeto y se definecomo parte de una secuencia lógica, tambiéndenominada método, utilizada para manipular elobjeto. Un objeto se puede utilizar en diferentesaplicaciones.Ejemplos de lenguajes OOP son C , Simula 67 ySmalltalk. Las muchas ventajas de esta OOP incluyen

Modularidad en el diseño a través de objetosautónomosDefinición de componentes internos sin afectar aotras partes del sistemaReutilización de componentesMapas más fácilmente a las necesidadesempresarialespolimorfismoEn un sistema orientado a objetos, el polimorfismodenota objetos de muchas clases diferentes que estánrelacionados con alguna superclase común; por lotanto, cualquier objeto denotado por este nombrepuede responder a algún conjunto común deoperaciones de una manera diferente. Elpolimorfismo es la capacidad de diferentes objetoscon un nombre común para reaccionar al mismomensaje o entrada con una salida diferente. Porejemplo, tres objetos podrían recibir la entrada"Toyota Corolla". La salida de un objeto podría ser"subcompacta", otra podría ser "usar combustibleregular" y otra podría ser "cuesta 18.000". En algunoscasos, estas diferencias se derivan del hecho de quelos objetos han heredado características diferentes desus clases primarias.PoliinstanciaciónLa poliinstanciación evita que los objetos de bajo nivelobtengan información de un nivel de seguridad másalto. Los objetos pueden actuar de forma diferente enfunción de los datos que contengan. Por este motivo,puede ser difícil determinar si las propiedades deseguridad heredadas son válidas. La poliinstanciaciónevita ataques de base de datos de inferencia.encapsulaciónLa encapsulación protege los objetos evitando elacceso directo a los datos que se encuentra en el

objeto. Esto garantiza que los datos privados esténprotegidos. Sin embargo, la encapsulación dificulta laaplicación de las directivas de seguridad adecuadas aun objeto porque es difícil determinar lo que contieneel objeto.cohesiónCohesión es un término utilizado para describircuántas tareas diferentes puede llevar a cabo unmódulo. Si se limita a un número pequeño o a unasola función, se dice que tiene una alta cohesión. Laalta cohesión es buena en el sentido de que se puedenhacer cambios en el modelo sin afectar a otrosmódulos. También facilita la reutilización del módulo.La mayor cohesión se proporciona limitando elalcance del funcionamiento de un módulo.acoplamientoEl acoplamiento describe cuánta interacción requiereun módulo desde otro módulo para hacer su trabajo.El acoplamiento bajo o suelto indica que un módulono necesita mucha ayuda de otros módulos, mientrasque el acoplamiento alto indica lo contrario. Si elmódulo A necesita esperar los resultados de losmensajes que envió a otros tres módulos antes de quepueda proceder, se dice que tiene un acoplamientoalto. Para resumir estas dos últimas secciones, lamejor programación proporciona una alta cohesión yun acoplamiento bajo.Estructuras de datosLa estructura de datos hace referencia a la relaciónlógica entre los elementos de datos. Describe hastaqué punto se asocian elementos, métodos de acceso yalternativas de procesamiento y la organización deelementos de datos. Estas relaciones pueden sersimples o complejas. Desde un punto de vista deseguridad, estas relaciones o la forma en que secomunican varios componentes de software y losformatos de datos que utilizan deben entenderse bien

para comprender las vulnerabilidades que podríanestar expuestas por estas estructuras de datos.Sistemas distribuidos orientados a objetosCuando una aplicación funciona en un marcocliente/servidor, como muchos lo hacen, la soluciónestá realizando la informática distribuida. Estosignifica que los componentes de diferentes sistemasdeben ser capaces de localizarse entre sí ycomunicarse en una red. Normalmente, la mayorparte de la solución está en el servidor y una piezamás pequeña se encuentra en el cliente. Esto requiereque alguna arquitectura admita esta comunicaciónproceso a proceso. Se pueden utilizar varios sistemasorientados a objetos distribuidos, como se describe enlas secciones siguientes.CORBACommon Object Request Broker Architecture(CORBA) es un estándar abierto orientado a objetosdesarrollado por el Grupo de Gestión de Objetos(OMG). Este estándar utiliza un componentedenominado Object Request Broker (ORB) paraimplementar intercambios entre objetos en unentorno heterogéneo y distribuido.La ORB gestiona toda la comunicación entrecomponentes. Acepta solicitudes de servicio de laaplicación cliente, dirige la solicitud al servidor y, acontinuación, retransmite la respuesta a la aplicacióncliente. La ORB hace posible la comunicación deforma local o remota. Esto es incluso posible entre loscomponentes que se escriben en diferentes idiomasporque utilizan una interfaz estándar paracomunicarse con la ORB.La ORB es responsable de hacer cumplir la directivade seguridad, que describe lo que los usuarios y elsistema pueden hacer y qué acciones estánrestringidas. Proporciona cuatro tipos de directivas:

control de acceso, protección de datos, no repetición yauditoría.COM y DCOMEl modelo de objetos componentes (COM) es unmodelo de comunicación entre procesos en el mismoequipo, mientras que, como su nombre indica, elmodelo de objetos de componente distribuido(DCOM) es un modelo de comunicación entreprocesos en diferentes partes de la red. DCOMfunciona como middleware entre estos procesosremotos (denominado comunicación entre procesos[IPC]).DCOM presta los mismos servicios que losproporcionados por el ORB en el marco corba; esdecir, conectividad de datos, servicio de mensajes yservicio de transacciones distribuidas. Todas estasfunciones están integradas en una tecnología queutiliza la misma interfaz que COM.OleLa vinculación e incrustación de objetos (OLE) es unmétodo para compartir objetos en un equipo local queusa COM como base. De hecho, OLE a veces sedescribe como el predecesor de COM. Permiteincrustar objetos en documentos (hojas de cálculo,gráficos, etc.). El término vinculación se refiere a larelación entre un programa y otro, y el términoincrustación se refiere a la colocación de datos en unprograma o documento extranjero.JavaJava Platform, Enterprise Edition (Java EE) isanother distributed component model that relies onthe Java programming language. It is a frameworkused to develop software that provides APIs fornetworking services and uses an interprocesscommunication process that is based on CORBA. Itsgoal is to provide a standardized method of providing

back-end code that carries out business logic forenterprise applications.SOAA newer approach to providing a distributedcomputing model is the service-oriented architecture(SOA). It operates on the theory of providing webbased communication functionality without eachapplication requiring redundant code to be writtenper application. It uses standardized interfaces andcomponents called service brokers to facilitatecommunication among web-based applications.Mobile CodeMobile code is a type of code that can be transferredacross a network and then executed on a remotesystem or device. The security concerns with mobilecode revolve around the prevention of the executionof malicious code without the knowledge of the user.This section covers the two main types of mobile code,Java applets and ActiveX applets, and the way theyoperate.Java AppletsA Java applet is a small component created usingJava that runs in a web browser. It is platformindependent and creates intermediate code calledbyte code that is not processor-specific. When theapplet downloads to the computer, the Java virtualmachine (JVM), which must be present on thedestination computer, converts the byte code tomachine code.The JVM executes the applet in a protectedenvironment called a sandbox. This critical securityfeature, called the Java Security Model (JSM), helpsto mitigate the extent of damage that could be causedby malicious code. However, it does not eliminate theproblem with hostile applets (also called activecontent modules), so Java applets should still be

regarded with suspicion because they might launch anintentional attack after being downloaded from theInternet.ActiveXActiveX is a Microsoft technology that uses OOP andis based on the COM and DCOM. These self-sufficientprograms, called controls, become a part of theoperating system after they’re downloaded. Theproblem is that these controls execute under thesecurity context of the current user, which in manycases has administrator rights. This means that amalicious ActiveX control could do some seriousdamage.ActiveX uses Authenticode technology to digitally signthe controls. This system has been shown to havesignificant flaws, and ActiveX controls are generallyregarded with more suspicion than Java applets.NIST SP 800-163NIST SP 800-163, “Vetting the Security of MobileApplications,” was written to help organizations (1)understand the process for vetting the security ofmobile applications, (2) plan for the implementationof an app vetting process, (3) develop app securityrequirements, (4) understand the types of appvulnerabilities and the testing methods used to detectthose vulnerabilities, and (5) determine if an app isacceptable for deployment on the organization’smobile devices.To provide software assurance for apps, organizationsshould develop security requirements that specify, forexample, how data used by an app should be secured,the environment in which an app will be deployed,and the acceptable level of risk for an app. To helpensure that an app conforms to such requirements, aprocess for evaluating the security of apps should beperformed. This process is referred to as an appvetting process. An app vetting process is a sequence

of activities that aims to determine if an app conformsto the organization’s security requirements. Thisprocess is performed on an app after the app has beendeveloped and released for distribution but prior to itsdeployment on an organization’s mobile device. Thus,an app vetting process is distinguished from softwareassurance processes that may occur during thesoftware development life cycle of an app. Note thatan app vetting process typically involves analysis of anapp’s compiled, binary representation but can alsoinvolve analysis of the app’s source code if it isavailable.An app vetting process comprises a sequence of twomain activities: app testing and appapproval/rejection.According to NIST SP 800-163, an app vettingprocess begins when an app is submitted by a mobiledevice administrator to one or more analyzers fortesting. Apps that are submitted by an administratorfor testing will typically be acquired from an app storeor an app developer, each of which may be internal orexternal to the organization. An analyzer is a service,tool, or human that tests an app for specific softwarevulnerabilities and may be internal or external to theorganization. After an app has been received andpreprocessed by an analyzer, the analyzer then teststhe app for the presence of software vulnerabilities.Such testing may include a wide variety of testsincluding static and dynamic analyses and may beperformed in an automated or manual fashion. Notethat the tests performed by an analyzer are notorganization-specific but instead are aimed atidentifying software vulnerabilities that may becommon across different apps. After testing an app,an analyzer generates a report that identifies detectedsoftware vulnerabilities. In addition, the analyzergenerates a risk assessment that estimates thelikelihood that a detected vulnerability will beexploited and the impact that the detected

vulnerability may have on the app or its related deviceor network. Risk assessments are typicallyrepresented as ordinal values indicating the severityof the risk (for example, low-, moderate-, and highrisk).After the report and risk assessment are generated byan analyzer, they are made available to one or moreauditors of the organization. The auditor inspectsreports and risk assessments from one or moreanalyzers to ensure that an app meets the securityrequirements of the organization. The auditor alsoevaluates additional criteria to determine if the appviolates any organization-specific securityrequirements that could not be ascertained by theanalyzers. After evaluating all reports, riskassessments, and additional criteria, the auditor thencollates this information into a single report and riskassessment and derives a recommendation forapproving or rejecting the app based on the overallsecurity posture of the app. This recommendation isthen made available to an approver. An approver usesthe recommendations provided by one or moreauditors that describe the security posture of the appas well as other non-security-related criteria todetermine the organization’s official approval orrejection of an app. If an app is approved by theapprover, the administrator is then permitted todeploy the app on the organization’s mobile devices.If, however, the app is rejected, the organization willfollow specified procedures for identifying a suitablealternative app or rectifying issues with theproblematic app.According to NIST SP 800-163, before anorganization can implement an app vetting process, itis necessary for the organization to first (1) developapp security requirements, (2) understand thelimitations of app vetting, and (3) procure a budgetand staff for supporting the app vetting process.

A general requirement is an app security requirementthat specifies a software characteristic or behaviorthat an app should exhibit in order to be consideredsecure. General app security requirements includeEnabling authorized functionality: The appmust work as described; all buttons, menu items,and other interfaces must work. Error conditionsmust be handled gracefully, such as when a serviceor function is unavailable (for example, disabled,unreachable, and so on).Preventing unauthorized functionality:Unauthorized functionality, such as dataexfiltration performed by malware, must not besupported.Limiting permissions: Apps should have onlythe minimum permissions necessary and shouldonly grant other applications the necessarypermissions.Protección de datos confidenciales: Lasaplicaciones que recopilan, almacenan ytransmiten datos confidenciales deben proteger laconfidencialidad e integridad de estos datos. Estacategoría incluye preservar la privacidad, comopedir permiso para usar información personal yusarla solo con fines autorizados.Protección de dependencias de código deaplicación: La aplicación debe usar cualquierdependencia, como en bibliotecas, de una manerarazonable y no por razones maliciosas.Pruebas de actualizaciones de aplicaciones:Las nuevas versiones de la aplicación debenprobarse para identificar cualquier nuevadebilidad.Un requisito contextual es un requisito de seguridadde la aplicación que especifica cómo la organización

debe usar las aplicaciones para garantizar la posturade seguridad de esa organización. Para unaaplicación, los analizadores no pueden determinar lasatisfacción o la violación de los requisitoscontextuales, sino que deben ser determinados por unauditor mediante criterios de investigación específicosde la organización. Estos criterios incluyenRequisitos: Los requisitos pertinentes, laspolíticas de seguridad, las políticas de privacidad,las políticas de uso aceptables y las directrices deredes sociales que son aplicables a la organización.Procedencia: Identidad del desarrollador,organización del desarrollador, reputación deldesarrollador, fecha recibida, revisiones deconsumidores de marketplace/app store, etc.Sensibilidad de datos: La sensibilidad relativade los datos recopilados, almacenados y/otransmitidos por la aplicación.Criticidad de la aplicación: Qué tan crítica esla aplicación para los procesos empresariales de laorganización.Usuarios de destino: El conjunto previsto deusuarios de la aplicación.Hardware de destino: La plataforma dehardware prevista y la configuración en la que seimplementará la aplicación.Entorno objetivo: El entorno operativo previstode la aplicación (por ejemplo, uso público generalfrente a entorno militar sensible).Firma digital: Firmas digitales aplicadas a losarchivos binarios o paquetes de la aplicación.Documentación de la aplicación:

Guía del usuario: Cuando está disponible, laguía del usuario de la aplicación ayuda a laspruebas especificando la funcionalidadesperada y los comportamientos esperados.Esto es simplemente una declaración deldesarrollador que describe lo que afirman quehace su aplicación y cómo lo hace.Planes de prueba: Revisar los planes deprueba del desarrollador puede ayudar aenfocar la investigación de aplicacionesmediante la identificación de cualquier área queno haya sido probada o que haya sido probadade manera inadecuada. Un desarrollador podríaoptar por enviar un oráculo de prueba en ciertassituaciones para demostrar su esfuerzo deprueba interno.Resultados de las pruebas: Los resultadosde la revisión de código y otros resultados de laspruebas indicarán qué normas de seguridad sesiguieron. Por ejemplo, si se creó un modelo deamenaza de aplicación, debe enviarse. Estoenumerará las debilidades que se identificarony deberían haberse abordado durante el diseñoy la codificación de la aplicación.Acuerdo de nivel de servicio: Si unaaplicación fue desarrollada para unaorganización por un tercero, es posible que sehaya incluido un acuerdo de nivel de servicio(SLA) como parte del contrato de proveedor.Este contrato debe requerir que la aplicaciónsea compatible con la directiva de seguridad dela organización.SEGURIDAD EN LOS CICLOS DE VIDADE DESARROLLO DE SISTEMAS YSOFTWAREAl escribir código para nuevo software, losdesarrolladores deben asegurarse de que se

implementan los controles de seguridad adecuados yde que el código está protegido correctamente. Estasección cubre el Ciclo de Vida de Desarrollo delSistema; el Ciclo de Vida de Desarrollo de Software;métodos de desarrollo de software y modelos demadurez; operación y mantenimiento; gestión delcambio; y el equipo de producto integrado.Ciclo de vida de desarrollo del sistemaCuando una organización define una nuevafuncionalidad que debe proporcionarse a sus clienteso internamente, debe crear sistemas para ofrecer esafuncionalidad. Hay que tomar muchas decisiones yseguir un proceso lógico para tomar esas decisiones.Este proceso se denomina ciclo de vida de desarrollodel sistema. En lugar de ser un enfoque azaroso, elSDLC proporciona pasos claros y lógicos a seguir paragarantizar que el sistema que surge al final delproceso de desarrollo proporcione la funcionalidadprevista con un nivel aceptable de seguridad.El Ciclo de vida de desarrollo del sistema incluye lassiguientes fases:1. iniciar2. Adquirir/Desarrollar3. instrumento4. Operar/Mantener5. disponerEn esta sección se explican las cinco fases del Ciclo devida de desarrollo del sistema.iniciar

En la fase Iniciar, se realiza que se desea o requiereuna nueva característica o funcionalidad en una piezade software existente. Esta nueva característica podríaconstituir una actualización de un producto existenteo el desarrollo de una pieza de softwarecompletamente nueva. En cualquier caso, la faseIniciar incluye tomar una decisión sobre si comprar odesarrollar el producto internamente.En esta etapa, una organización también debe teneren cuenta los requisitos de seguridad de la solución.La creación de una evaluación preliminar del riesgose puede utilizar para detallar los requisitos ypreocupaciones de confidencialidad, integridad ydisponibilidad (CIA). Identificar estos problemasdesde el principio es importante para que estasconsideraciones puedan guiar la compra o eldesarrollo de la solución. Cuanto antes se identifiqueel ciclo de vida de desarrollo del sistema, que seidentifican los requisitos de seguridad, más probablees que los problemas se aborden correctamente en elproducto final.Adquirir/DesarrollarEn la etapa de adquisición/desarrollo del Ciclo deVida de Desarrollo del Sistema, se llevan a cabo unaserie de actividades que proporcionan aportes parafacilitar la toma de una decisión sobre la adquisición odesarrollo de la solución; la organización entoncestoma una decisión sobre la solución. Las actividadesestán diseñadas para obtener respuestas a lassiguientes preguntas:¿Qué funciones necesita realizar el sistema?¿Cuáles son los riesgos potenciales para la CIAexpuestos por la solución?What protection levels must be provided to satisfylegal and regulatory requirements?

What tests are required to ensure that securityconcerns have been mitigated?How do various third-party solutions address theseconcerns?How do the security controls required by thesolution affect other parts of the com

Guía de certificados cissp, 3ª edición E v a l u a r l a e f i c a c i a d e l a se g u r i d a d d e l so f t w a r e :