Está en la página 1de 147

HP Fortify Static Code Analyzer

Versión de software: 4.40

Guía del usuario

Fecha de publicación del documento: noviembre de 2015


Fecha de publicación del software: noviembre de 2015
Guía del usuario

Avisos legales
Garantía
Las únicas garantías para los productos y servicios de HP se exponen en las declaraciones de garantía
explícita que acompañan a dichos productos y servicios. Nada de lo contenido en este documento debe
interpretarse como una garantía adicional. HP no se hará responsable de los errores técnicos ni de los
errores o las omisiones de redacción contenidos en este documento.
La información contenida en este documento está sujeta a cambios sin previo aviso.

Leyenda de derechos restringidos


Software informático confidencial. Una licencia válida de HP es obligatoria para su posesión, uso o copia.
De acuerdo con FAR 12.211 y 12.212, el software informático comercial, la documentación de software
informático y los datos técnicos para artículos comerciales se conceden con licencia al gobierno de EE. UU.
bajo la licencia comercial estándar del proveedor.
El software solo se puede utilizar para examinar software con el objetivo de detectar vulnerabilidades de
seguridad en software (i) de su propiedad; (ii) para el que disponga de una licencia de uso válida, o (iii)
para el que tenga consentimiento explícito del propietario. No se puede usar con ningún otro fin.
No puede instalar ni usar el software en ningún servidor de terceros o compartido (hospedado) sin el
consentimiento explícito del tercero.

Aviso de derechos de autor


© Copyright 2003 - 2015 Hewlett Packard Enterprise Development LP

Actualizaciones de la documentación
La página de título de este documento contiene la siguiente información de identificación:
l Número de versión del software.
l Fecha de publicación del documento, que cambia cada vez que se actualiza el documento.
l Fecha de publicación del software, que indica la fecha de publicación de esta versión del software.
Podrá encontrar buscar actualizaciones recientes o comprobar que utiliza la edición más reciente de un
documento en la siguiente página:
https://protect724.hp.com/welcome
Recibirá las ediciones actualizadas o nuevas si se suscribe al servicio de soporte técnico adecuado.
Póngase en contacto con su representante de ventas de HP para obtener más detalles.

HP Fortify Static Code Analyzer (4.40) Página 2 de 147


Guía del usuario

Contenido
Prefacio 9
Contacto con el soporte técnico de HP Fortify 9
Más información 9
Acerca de la documentación de HP Fortify Software Security Center 9

Registro de cambios 10

Capítulo 1: Introducción 11
Acerca de los componentes de HP Fortify Software Security Center 11
Acerca de HP Fortify Static Code Analyzer 11
Acerca de los analizadores 12
Acerca de HP Fortify CloudScan 13
Acerca de HP Fortify Scan Wizard 14
Documentos relacionados 14

Capítulo 2: Información general del proceso de análisis 15


Acerca del proceso de análisis 15
Acerca de la fase de conversión 16
Acerca de las sesiones de compilación móvil de SCA 17
Creación de una sesión de compilación móvil 17
Importación de una sesión de compilación móvil 17
Acerca de la fase de análisis 17
Acerca de las consideraciones de memoria 18
Acerca del análisis en paralelo 18
Acerca de la fase de verificación de conversión y análisis 19

Capítulo 3: Conversión de código Java 20


Sintaxis de la línea de comandos de Java 20
Opciones de Java/J2EE 21
Ejemplos de la línea de comandos de Java 22
Integración con Ant mediante el adaptador de compilador de SCA 22
Gestión de las advertencias de resolución 23
Advertencias de Java 23

HP Fortify Static Code Analyzer (4.40) Página 3 de 147


Guía del usuario

Uso de FindBugs 23
Conversión de aplicaciones J2EE 24
Requisitos previos para convertir código con versiones anteriores del SDK de J2EE 25
Conversión de archivos de Java 25
Conversión de proyectos JSP, archivos de configuración y descriptores de
implementación 26
Advertencias de J2EE 26
Conversión de código de bytes de Java 26

Capítulo 4: Conversión de código .NET 28


Acerca de la conversión de código .NET 28
Sintaxis de la línea de comandos de .NET 28
Opciones de la línea de comandos de .NET 29
Conversión de aplicaciones .NET sencillas 29
Conversión de proyectos de ASP.NET 1.1 (Visual Studio 2003) 30
Gestión de las advertencias de resolución 31
Acerca de las advertencias de .NET 31
Acerca de las advertencias de ASP.NET 32

Capítulo 5: Conversión de código C y C++ 33


Sintaxis de la línea de comandos de C y C++ 33
Integración de compilación 34
Modificación de un script de compilación para invocar SCA 35
Integración de compilaciones sin compatibilidad 36
Examen de código C y C++ preprocesado 36

Capítulo 6: Conversión de código ABAP 37


Acerca de la conversión de código ABAP 37
Acerca del examen de código ABAP 37
Acerca del procesamiento de INCLUDE 38
Importación de la solicitud de transporte de HP Fortify ABAP Extractor 38
Adición de SCA a la lista de favoritos 39
Ejecución de HP Fortify ABAP Extractor 40

Capítulo 7: Conversión de código Ruby 43


Sintaxis de la línea de comandos de Ruby 43
Opciones de Ruby 43
Adición de bibliotecas 44

HP Fortify Static Code Analyzer (4.40) Página 4 de 147


Guía del usuario

Adición de varias rutas de acceso a bibliotecas 44


Adición de rutas de acceso de archivos GEM 44

Capítulo 8: Conversión de Flex y ActionScript 45


Sintaxis de la línea de comandos de ActionScript 45
Opciones de la línea de comandos de Flex y ActionScript 45
Ejemplos de la línea de comandos de ActionScript 46
Acerca de la gestión de las advertencias de resolución 47
Acerca de las advertencias de ActionScript 47

Capítulo 9: Conversión de código para plataformas móviles 49


Acerca de la conversión de código Objective-C++ 49
Requisitos previos 49
Sintaxis de la línea de comandos de Objective-C++ 49
Errores de compilador de Xcode 50
Acerca de la conversión de código Google Android 50

Capítulo 10: Conversión de código COBOL 51


Preparación de los archivos de código fuente COBOL para realizar la conversión 51
Sintaxis de la línea de comandos COBOL 52
Acerca de la auditoría de exámenes de COBOL 53

Capítulo 11: Conversión de otros lenguajes 54


Acerca de la conversión de código Python 54
Opciones de la línea de comandos de Python 55
Acerca de la conversión de código ColdFusion 55
Sintaxis de la línea de comandos de ColdFusion 55
Opciones de ColdFusion 56
Acerca de la conversión de SQL 56
Ejemplo de la línea de comandos de PL/SQL 57
Ejemplo de la línea de comandos de T-SQL 57
Acerca de la conversión de raíces virtuales de ASP/VBScript 57
Ejemplo de la línea de comandos de ASP clásico 59
Ejemplo de la línea de comandos de JavaScript 59
Ejemplo de la línea de comandos de VBScript 60
Ejemplo de la línea de comandos de PHP 60

Capítulo 12: Utilidades de la línea de comandos 61

HP Fortify Static Code Analyzer (4.40) Página 5 de 147


Guía del usuario

Acerca de las utilidades de SCA 61


Otras utilidades de la línea de comandos 62
Precompilación de páginas ASP.NET de MS Visual Studio 2003 63
Comprobación de estado del examen de SCA 63
Opciones de la utilidad SCAState 63
Acerca del uso de archivos FPR 65
Combinación de archivos FPR 66
Visualización de resultados de análisis de un archivo FPR 67
Migración de datos de auditoría de versiones anteriores de FPR 70
Extracción de un archivo de código fuente de un archivo FPR 71
Acerca de la generación de informes 72
Generación de un informe BIRT 72
Generación de un informe anterior 74
Acerca de la actualización del contenido de seguridad 74
Actualización del contenido de seguridad 75

Capítulo 13: Solución de problemas y soporte 77


Uso del archivo de registro para depurar problemas 77
Acerca del mensaje de error de conversión 77
Acerca de los problemas de conversión de JSP 78
Acerca de los archivos de encabezado precompilado de C/C++ 78
Notificación de errores y solicitud de mejoras 79

Apéndice A: Interfaz de la línea de comandos 80


Opciones de salida 80
Opciones de conversión 81
Opciones de análisis 82
Directivas 84
Otras opciones 84
Especificación de archivos 85

Apéndice B: Modo de análisis en paralelo 87


Acerca del modo de análisis en paralelo 87
Requisitos de hardware 87
Configuración del modo de análisis en paralelo 87
Ejecución en modo de análisis en paralelo 88

Apéndice C: Uso de la tarea sourceanalyzer de Ant 90

HP Fortify Static Code Analyzer (4.40) Página 6 de 147


Guía del usuario

Acerca de la tarea sourceanalyzer de Ant 90


Uso de la tarea sourceanalyzer de Ant 90
Propiedades de Ant 92
Opciones de la tarea sourceanalyzer 92

Apéndice D: Filtrado del análisis 97


Acerca de los archivos de filtro 97
Ejemplo de archivo de filtro 97

Apéndice E: Integración de MSBuild 100


Configuración para la integración de MSBuild 100
Configuración de las variables de entorno de Windows para la integración sin compatibilidad
de SCA 101
Adición de tareas personalizadas en el proyecto de MSBuild 102
Adición de Fortify.TranslateTask 103
Adición de Fortify.ScanTask 104
Adición de Fortify.CleanTask 105
Adición de Fortify.SSCTask 105
Adición de Fortify.CloudScanTask 106

Apéndice F: Integración de Maven 107


Acerca del complemento Maven 107
Instalación del complemento Maven 108
Prueba del complemento Maven 108
Actualización del complemento Maven 109
Uso del complemento Maven 109
Exclusión de archivos del examen 111
Desinstalación del complemento Maven 111
Documentación adicional 111

Apéndice G: HP Fortify Scan Wizard 112


Acerca de HP Fortify Scan Wizard 112
Inicio de HP Fortify Scan Wizard 113
Inicio de Scan Wizard en un sistema con analizadores y aplicaciones de SCA instalados 113
Inicio de HP Fortify Scan Wizard como utilidad independiente 114

Apéndice H: Archivos de muestra 115


Acerca de los archivos de muestra 115

HP Fortify Static Code Analyzer (4.40) Página 7 de 147


Guía del usuario

Muestras básicas 115


Muestras avanzadas 117

Apéndice I: Ajuste de problemas 119


Detección de contenedores 119
Propagación de constantes entre procedimientos 120
Seguimiento de operaciones de asignación selectivas 120

Apéndice J: Opciones de configuración 122


Acerca de los archivos de propiedades de HP Fortify Static Code Analyzer 122
Formato del archivo de propiedades 122
Prioridad de definición de propiedades 123
fortify-sca.properties 123
fortify-sca-quickscan.properties 143

Envío de comentarios sobre la documentación 147

HP Fortify Static Code Analyzer (4.40) Página 8 de 147


Guía del usuario
Prefacio

Prefacio
Contacto con el soporte técnico de
HP Fortify
Si tiene preguntas o comentarios relacionados con el uso de este producto, póngase en contacto con el
soporte técnico de HP Fortify mediante una de las opciones siguientes.
Administrar incidencias, adquirir licencias y administrar su cuenta:
https://support.fortify.com
Enviar un correo electrónico al soporte técnico:
fortifytechsupport@hpe.com
Llamar al soporte técnico:
650 735 2215

Más información
Consulte el siguiente sitio web para obtener más información acerca de los productos HP Enterprise
Security Software: http://www.hpenterprisesecurity.com

Acerca de la documentación de HP Fortify


Software Security Center
La documentación de HP Fortify Software Security Center contiene los manuales de instalación, del
usuario y de implementación para todos los productos y los componentes de HP Fortify Software
Security Center. Además, encontrará notas técnicas y notas de la versión donde se describen
características nuevas, problemas conocidos y actualizaciones de última hora. Puede acceder a las
últimas versiones de estos documentos desde el siguiente sitio web Protect724 de la comunidad de
usuarios de HP ESP:
https://protect724.hp.com/welcome
Deberá registrarse para obtener una cuenta.

HP Fortify Static Code Analyzer (4.40) Página 9 de 147


Guía del usuario
Registro de cambios

Registro de cambios
En la siguiente tabla se reflejan los cambios realizados en esta guía.

Versión de
Software Cambio

4.40-01 Añadido:
l "Utilidades de la línea de comandos" en la página 61 (era una guía de
usuario independiente).
l "HP Fortify Scan Wizard" en la página 112 (era una nota técnica
independiente).
l "Generación de un informe BIRT " en la página 72 (utilidad de la línea de
comandos).
Actualizado:
l "Integración de Maven" en la página 107.
l "Conversión de código de bytes de Java" en la página 26.
l "Opciones de la utilidad SCAState" en la página 63.
l "Opciones de configuración" en la página 122.
Eliminado: "Acerca de las compilaciones de las líneas de comandos en Visual
Studio 6.0" (ya no se ofrece compatibilidad).

4.30-01 Actualizado:
l "Opciones de configuración" en la página 122.
l Información sobre Python.
l "Conversión de código .NET" en la página 28, con compatibilidad para
Visual Studio 2015.
l Información sobre la realización de exámenes en iOS en "Conversión de
código para plataformas móviles" en la página 49.
Añadido: sección sobre el código de bytes de Java en "Conversión de código
Java" en la página 20.

4.21-02 Eliminado: monitor de compilación (en desuso).

4.21-01 Añadido: "Conversión de código Ruby" en la página 43.


Actualizado: "Conversión de código ABAP" en la página 37.

HP Fortify Static Code Analyzer (4.40) Página 10 de 147


Capítulo 1: Introducción
Esta guía proporciona instrucciones para realizar exámenes de código con HP Fortify Static Code
Analyzer en la mayoría de las plataformas de programación. Esta guía se destina a responsables de
las auditorías de seguridad y la codificación segura.
Los temas tratados en esta sección son los siguientes:

• Acerca de los componentes de HP Fortify Software Security Center 11


• Acerca de HP Fortify Static Code Analyzer 11
• Acerca de los analizadores 12
• Acerca de HP Fortify CloudScan 13
• Acerca de HP Fortify Scan Wizard 14
• Documentos relacionados 14

Acerca de los componentes de HP Fortify


Software Security Center
HP Fortify Static Code Analyzer (SCA) es un componente de la instalación de un HP Fortify Software
Security Center. Esta instalación está formada por uno o más de los siguientes analizadores:
l HP Fortify Static Code Analyzer: analiza el código de compilación en función de un conjunto de
reglas diseñado especialmente para proporcionar la información necesaria para el tipo de análisis
que se realiza.
l HP Fortify Runtime Application Protection: supervisa y protege las aplicaciones implementadas de
ataques comunes, uso no intencionado y acceso de piratas informáticos. Además, se pueden
aplicar las mejores prácticas de seguridad (por ejemplo, la verificación de entradas y la gestión
adecuada de las excepciones) a las aplicaciones implementadas de manera uniforme.
l HP WebInspect Agent: identifica vulnerabilidades en las aplicaciones antes de su implementación,
durante el control de calidad, lo que evita la exposición a errores de seguridad antes de que sean
descubiertos.

Acerca de HP Fortify Static Code Analyzer


SCA es un conjunto de analizadores de seguridad de software que buscan infracciones de las reglas y
los criterios de codificación relacionados específicamente con la seguridad en distintos lenguajes. La
tecnología del lenguaje de SCA proporciona datos completos que permiten a los analizadores localizar
y priorizar infracciones para que las correcciones sean rápidas y precisas. SCA produce información
sobre los análisis que le ayuda a producir software más seguro, así como a hacer las revisiones del
código de seguridad más eficaces, uniformes y completas. Su diseño le permite incorporar
rápidamente nuevas reglas de seguridad de terceros y específicas para los clientes.

HP Fortify Static Code Analyzer (4.40) Página 11 de 147


Guía del usuario
Capítulo 1: Introducción

En su nivel más alto, la utilización de SCA implica:


1. Determinar que SCA se ejecute como proceso independiente o integrar SCA como parte de la
herramienta de compilación.
2. Convertir el código fuente a un formato intermedio convertido.
3. Examinar el código convertido y producir informes sobre vulnerabilidades de seguridad.
4. Auditar los resultados del examen, bien transfiriendo el archivo FPR resultante a HP Fortify Audit
Workbench o HP Fortify Software Security Center para su análisis o mostrando directamente los
resultados en pantalla.

Nota: Para obtener información sobre cómo transferir los resultados a HP Fortify Audit
Workbench, consulte la Guía del usuario de HP Fortify Audit Workbench.

Acerca de los analizadores


SCA cuenta con siete analizadores de vulnerabilidad: Búfer, configuración, contenido, flujo de control,
flujo de datos, semántico y estructural. Cada uno acepta un tipo distinto de regla que está
especialmente diseñada para proporcionar la información necesaria para el tipo de análisis
correspondiente que se realiza. Las reglas son definiciones que identifican elementos del código fuente
que no son seguros o que bien podrían producir vulnerabilidades de seguridad.
El proceso de instalación descarga y actualiza el contenido de seguridad de HP Fortify (paquetes de
reglas de codificación segura y metadatos externos) que SCA utiliza en el sistema. HP Fortify
Customer Portal ofrece contenido relacionado con la seguridad actualizado de forma regular.
En la siguiente tabla se muestra y se describe cada uno de los analizadores de SCA.

Analizador Descripción

Búfer El analizador de búfer detecta las vulnerabilidades de desbordamiento relacionadas


con la escritura o la lectura de una mayor cantidad de datos que los admitidos por un
búfer. El búfer puede estar asignado a una pila o a un montón. El analizador de búfer
utiliza un análisis limitado entre procedimientos para determinar la existencia de una
condición que produzca el desbordamiento del búfer. Si existe alguna ruta de
acceso de ejecución a un búfer que produzca desbordamiento, SCA la indica como
vulnerabilidad de desbordamiento y señala las variables que podrían producirlo. Si el
valor de la variable que produce el desbordamiento del búfer está contaminado
(controlado por el usuario), SCA lo indica también y muestra el seguimiento del flujo
de datos para mostrar cómo se contamina la variable.

Configuración El analizador de configuración busca errores, puntos débiles e infracciones de


directivas en los archivos de configuración de implementación de una aplicación.
Por ejemplo, el analizador de configuración busca tiempos de espera razonables en
las sesiones de usuario de una aplicación web.

Contenido El analizador de contenido busca problemas de seguridad e infracciones de


directivas en el contenido HTML. Además de las páginas HTML estáticas, el
analizador de contenido realiza estas comprobaciones en archivos con HTML
dinámico, como archivos PHP, JSP y ASP clásicos.

HP Fortify Static Code Analyzer (4.40) Página 12 de 147


Guía del usuario
Capítulo 1: Introducción

Analizador Descripción

Flujo de El analizador de flujo de control detecta secuencias de operaciones potencialmente


control peligrosas. Mediante el análisis de rutas de acceso de flujo de control de un
programa, el analizador de flujo de control determina si un conjunto de operaciones
se ejecuta en un orden determinado. Por ejemplo, el analizador de flujo de control
detecta problemas con el tiempo de comprobación o el tiempo de uso y variables sin
inicializar, y comprueba si las utilidades, como los lectores XML, están
configuradas correctamente antes de ser utilizadas.

Flujo de datos El analizador de flujo de datos detecta posibles vulnerabilidades que involucra el uso
de datos contaminados (entrada controlada por el usuario) que puede resultar
peligroso. El analizador de flujo de datos utiliza un análisis de propagación de
contaminación entre procedimientos y global para detectar el flujo de datos entre el
origen (ubicación de la entrada del usuario) y un receptor (llamada de función u
operación peligrosas). Por ejemplo, el analizador de flujo de datos detecta si una
cadena de entrada controlada por el usuario de longitud ilimitada se copia en un
búfer de tamaño estático, y detecta si la cadena controlada por el usuario se utiliza
para construir el texto de una consulta SQL.

Semántico El analizador semántico detecta usos potencialmente peligrosos de funciones y API


entre procedimientos. Su lógica especializada busca problemas de desbordamiento
del búfer, cadenas de formato y ruta de acceso de ejecución, aunque no se limita a
estas categorías. Por ejemplo, el analizador semántico detecta funciones obsoletas
en Java y funciones no seguras en C/C++, como gets().

Estructural El analizador estructural detecta errores potencialmente peligrosos en la estructura


o la definición del programa. Gracias a que comprende la forma en la que se
estructuran los programas, el analizador estructural identifica infracciones en las
técnicas y prácticas de programación seguras, las cuales suelen ser difíciles de
detectar mediante la inspección debido a que abarcan un ámbito amplio que va
desde la declaración hasta el uso de variables y funciones. Por ejemplo, el
analizador estructural detecta la asignación de variables de miembros en servlets de
Java, identifica el uso de registradores no declarados como finales estáticos y
marca las instancias de código no alcanzado, aquel que nunca se ha ejecutado
porque su predicado siempre es falso.

Acerca de HP Fortify CloudScan


Con HP Fortify CloudScan (CloudScan), puede administrar sus recursos descargando la fase de
examen del análisis, que utiliza de forma intensiva el procesador, de las máquinas de compilación y
trasladarla a una nube de máquinas preparada para este propósito.
Después de que se complete la fase de conversión en la máquina de compilación, CloudScan genera
una sesión de compilación móvil y la desplaza a una máquina disponible para el examen. Además de
liberar las máquinas de compilación, este proceso facilita el crecimiento del sistema añadiendo más
recursos a la nube según sean necesarios, sin tener que interrumpir el proceso de compilación.
Además, los usuarios de Software Security Center pueden hacer que CloudScan cree el archivo FPR
directamente en el servidor.

HP Fortify Static Code Analyzer (4.40) Página 13 de 147


Guía del usuario
Capítulo 1: Introducción

Para obtener más información sobre HP Fortify CloudScan, consulte la Guía del usuario para la
instalación y configuración de HP Fortify CloudScan.

Acerca de HP Fortify Scan Wizard


HP Fortify Scan Wizard es una utilidad que le permite preparar y examinar código de proyecto de forma
fácil y rápida mediante SCA. Scan Wizard le permite ejecutar los exámenes de forma local o, si utiliza
HP Fortify CloudScan, en una nube de equipos preparada para encargarse de la fase de examen del
análisis, que utiliza de forma intensiva el procesador.
Para obtener más información, consulte "Acerca de HP Fortify Scan Wizard" en la página 112.

Documentos relacionados
Los siguientes documentos proporcionan información adicional sobre HP Fortify Static Code Analyzer:
l Guía de instalación de HP Fortify Static Code Analyzer
Este documento proporciona información sobre la instalación de HP Fortify Static Code Analyzer y
las aplicaciones.
l Requisitos del sistema de HP Fortify Software Security Center
Este documento contiene información sobre los requisitos de hardware y software, lenguajes
admitidos, compiladores y herramientas de compilación para HP Fortify Static Code Analyzer.
l Guía de rendimiento de HP Fortify Static Code Analyzer
Este documento proporciona información para seleccionar el hardware necesario para examinar
bases de código específicas, optimizar el uso de la memoria y mejorar el rendimiento.

HP Fortify Static Code Analyzer (4.40) Página 14 de 147


Capítulo 2: Información general del
proceso de análisis
Los temas tratados en esta sección son los siguientes:

• Acerca del proceso de análisis 15


• Acerca de la fase de conversión 16
• Acerca de las sesiones de compilación móvil de SCA 17
• Acerca de la fase de análisis 17
• Acerca de las consideraciones de memoria 18
• Acerca del análisis en paralelo 18
• Acerca de la fase de verificación de conversión y análisis 19

Acerca del proceso de análisis


El proceso de análisis de código fuente de SCA está conformado por cuatro fases distintas:
1. Integración de compilación: determine si SCA se integra en el sistema compilador de la
compilación. Para obtener descripciones sobre las opciones de integración de compilación,
consulte "Integración con Ant mediante el adaptador de compilador de SCA" en la página 22, "Uso
de la tarea sourceanalyzer de Ant" en la página 90, "Integración de compilación" en la página 34
para C y C++, "Integración de Maven" en la página 107 y "Integración de MSBuild" en la página
100.
2. Conversión: reúna el código fuente utilizando una serie de comandos y conviértalo a un formato
intermedio asociado con un id. de compilación. El id. de compilación suele ser el nombre del
proyecto que se está examinando. Para obtener más información, consulte "Acerca de la fase de
conversión" En la página siguiente.
3. Análisis: examine los archivos de código fuente identificados durante la fase de conversión y
genere un archivo de resultados de análisis (normalmente en el formato de Proyecto de HP Fortify
(FPR)). Los archivos FPR tienen la extensión .fpr. Para obtener más información, consulte
"Acerca de la fase de análisis" en la página 17.
4. Verificación de conversión y análisis: compruebe que los archivos de código fuente se han
examinado con los paquetes de reglas correctos y que no se han registrado errores. Para obtener
más información, consulte "Acerca de la fase de verificación de conversión y análisis" en la
página 19.
A continuación, se ofrece un ejemplo de la secuencia de comandos que utiliza para analizar el código:

sourceanalyzer -b <build_id> -clean


sourceanalyzer -b <build_id> ...
sourceanalyzer -b <build_id> -scan -f results.fpr

HP Fortify Static Code Analyzer (4.40) Página 15 de 147


Guía del usuario
Capítulo 2: Información general del proceso de análisis

Para analizar varias compilaciones de forma simultánea, añada las compilaciones adicionales como
parámetros:

sourceanalyzer -b <build_id1> -b <build_id2> -b <build_id3> -scan -f results.fpr

Acerca de la fase de conversión


La sintaxis básica de la línea de comandos para realizar el primer paso del proceso de análisis, la
conversión de los archivos, es la siguiente:

sourceanalyzer -b <build_id> ...<files>

O bien

sourceanalyzer -b <build_id> ... <compiler_command>

La fase de conversión está compuesta de una o varias invocaciones de SCA con el comando
sourceanalyzer. Se utiliza un id. de compilación (opción -b) para unir las invocaciones. Las
siguientes invocaciones de sourceanalyzer añaden cualquier archivo de código fuente o de
configuración recién especificados a la lista de archivos asociados con el id. de compilación.
Después de la conversión, puede utilizar la directiva -show-build-warnings para enumerar todos los
errores y las advertencias encontrados durante la fase de conversión:

sourceanalyzer -b <build_id> -show-build-warnings

Para obtener todos los archivos asociados con un id. de compilación concreto, utilice la directiva -
show-files:

sourceanalyzer -b <build_id> -show-files

Los siguientes capítulos describen cómo convertir distintos tipos de código fuente:
l "Conversión de código Java" en la página 20.
l "Conversión de código .NET" en la página 28.
l "Conversión de código C y C++" en la página 33.
l "Conversión de código ABAP" en la página 37.
l "Conversión de código Ruby" en la página 43.
l "Conversión de Flex y ActionScript" en la página 45.
l "Conversión de código para plataformas móviles" en la página 49.
l "Conversión de otros lenguajes" en la página 54.

HP Fortify Static Code Analyzer (4.40) Página 16 de 147


Guía del usuario
Capítulo 2: Información general del proceso de análisis

Acerca de las sesiones de compilación


móvil de SCA
Una sesión de compilación móvil de SCA permite convertir un proyecto en una máquina y analizarlo en
otra. Cuando crea una sesión de compilación móvil de SCA, se crea un archivo MBS que incluye los
archivos necesarios para la fase de análisis en el directorio de la sesión de compilación. En ese
momento, ya puede trasladar el archivo MBS a una máquina distinta para realizar el análisis.
La versión de SCA, tanto en la máquina de conversión como en la de análisis, debe ser compatible
cuando se utilicen sesiones de compilación móvil. El número de versión de SCA sigue el patrón:
principal.secundaria+revisión.número_de_compilación (por ejemplo, 6.40.0089). Las versiones de
SCA deben coincidir con las partes "principal" y "secundaria" del número de versión (por ejemplo: 6.40
y 6.4x son compatibles).

Creación de una sesión de compilación móvil


En la máquina en la que se ha realizado la conversión, emita el siguiente comando para generar una
sesión de compilación móvil de SCA:

sourceanalyzer -b <build_id> -export-build-session <file.mbs>

En este comando, <file.mbs> es el nombre de archivo que asigna a la sesión de compilación móvil de
SCA.

Importación de una sesión de compilación móvil


Una vez que traslada el archivo MBS a la máquina en la que desea ejecutar el análisis, escriba el
siguiente comando:

sourceanalyzer -import-build-session <file.mbs>

En este comando, <file.mbs> es la sesión de compilación móvil de SCA.


Una vez que haya importado su sesión de compilación móvil de SCA, podrá pasar a la fase de análisis.

Acerca de la fase de análisis


En la fase de análisis, se examinan los archivos intermedios creados durante la conversión y se crea el
archivo de resultados de vulnerabilidad. La fase de análisis consisten de una invocación de
sourceanalyzer. Especifique el id. de compilación e incluya la directiva -scan y cualquier análisis u
opciones de salida necesarios (consulte "Opciones de análisis" en la página 82 y "Opciones de salida"
en la página 80).

HP Fortify Static Code Analyzer (4.40) Página 17 de 147


Guía del usuario
Capítulo 2: Información general del proceso de análisis

La sintaxis básica de la línea de comandos para la fase de análisis es la siguiente:

sourceanalyzer -b <build_id> -scan -f results.fpr

Nota: De forma predeterminada, SCA incluye el código fuente del archivo FPR.

Para combinar varias compilaciones en un único examen, añada las compilaciones adicionales a la
línea de comandos:

sourceanalyzer -b <build_id1> -b <build_id2> -b <build_id3> -scan -f results.fpr

Acerca de las consideraciones de memoria


Cuando ejecuta SCA, la cantidad de RAM física necesaria depende de varios factores. Estos factores,
que incluyen el tamaño y la complejidad del archivo de código fuente, hacen imposible la cuantificación
y la obtención de pautas. La situación de cada cliente es única. Si se produce un error de memoria baja,
puede que aumentar la memoria disponible para SCA resuelva el problema.
De forma predeterminada, SCA utiliza hasta 1800 MB de memoria. Si esto no es suficiente para
analizar una base de código concreta, puede que tenga que proporcionar más memoria en la fase de
examen. Utilice la opción sourceanalyzer -Xmx para especificar la cantidad de memoria para un
examen.
Por ejemplo, para que haya 32 GB disponibles para SCA, incluya la opción -Xmx32G.
También puede utilizar la variable de entorno SCA_VM_OPTS para definir la asignación de memoria.

Importante: No asigne más memoria a SCA de la que tiene disponible la máquina, ya que esto
reduce el rendimiento. En general, suponiendo que no haya otros procesos que consuman
memoria de forma intensiva, no asigne más de 2/3 de la memoria física disponible.

Acerca del análisis en paralelo


A partir de la versión 4.00 de Software Security Center, SCA admite el procesamiento paralelo en
proyectos grandes. Si el examen del proyecto dura más de una o dos horas, puede reducir este tiempo
habilitando el procesamiento paralelo. El procesamiento paralelo permite aprovechar varias CPU y
varios núcleos en una única máquina, además de permitir un ajuste automático de la memoria.
Para obtener información sobre cómo habilitar el análisis en paralelo en sus proyectos, consulte "Modo
de análisis en paralelo" en la página 87.

HP Fortify Static Code Analyzer (4.40) Página 18 de 147


Guía del usuario
Capítulo 2: Información general del proceso de análisis

Acerca de la fase de verificación de


conversión y análisis
La función Result Certification de HP Fortify Audit Workbench verifica que el análisis se haya
completado. El resumen del proyecto en Audit Workbench muestra información específica acerca del
código de SCA examinado, la cual incluye:
l Lista de archivos examinados, con tamaños de archivo y marcas de tiempo.
l Classpath de Java utilizada para la conversión.
l Lista de paquetes de reglas utilizados para el análisis.
l Lista de opciones de la línea de comandos y ajustes de tiempo de ejecución de SCA.
l Lista de errores o advertencias producidos durante la conversión o el análisis.
l Información sobre la máquina y la plataforma.
Para obtener información sobre la certificación de resultados, abra el archivo FPR en Audit Workbench
y seleccione Tools > Project Summary > Certification. Para obtener más información, consulte
Guía del usuario de HP Fortify Audit Workbench.

HP Fortify Static Code Analyzer (4.40) Página 19 de 147


Capítulo 3: Conversión de código Java
Los temas tratados en esta sección son los siguientes:

• Sintaxis de la línea de comandos de Java 20


• Integración con Ant mediante el adaptador de compilador de SCA 22
• Gestión de las advertencias de resolución 23
• Uso de FindBugs 23
• Conversión de aplicaciones J2EE 24
• Conversión de código de bytes de Java 26

Sintaxis de la línea de comandos de Java


La sintaxis básica de la línea de comandos para convertir código Java es la siguiente:

sourceanalyzer -b <build_id> -cp <classpath> <file_list>

Cuando se trata de código Java, SCA puede emular el compilador, lo que puede favorecer la
integración de la compilación, o bien puede aceptar los archivos de código fuente directamente, lo que
resulta más conveniente en exámenes de la línea de comandos.
Para indicar a SCA que emule el compilador, escriba lo siguiente:

sourceanalyzer -b <build_id> javac [<translation options>]

Para pasar archivos directamente a SCA, escriba lo siguiente:

sourceanalyzer -b <build_id> -cp <classpath> [<translation options>]


<files>|<file specifiers>

En este caso:
l <translation options> corresponde a las opciones que se pasan al compilador.
l -cp <classpath> especifica la classpath que se utiliza para el código fuente Java. Classpath es la
ruta de acceso donde Java Runtime Environment busca clases y otros archivos de recursos. El
formato es el mismo que el que espera javac (es decir, una lista de rutas de acceso separadas por
dos puntos o por punto y coma). Puede utilizar especificadores de archivo de SCA, tal como se
muestra en el siguiente ejemplo:

-cp "build/classes:lib/*.jar"

Para obtener más información, consulte "Opciones de Java/J2EE" En la página siguiente. Para
obtener información sobre los especificadores de archivo, consulte "Especificación de archivos" en la
página 85.

HP Fortify Static Code Analyzer (4.40) Página 20 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

Opciones de Java/J2EE
En la siguiente tabla se describen las opciones de Java/J2EE.

Opciones de Java/J2EE Descripción

-appserver Especifica el servidor de aplicaciones para procesar archivos


weblogic | websphere JSP.

-appserver-home <path> Especifica el inicio del servidor de aplicaciones.


l En Weblogic, esta es la ruta de acceso al directorio que
contiene el directorio server/lib.
l En WebSphere, se trata de la ruta de acceso al directorio que
contiene el script JspBatchCompiler.

-appserver-version <version> Especifica la versión del servidor de aplicaciones. Consulte el


documento Requisitos del sistema de HP Fortify Software
Security Center para conocer las versiones compatibles.

-cp <classpath> | Especifica la classpath que se debe utilizar para analizar el


-classpath <classpath> código fuente Java. El formato es el mismo que javac: una lista
de rutas de acceso separadas por dos puntos o por punto y
coma. Puede utilizar los especificadores de archivo de SCA.

-extdirs <dirs> De manera similar a la opción extdirs de javac, acepta una


lista de directorios separados por dos puntos o por punto y
coma. Los archivos JAR que se encuentren en estos
directorios se incluyen de manera implícita en la classpath.

-java-build-dir <dirs> Especifica uno o más directorios en los que se han compilado
los códigos fuente Java. Debe especificar esta opción en los
resultados de FindBugs, tal como se describe en "Opciones de
análisis" en la página 82.

-source <version> |  Indica la versión de JDK para la cual se escribe el código Java.
-jdk <version> Los valores válidos de <version> son 1.4, 1.5, 1.6, 1.7 y 1.8.
El valor predeterminado es 1.5.

-sourcepath <dir> Especifica la ubicación de los archivos de código fuente que no


se incluyen en el examen, sino que se utilizan para la resolución
de nombres. La ruta de acceso de código fuente es similar a
classpath, pero usa archivos de código fuente en lugar de
archivos de clase para la resolución.

HP Fortify Static Code Analyzer (4.40) Página 21 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

Ejemplos de la línea de comandos de Java


Para convertir un único archivo denominado MyServlet.java utilizando j2ee.jar como la classpath,
escriba lo siguiente:

sourceanalyzer -b MyServlet -cp lib/j2ee.jar MyServlet.java

Para convertir todos los archivos .java del directorio src utilizando todos los archivos .jar del
directorio lib como una classpath, escriba lo siguiente:

sourceanalyzer -b MyProject -cp "lib/*.jar" "src/**/*.java"

Para convertir y compilar el archivo MyCode.java utilizando el compilador javac, escriba lo siguiente:

sourceanalyzer -b MyProject javac -classpath libs.jar MyCode.java

Integración con Ant mediante el adaptador


de compilador de SCA
SCA proporciona un adaptador de compilador de Ant que se puede usar para convertir archivos de
código fuente Java si los proyectos utilizan un archivo de compilación de Ant. Para que esta
integración sea posible, es necesario definir dos propiedades de Ant. Esto puede hacerse en la línea de
comandos sin modificar el archivo build.xml de Ant. Cuando se ejecuta la compilación, SCA
intercepta todas las invocaciones de tareas javac y convierte los archivos de código fuente Java a
medida que se van compilando.

Nota: En otro paso, debe convertir todos los archivos JSP, los archivos de configuración o
cualquier otro archivo de código fuente que no sea Java que forme parte de la aplicación.

Para utilizar el adaptador de compilador de Ant, realice lo siguiente:


l Asegúrese de que el ejecutable de sourceanalyzer se encuentre en el sistema PATH.
l Establezca la propiedad build.compiler en com.fortify.dev.ant.SCACompiler.
l Establezca la propiedad sourceanalyzer.buildid en el id. de compilación.
El siguiente ejemplo muestra cómo ejecutar una compilación de Ant mediante el adaptador de
compilador de Ant sin modificar el archivo de compilación:

ant -Dbuild.compiler=com.fortify.dev.ant.SCACompiler
-Dsourceanalyzer.buildid=MyBuild
-lib <Installation_Dir>/Core/lib/sourceanalyzer.jar

La opción -lib está disponible en la versión 1.6 o posterior de Ant.


También puede utilizar la siguiente versión abreviada para ejecutar Ant con el adaptador de compilador:

sourceanalyzer -b <build_id> ant [<ant_options>]

HP Fortify Static Code Analyzer (4.40) Página 22 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

De forma predeterminada, se asignan 1800 MB de memoria a SCA para la conversión. Para aumentar
la asignación de memoria cuando utilice el adaptador de compilador de SCA, utilice la opción
-Dsourceanalyzer.maxHeap del siguiente modo:

ant -Dbuild.compiler=com.fortify.dev.ant.SCACompiler
-Dsourceanalyzer.buildid=MyBuild
-lib <Installation_Dir>/Core/lib/sourceanalyzer.jar
-Dsourceanalyzer.maxHeap=2000M

Gestión de las advertencias de resolución


Para ver todas las advertencias generadas durante la compilación, escriba el siguiente comando antes
de iniciar la fase de examen:

sourceanalyzer -b <build_id> -show-build-warnings

Advertencias de Java
Es posible que vea las siguientes advertencias relacionadas con Java:
Unable to resolve type...

Unable to resolve function...

Unable to resolve field...

Unable to locate import...

Unable to resolve symbol...

Multiple definitions found for function...

Multiple definitions found for class...

Estas advertencias suelen producirse debido a que faltan recursos. Por ejemplo, se pueden producir
porque no se han especificado algunos de los archivos de clase y .jar necesarios para compilar la
aplicación. Para resolver las advertencias, asegúrese de incluir todos los archivos necesarios que
utiliza la aplicación.

Uso de FindBugs
FindBugs (http://findbugs.sourceforge.net) es una herramienta de análisis estático que detecta
problemas de calidad en el código Java. Si ejecuta FindBugs con SCA, los resultados se integran en el
archivo de resultados de análisis. A diferencia de SCA, que se ejecuta en archivos de código fuente
Java, FindBugs se ejecuta en código de bytes de Java. Por lo tanto, antes de ejecutar un análisis en el
proyecto, primero debe compilar el proyecto y generar los archivos de clase.

HP Fortify Static Code Analyzer (4.40) Página 23 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

Para obtener un ejemplo de cómo ejecutar FindBugs automáticamente con SCA, compile el código de
ejemplo Warning.java del siguiente modo:
1. Vaya al siguiente directorio:

<Installation_Dir>/Samples/advanced/findbugs

2. Escriba los siguientes comandos para compilar la muestra:

mkdir build

javac -d build Warning.java

3. Examine la muestra con FindBugs y SCA del siguiente modo:

sourceanalyzer -b findbugs_sample -java-build-dir build Warning.java

sourceanalyzer -b findbugs_sample -scan -findbugs -f findbugs_sample.fpr

4. Examine los resultados del análisis en HP Fortify Audit Workbench:

auditworkbench findbugs_sample.fpr

La salida contiene las siguientes categorías de problema:


l Bad casts of Object References (1).
l Dead local store (2).
l Equal objects must have equal hashcodes (1).
l Object model violation (1).
l Unwritten field (2).
l Useless self-assignment (2).
Si los agrupa por analizador, podrá observar que el analizador estructural de SCA generó un problema y
que FindBugs generó ocho. El problema Object model violation que SCA ha producido en la línea
25 es similar al problema Equal objects must have equal hash codes que ha producido FindBugs.
Además, FindBugs produce dos conjuntos de problemas (Useless self-assignment y Dead local
store), los cuales están relacionados con las mismas vulnerabilidades en las líneas 6 y 7. Para evitar
la superposición de resultados, aplique el archivo de filtro filter.txt durante el examen mediante la
opción -filter. Tenga en cuenta que no se realizará un filtrado completo, ya que cada herramienta
filtra con un nivel de granularidad distinto. Para determinar cómo puede evitar la superposición de
resultados, examine el código de ejemplo con filter.txt del siguiente modo:

sourceanalyzer -b findbugs_sample -scan -findbugs -filter filter.txt


-f findbugs_sample.fpr

Conversión de aplicaciones J2EE


Para convertir aplicaciones J2EE, es necesario procesar archivos de código fuente Java y
componentes de J2EE, como archivos JSP, descriptores de implementación y archivos de
configuración. Si bien es posible procesar todos los archivos pertinentes de una aplicación J2EE

HP Fortify Static Code Analyzer (4.40) Página 24 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

mediante un proceso de un solo paso, es posible que su proyecto requiera la división del procedimiento
en sus componentes, ya sea para integrarlos en un proceso de compilación o para satisfacer las
necesidades de diversas partes interesadas dentro de la organización. En las siguientes secciones se
ofrece información sobre cada uno de los componentes y, a continuación, se describe un proceso todo
en uno.

Requisitos previos para convertir código con


versiones anteriores del SDK de J2EE
Para convertir código desarrollado con una versión del SDK de J2EE anterior a la versión 1.5, debe
agregar la siguiente lista de archivos JAR a la classpath:

commons-logging.jar
j2ee.jar
jasper2_jasper-runtime.jar
xercesImpl-2.0.2.jar

Puede que también se requieran las siguientes bibliotecas de etiquetas JSP:

commons-validator.jar
jsp-api.jar
jstl.jar
log4j-1.2.9.jar
saxpath.jar
standard.jar
struts.jar
struts-el.jar

También puede incluir los archivos de biblioteca de etiquetas JSP en un subdirectorio denominado
jsp_tag_lib.
Para agregar los archivos, utilice la opción classpath (-cp).

Nota: En las versiones de SCA anteriores a la versión 4.10, los archivos JAR enumerados
anteriormente se incluían en el directorio <Installation_Dir>/Core/default_jars.

Para identificar uno o varios directorios en los que SCA debería buscar archivos cada vez que se
ejecuta un examen, debe establecer la propiedad com.fortify.sca.DefaultJarsDirs en el archivo
fortify-sca.properties. Para obtener más información, consulte "fortify-sca.properties" en la
página 123.

Conversión de archivos de Java


Para convertir aplicaciones J2EE, siga el mismo procedimiento de conversión de archivos de Java.
Para obtener ejemplos, consulte "Ejemplos de la línea de comandos de Java" en la página 22.

HP Fortify Static Code Analyzer (4.40) Página 25 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

Conversión de proyectos JSP, archivos de


configuración y descriptores de implementación
Además de convertir archivos de Java en la aplicación J2EE, es posible que también necesite
convertir archivos JSP, archivos de configuración y descriptores de implementación. Los archivos JSP
deben formar parte de un archivo de aplicaciones web (WAR). Si el directorio de código fuente ya está
organizado como WAR, puede convertir los archivos JSP directamente desde el directorio de origen.
De lo contrario, es posible que necesite implementar la aplicación y convertir los archivos JSP desde el
directorio de implementación.
Por ejemplo:

sourceanalyzer -b <build_id> /**/*.jsp /**/*.xml

En el ejemplo anterior, /**/*.jsp hace referencia a la ubicación de los archivos de proyecto JSP y
/**/*.xml hace referencia a la ubicación de los archivos de configuración y los archivos de
descriptores de implementación.

Advertencias de J2EE
Es posible que reciba las siguientes advertencias relativas a aplicaciones J2EE:
Could not locate the root (WEB-INF) of the web application. Please build your web
application and try again. Failed to parse the following jsp files:

<list of .jsp file names>

Esta advertencia indica que la aplicación web no se ha implementado en el formato de directorio WAR
estándar o que no contiene el conjunto completo de bibliotecas requeridas. Para resolver la
advertencia, asegúrese de que la aplicación web tiene un formato de directorio WAR seccionado con
directorios WEB-INF/lib y WEB-INF/classes correctos, los cuales deben contener todos los archivos
.jar y .class necesarios para la aplicación. Asegúrese además de que dispone de todos los archivos
TLD para todas las etiquetas, así como de los archivos JAR correspondientes con sus
implementaciones de etiqueta.

Conversión de código de bytes de Java


Además de convertir el código fuente, puede convertir el código de bytes del proyecto. Debe
especificar dos propiedades de configuración e incluir los archivos de código de bytes para la fase de
conversión de SCA.
Para obtener un resultado óptimo, HP Fortify recomienda compilar el código de bytes con información
de depuración completa (javac -g).

HP Fortify Static Code Analyzer (4.40) Página 26 de 147


Guía del usuario
Capítulo 3: Conversión de código Java

Realice los siguientes pasos para incluir el código de bytes en la conversión de SCA:
1. Agregue las siguientes propiedades al archivo fortify-sca.properties (o incluya estas
propiedades en la línea de comandos mediante la opción -D):

com.fortify.sca.fileextensions.class=BYTECODE
com.fortify.sca.fileextensions.jar=ARCHIVE

Esto especifica la manera en que SCA procesa los archivos .class y .jar.
2. En la fase de conversión del proceso de análisis de SCA, incluya los archivos de código de bytes
de Java que desee convertir. Para obtener un rendimiento óptimo, especifique solamente los
archivos .jar o .class que deben ser examinados.
En el siguiente ejemplo, se convierten los archivos .class:

sourceanalyzer -b MyProject -cp "lib/*.jar" "src/**/*.class"

HP Fortify recomienda no convertir código de bytes de Java y código JSP/Java en una misma
llamada a sourceanalyzer. Utilice varias invocaciones de sourceanalyzer con el mismo id. de
compilación al convertir un proyecto que contenga tanto código de bytes como código
JSP/Java que desee examinar.

HP Fortify Static Code Analyzer (4.40) Página 27 de 147


Capítulo 4: Conversión de código
.NET
Los temas tratados en esta sección son los siguientes:

• Acerca de la conversión de código .NET 28


• Sintaxis de la línea de comandos de .NET 28
• Conversión de aplicaciones .NET sencillas 29
• Conversión de proyectos de ASP.NET 1.1 (Visual Studio 2003) 30
• Gestión de las advertencias de resolución 31

Acerca de la conversión de código .NET


En este capítulo se describe el uso de SCA para convertir aplicaciones Microsoft Visual Studio .NET y
ASP.NET compiladas con:
l .NET 1.1 y versiones posteriores
l Visual Studio 2010
l Visual Studio 2012
l Visual Studio 2013
l Visual Studio 2015
SCA funciona con el Lenguaje intermedio común (CIL) y, por lo tanto, admite todos los lenguajes .NET
que compilan en CIL, como C# y VB .NET.

Nota: La forma más sencilla de analizar una aplicación .NET consiste en utilizar HP Fortify
Package for Microsoft Visual Studio, que automatiza el proceso de recopilación de información
acerca del proyecto.

Sintaxis de la línea de comandos de .NET


HP Fortify recomienda usar el símbolo del sistema de Visual Studio para ejecutar estos comandos. Si
realiza compilaciones de la línea de comandos con Visual Studio .NET, puede integrar el análisis
estático colocando la línea de comandos de compilación en una invocación de sourceanalyzer. Para
que esto funcione, debe utilizar la versión de HP Fortify Package for Microsoft Visual Studio
correspondiente a la versión de Visual Studio que tenga instalada.
El siguiente ejemplo muestra la sintaxis de la línea de comandos de Visual Studio .NET:

sourceanalyzer -b my_buildid devenv Sample1.sln /REBUILD debug

HP Fortify Static Code Analyzer (4.40) Página 28 de 147


Guía del usuario
Capítulo 4: Conversión de código .NET

Ejecuta la fase de conversión en todos los archivos compilados por Visual Studio. Asegúrese de
recompilar o de realizar una limpieza para que se incluyan todos los archivos. A continuación, puede
ejecutar la fase de análisis, como en el siguiente ejemplo:

sourceanalyzer -b my_buildid -scan -f results.fpr

Opciones de la línea de comandos de .NET


En la siguiente tabla se describen las opciones de la línea de comandos de .NET.

Opciones de .NET Descripción

-libdirs <dirs> Especifica una lista de directorios separados por punto y coma en la que
se encuentran las DLL del sistema o de terceros.

-dotnet-sources Especifica dónde se encuentran los archivos de código fuente, por si se


<directory name> requiere información adicional. Esta opción se pasa automáticamente
desde HP Fortify Package for Microsoft Visual Studio y Audit
Workbench, pero el usuario debe proporcionarla al ejecutar SCA
manualmente.
Esta opción hace que SCA intente encontrar las clases, las
enumeraciones o las interfaces de .NET que no están declaradas de
manera explícita en el proyecto compilado.

-vsversion <version> Especifica el número de versión correspondiente a la versión de Visual


Studio que se está usando.
l Visual Studio 2010: 10.0
l Visual Studio 2012: 11.0
l Visual Studio 2013: 12.0
l Visual Studio 2015: 14.0

Conversión de aplicaciones .NET sencillas


También puede usar la interfaz de la línea de comandos de SCA para procesar aplicaciones .NET.
Prepare la aplicación para el análisis mediante uno de los siguientes métodos:
l Lleve a cabo una recompilación completa del proyecto con la configuración de depuración habilitada.
La compilación del proyecto con la depuración habilitada proporciona información que SCA utiliza
para presentar los resultados.
l Obtenga todos los archivos DLL de terceros, los archivos DLL de salida del proyecto y los archivos
PDB correspondientes para los proyectos. Tenga en cuenta que SCA omite los archivos DLL que se
pasan como un argumento de entrada si el archivo PDB correspondiente no existe en la misma
carpeta. Por lo tanto, debe incluir todos los archivos PDB de todos los archivos DLL del proyecto.

Nota: Los archivos PDB son necesarios para las bibliotecas de terceros.

HP Fortify Static Code Analyzer (4.40) Página 29 de 147


Guía del usuario
Capítulo 4: Conversión de código .NET

Ejecute SCA para analizar la aplicación .NET desde la línea de comandos del siguiente modo:

sourceanalyzer -vsversion <version> -b <build_id>


-libdirs <ProjOne/Lib;ProjTwo/Lib> <folder_1 folder_2>

En el ejemplo anterior, <folder_1 folder_2> son las carpetas de salida.

Nota: SCA recopila automáticamente los archivos DLL de .NET estándar utilizados en el
proyecto, de modo que no es necesario que los incluya en la línea de comandos.

Si el proyecto es grande, puede realizar lo siguiente para ejecutar la fase de conversión de forma
independiente en cada proyecto de salida con el mismo id. de compilación:

sourceanalyzer -vsversion <version> -b <build_id>


-libdirs <paths> <project_1_source_files>
...
sourceanalyzer -vsversion <version> -b <build_id>
-libdirs <paths> <project_n_source_files>

En el ejemplo anterior, <project_1_source_files> y <project_n_source_files> son los proyectos


de salida.

Nota: SCA requiere la versión adecuada de Visual Studio, a menos que se esté usando MSBuild.
Para obtener información sobre el uso de SCA con MSBuild, consulte "Integración de MSBuild" en
la página 100.

Conversión de proyectos de ASP.NET 1.1


(Visual Studio 2003)
Como se comentó anteriormente, SCA se utiliza con el Lenguaje intermedio común (CIL) generado por
los compiladores de .NET. En proyectos de ASP.NET, es necesario compilar los componentes web
(por ejemplo, archivos ASPX) antes de analizarlos. Sin embargo, no hay un compilador estándar para
los archivos ASPX. El sistema en tiempo de ejecución de .NET 1.1 los compila automáticamente
cuando se accede a ellos desde un navegador.
Para facilitar la fase de compilación de ASPX, HP Fortify Software proporciona una herramienta
sencilla que compila todos los archivos ASPX del proyecto. La herramienta se encuentra en:
<Installation_Dir>\Tools\fortify_aspnet_compiler\fortify_aspnet_compiler.exe.
Realice lo siguiente para analizar soluciones ASP.NET 1.1:
1. Lleve a cabo una recompilación completa de la solución.
2. En cada uno de los proyectos web de la solución, elimine la siguiente carpeta:

%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\<web_


application_name>

3. En cada uno de los proyectos web de la solución, ejecute el siguiente comando:

HP Fortify Static Code Analyzer (4.40) Página 30 de 147


Guía del usuario
Capítulo 4: Conversión de código .NET

fortify_aspnet_compiler <url_to_the_website> <source_root_of_the_web_


project>

En este caso:
l <url_to_the_website> es la URL del sitio web, por ejemplo, http://localhost/WebApp
l <source_root_of_the_web_project> es la ubicación de origen del proyecto web, por
ejemplo, <VS_project_location>\WebApp
4. Ejecute la fase de conversión de los archivos DLL compilados en el paso 1. Escriba el siguiente
comando utilizando el mismo id. de compilación que en los siguientes pasos:

sourceanalyzer -b <build_id> "<VS_project_location>\**\*.dll"

5. Ejecute la fase de conversión de los componentes web. En cada uno de los proyectos web de la
solución, escriba lo siguiente cuando invoque sourceanalyzer:

sourceanalyzer -b <build_id>
%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\<web_
application_name>

6. Incluya los archivos de configuración y cualquier archivo de código fuente Microsoft T-SQL con el
que cuente:

sourceanalyzer -b <build_id> "<solution_root>\**\*.config"


<"t-sql_src>\**\*.sql">

Nota: Todos estos pasos se automatizan si se utiliza el HP Fortify Package for Microsoft Visual
Studio.

Gestión de las advertencias de resolución


Para ver todas las advertencias generadas durante la compilación, escriba el siguiente comando antes
de iniciar la fase de examen:

sourceanalyzer -b <build_id> -show-build-warnings

Acerca de las advertencias de .NET


Es posible que vea las siguientes advertencias relacionadas con .NET:

Cannot locate class... in the given search path and the Microsoft .NET Framework
libraries.

Estas advertencias suelen producirse debido a que faltan recursos. Por ejemplo, se pueden producir
porque no se han especificado algunos de los archivos DLL necesarios para generar la aplicación. Para
resolver las advertencias, asegúrese de incluir todos los archivos necesarios que utiliza la aplicación.
Si sigue viendo una advertencia y las clases enumeradas en ella son interfaces vacías sin miembros,

HP Fortify Static Code Analyzer (4.40) Página 31 de 147


Guía del usuario
Capítulo 4: Conversión de código .NET

puede omitir la advertencia. Si la interfaz no está vacía, póngase en contacto con el soporte técnico de
HP Fortify.

Acerca de las advertencias de ASP.NET


Es posible que vea las siguientes advertencias relacionadas con aplicaciones ASP.NET:

Failed to parse the following aspx files:


<list of .aspx file names>

Esta advertencia indica que la aplicación web no se ha implementado correctamente, que no contiene
el conjunto completo de bibliotecas requeridas o que utiliza la caché de acceso global (GAC). Si la
aplicación web usa la GAC, debe agregar los archivos DLL al proyecto por separado para garantizar un
examen correcto. SCA no carga archivos DLL desde la GAC.

HP Fortify Static Code Analyzer (4.40) Página 32 de 147


Capítulo 5: Conversión de código C y
C++
Los temas tratados en esta sección son los siguientes:

• Sintaxis de la línea de comandos de C y C++ 33


• Integración de compilación 34
• Modificación de un script de compilación para invocar SCA 35
• Integración de compilaciones sin compatibilidad 36
• Examen de código C y C++ preprocesado 36

Sintaxis de la línea de comandos de C y


C++
Las opciones de la línea de comandos pasadas al compilador afectan a la ejecución del preprocesador,
y pueden habilitar o deshabilitar características y extensiones del lenguaje. Para garantizar que SCA
interpreta el código fuente de la misma manera que el compilador, se requiere la línea de comandos
completa del compilador durante el paso de conversión del código fuente en lenguaje C. Coloque el
comando y las opciones de sourceanalyzer antes del comando del compilador original.
La sintaxis básica de la línea de comandos para convertir un archivo individual es la siguiente:

sourceanalyzer -b <build_id> [<SCA_options>] <compiler> [<compiler_options>]


<file.c>

En este caso:
l <compiler> es el nombre del compilador C que desea usar, como gcc, g++ o cl. Consulte el
documento Requisitos del sistema de HP Fortify Software Security Center para obtener una lista de
los compiladores C compatibles.
l <SCA_options> son las opciones que se pasan a SCA.
l <compiler_options> son las opciones que se pasan al compilador C.
l <file.c> debe tener una codificación ASCII o UTF-8.

Nota: Todas las opciones de SCA deben preceder a las opciones del compilador.

El comando del compilador debe completarse correctamente cuando se ejecute por sí solo. Si se
produce un error en el comando del compilador, también se produce un error en el comando
sourceanalyzer que se utiliza como prefijo del comando del compilador.
Por ejemplo, suponga que compila un archivo con el siguiente comando:

HP Fortify Static Code Analyzer (4.40) Página 33 de 147


Guía del usuario
Capítulo 5: Conversión de código C y C++

gcc -I. -o hello.o -c helloworld.c

En ese caso, puede convertir el archivo con el comando que se muestra a continuación:

sourceanalyzer -b my_buildid gcc -I. -o hello.o -c helloworld.c

SCA ejecuta el comando del compilador original como parte de la fase de conversión. En el ejemplo
anterior, el comando crea el código fuente convertido apto para el examen y el archivo de objeto
hello.o de la ejecución de gcc. Puede utilizar la opción -nc de SCA para deshabilitar la ejecución del
compilador.

Integración de compilación
Puede convertir proyectos enteros mediante una sola operación. Coloque el comando
sourceanalyzer y las opciones de SCA antes de la operación de compilación original.
La sintaxis de la línea de comandos para convertir un proyecto completo es la siguiente:

sourceanalyzer -b <build_id> [<SCA_options>] <build_tool> [<build_tool_options>]

En la sintaxis anterior, <build_tool> es el nombre de la herramienta de compilación, como make,


gmake, devenv o xcodebuild. Consulte el documento Requisitos del sistema de HP Fortify Software
Security Center para obtener una lista de las herramientas de compilación compatibles. SCA ejecuta la
herramienta de compilación e intercepta todas las operaciones del compilador para recopilar la línea de
comandos específica que se utiliza para cada entrada.

Nota: SCA solo ve los comandos del compilador que ejecuta la herramienta de compilación. Si no
limpia el proyecto antes de ejecutar la compilación, SCA solo ve los archivos que la herramienta
de compilación vuelve a compilar.

Para integrar la compilación correctamente, es necesario que la herramienta de compilación realice lo


siguiente:
l Ejecutar un compilador compatible con SCA.
l Ejecutar el compilador en la búsqueda de rutas de acceso del sistema operativo, no con una ruta de
acceso codificada de forma rígida (este requisito no se aplica a la integración de xcodebuild).
l Ejecutar el compilador, en lugar de ejecutar un subproceso que luego ejecuta el compilador.
Si no puede cumplir estos requisitos en su entorno, consulte "Modificación de un script de compilación
para invocar SCA" En la página siguiente.
Ejemplo 1
Suponga que compila el proyecto con los siguientes comandos de compilación:

make clean
make
make install

En ese caso, puede convertir y compilar de manera simultánea todo el proyecto con los comandos
siguientes:

HP Fortify Static Code Analyzer (4.40) Página 34 de 147


Guía del usuario
Capítulo 5: Conversión de código C y C++

make clean
sourceanalyzer -b <build_id> make
make install

Ejemplo 2
Suponga que compila un proyecto de Visual Studio .NET con el siguiente comando de compilación:

devenv MyProject.sln /REBUILD

En ese caso, puede convertir y compilar el proyecto con el comando:

sourceanalyzer -b <build_id> devenv MyProject.sln /REBUILD

Nota: La integración con Visual Studio .NET requiere la instalación de HP Fortify Package for
Microsoft Visual Studio para su versión específica de Visual Studio.

Modificación de un script de compilación


para invocar SCA
Como alternativa a la integración de la compilación, puede modificar el script de compilación para
colocar sourceanalyzer antes de cada operación de compilador, enlazador y archivador. Por ejemplo,
un archivo Make suele definir variables para los nombres de las siguientes herramientas:

CC=gcc
CXX=g++
LD=ld
AR=ar

Puede colocar el comando sourceanalyzer y las opciones pertinentes de SCA antes de las
referencias a las herramientas en el archivo Make.

CC=sourceanalyzer -b mybuild gcc


CXX=sourceanalyzer -b mybuild g++
LD=sourceanalyzer -b mybuild ld
AR=sourceanalyzer -b mybuild ar

Si utiliza el mismo id. de compilación para cada operación, SCA combina automáticamente cada
archivo convertido por separado en un único proyecto convertido.

HP Fortify Static Code Analyzer (4.40) Página 35 de 147


Guía del usuario
Capítulo 5: Conversión de código C y C++

Integración de compilaciones sin


compatibilidad
SCA incluye una herramienta de compilación genérica denominada touchless, que permite convertir
proyectos mediante sistemas de compilación que no son directamente compatibles con SCA. La
sintaxis de la línea de comandos para la integración de compilaciones sin compatibilidad es la
siguiente:

sourceanalyzer -b <build_id> touchless <build_command>

Esto se puede utilizar, por ejemplo, si emplea un script de Python denominado build.py para calcular
las dependencias y ejecutar operaciones del compilador C con el orden apropiado. En ese caso, podría
ejecutar la compilación mediante la ejecución del siguiente elemento:

python build.py

SCA no dispone de compatibilidad nativa con un diseño de compilación de este tipo. No obstante,
puede utilizar la herramienta de compilaciones sin compatibilidad para convertir y compilar todo el
proyecto con el siguiente comando:

sourceanalyzer -b <build_id> touchless python build.py

Los mismos requisitos para la integración correcta de la compilación con sistemas de compilación
compatibles descritos anteriormente en este capítulo se aplican a la integración de compilación sin
compatibilidad de sistemas de compilación no compatibles.

Examen de código C y C++ preprocesado


Si la compilación de C/C++ ejecuta un preprocesador C de terceros que no es compatible con SCA
antes de realizar la compilación, debe invocar la conversión de SCA en el archivo intermedio. La
integración de compilaciones sin compatibilidad de SCA convierte automáticamente el archivo
intermedio proporcionado si la compilación ejecuta tanto el preprocesador incompatible como el
compilador compatible como dos comandos conectados mediante un archivo temporal, en lugar de una
cadena de canalización.

HP Fortify Static Code Analyzer (4.40) Página 36 de 147


Capítulo 6: Conversión de código
ABAP
Los temas tratados en esta sección son los siguientes:

• Acerca de la conversión de código ABAP 37


• Acerca del examen de código ABAP 37
• Importación de la solicitud de transporte de HP Fortify ABAP Extractor 38
• Adición de SCA a la lista de favoritos 39
• Ejecución de HP Fortify ABAP Extractor 40

Acerca de la conversión de código ABAP


La conversión del código ABAP es parecida a la conversión de código de otros lenguajes operativos.
No obstante, requiere pasos adicionales para extraer el código de la base de datos de SAP y prepararlo
para el examen. Consulte "Importación de la solicitud de transporte de HP Fortify ABAP Extractor" En
la página siguiente para obtener más información. En este capítulo se da por sentado que SCA se está
ejecutando y que el usuario tiene nociones básicas de SCA, SAP y ABAP.

Acerca del examen de código ABAP


Para convertir código ABAP, el programa HP Fortify ABAP Extractor descarga los archivos de código
fuente en el servidor de presentación y, de manera opcional, invoca SCA. Debe usar una cuenta con
permisos para descargar archivos en el sistema local y ejecutar comandos del sistema operativo.
Ya que el programa extractor se ejecuta en línea, es posible que reciba una excepción max dialog
work process time reached si el volumen de archivos de código fuente seleccionados para la
extracción supera el tiempo de ejecución de procesos permitido. Este problema se suele solucionar
descargando proyectos grandes como una serie de tareas de Extractor más pequeñas.  Por ejemplo, si
su proyecto consta de cuatro paquetes distintos, descargue cada paquete por separado en el mismo
directorio de proyecto. 
Si la excepción se produce con frecuencia, pida a su administrador de SAP Basis que aumente el
límite de tiempo máximo (rdisp/max_wprun_time).
Cuando se extrae un paquete de ABAP, HP Fortify ABAP Extractor extrae todo el contenido de TDEVC
con un campo parentcl que coincide con el nombre del paquete. A continuación, extrae
recursivamente el resto del contenido de TDEVC con un campo parentcl que coincida con los que ya
se han extraído de TDEVC. El campo extraído de TDEVC es devclass.
Los valores de devclass se tratan como un conjunto de nombres de programa y se gestionan de la
misma manera que un nombre de programa, el cual puede proporcionar de manera opcional.

HP Fortify Static Code Analyzer (4.40) Página 37 de 147


Guía del usuario
Capítulo 6: Conversión de código ABAP

Para extraer los programas de TRDIR, se buscan coincidencias entre el nombre del campo y el nombre
del programa indicado por el usuario en la pantalla de selección o, si se ha proporcionado un paquete, la
lista de valores extraídos de TDEVC. Las filas de TRDIR son las filas en las que el campo de nombre
tiene el nombre de programa y la expresión LIKE programname se usa para extraer las filas.
Esta lista final de nombres se usa con READ REPORT para obtener el código del sistema SAP. Hay que
tener en cuenta que este método también lee las clases y los métodos, además de REPORTs.
Cada llamada READ REPORT crea un archivo en la carpeta temporal del sistema local. Este conjunto de
archivos es convertido y examinado por sourceanalyzer para crear un archivo FPR que puede abrir con
HP Fortify Audit Workbench.

Acerca del procesamiento de INCLUDE


A medida que se descarga código fuente, HP Fortify ABAP Extractor busca instrucciones INCLUDE en
el código fuente. Cuando las encuentra, también descarga los destinos de INCLUDE en el equipo local
para realizar el análisis.

Importación de la solicitud de transporte de


HP Fortify ABAP Extractor
El examen de ABAP está disponible como componente premium de SCA. Si ha adquirido una licencia
que incluye esta funcionalidad, deberá importar la solicitud de transporte de HP Fortify ABAP Extractor
en el servidor SAP.
La solicitud de transporte de HP Fortify se encuentra en el paquete SAP_Extractor.zip. El paquete se
encuentra en el directorio Tools:

<Installation_Dir>/Tools/SAP_Extractor.zip

El paquete de HP Fortify ABAP Extractor, SAP_Extractor.zip, contiene los archivos siguientes:


l K9000XX.NSP (donde "XX" representa el número de versión).
l R9000XX.NSP (donde "XX" representa el número de versión).
Estos archivos constituyen la solicitud de transporte de SAP y deben importarse en el sistema SAP
desde fuera del dominio de transporte local. El administrador de SAP o una persona con autorización
para instalar solicitudes de transporte en el sistema debe importar la solicitud de transporte.
Los archivos NSP contienen un programa, una transacción (YSCA) y la interfaz de usuario del
programa. En cuanto estos elementos se hayan importado en el sistema y se hayan configurado
correctamente, podrá extraer el código de la base de datos de SAP y prepararlo para realizar el examen
con SCA.
Nota de instalación
La solicitud de transporte de HP Fortify ABAP Extractor se ha creado en un sistema que ejecuta la
versión de SAP 7.02, nivel de Service Pack 0006. Si ejecuta otra versión de SAP, es posible que se
produzca el siguiente error de importación de la solicitud de transporte: Install release does not
match the current version.

HP Fortify Static Code Analyzer (4.40) Página 38 de 147


Guía del usuario
Capítulo 6: Conversión de código ABAP

Esto provoca un error en la instalación. Para resolver el problema, realice los siguientes pasos:
1. Vuelva a ejecutar la importación de la solicitud de transporte.
Se abre el cuadro de diálogo Import Transport Request.
2. Haga clic en la pestaña Options.
3. Active la casilla Ignore Invalid Component Version.
4. Complete el procedimiento de importación.

Adición de SCA a la lista de favoritos


La adición de SCA a la lista de favoritos es opcional; sin embargo, si decide hacerla, es posible que
pueda acceder e iniciar los exámenes de SCA con mayor rapidez. En los siguientes pasos se da por
supuesto que utiliza el menú de usuario en su trabajo cotidiano. Si realiza utiliza otro menú, agregue el
vínculo Favorites al menú que utiliza. Antes de crear la entrada de SCA, el servidor SAP debe
ejecutarse y el usuario debe encontrarse en el área SAP Easy Access del cliente web.
1. Desde el menú SAP Easy Access, escriba S000 en el cuadro de transacción.
Se abre SAP Menu.
2. Haga clic con el botón derecho en la carpeta Favorites y seleccione Insert transaction.
Se abre el cuadro de diálogo Manual entry of a transaction.

3. Escriba YSCA en el cuadro Transaction Code.


4. Haga clic en el botón con la marca de verificación de color verde .
El elemento Launch SCA debería mostrarse en la lista Favorites.

HP Fortify Static Code Analyzer (4.40) Página 39 de 147


Guía del usuario
Capítulo 6: Conversión de código ABAP

5. Haga clic en el vínculo Extract ABAP code and launch SCA para iniciar HP Fortify ABAP
Extractor.

Ejecución de HP Fortify ABAP Extractor


Para ejecutar HP Fortify ABAP Extractor, realice lo siguiente:
1. Inicie el programa mediante el vínculo Favorites, el código de transacción o el inicio manual del
objeto YHP_FORTIFY_SCA.

HP Fortify Static Code Analyzer (4.40) Página 40 de 147


Guía del usuario
Capítulo 6: Conversión de código ABAP

2. Proporcione la información solicitada.

Sección Datos

Objects Escriba el nombre del componente de software, el paquete, el programa o la


aplicación BSP que desea examinar en Software Component, Package,
Program y BSP Application, respectivamente.

Sourceanalyzer FPR File Path: escriba el directorio en el que desea almacenar el archivo
parameters FPR. Incluya el nombre que desea asignar al archivo FPR en el nombre de la
ruta de acceso.
Working Directory: escriba el directorio en el que se debe copiar el código
fuente extraído.
Build-ID: escriba el id. de compilación para el examen.
Translation Parameters: enumere los argumentos de conversión opcionales
de sourceanalyzer.
Scan Parameters: enumere los argumentos de examen opcionales de
sourceanalyzer.
ZIP File Name: escriba un nombre de archivo ZIP si desea que la salida se
proporcione en un paquete comprimido.
Maximum Call-chain Depth: una función F global de SAP no se descarga a

HP Fortify Static Code Analyzer (4.40) Página 41 de 147


Guía del usuario
Capítulo 6: Conversión de código ABAP

Sección Datos

menos que se haya seleccionado F de manera explícita, o a menos que se


pueda acceder a F mediante una cadena de llamadas de función que empiece
con el código seleccionado de manera explícita y cuya longitud sea este
número o uno inferior.

Actions Download: active esta casilla para indicar a SCA que debe descargar el
código fuente extraído de la base de datos de SAP.
Build: active esta casilla para indicar a SCA que debe convertir todo el
código ABAP descargado y almacenarlo con el id. de compilación
especificado.
Scan: active esta casilla para solicitar un examen.
Launch AWB: active esta casilla para iniciar Audit Workbench y cargar el
archivo FPR.
Create ZIP: active esta casilla para solicitar que se comprima la salida.
Process in Background: active esta casilla para solicitar que el
procesamiento se realice en segundo plano.

3. Haga clic en Execute.

HP Fortify Static Code Analyzer (4.40) Página 42 de 147


Capítulo 7: Conversión de código
Ruby
Los temas tratados en esta sección son los siguientes:

• Sintaxis de la línea de comandos de Ruby 43


• Adición de bibliotecas 44
• Adición de varias rutas de acceso a bibliotecas 44
• Adición de rutas de acceso de archivos GEM 44

Sintaxis de la línea de comandos de Ruby


La sintaxis de la línea de comandos básica para convertir código Ruby es la siguiente:

sourceanalyzer –b <build_id> <rb_file>

En el ejemplo anterior, <rb_file> es el nombre del archivo de Ruby que se va a examinar. Si desea
incluir varios archivos de Ruby, sepárelos con un espacio tal como se muestra en el siguiente ejemplo:

sourceanalyzer –b <build_id> file1.rb file2.rb file3.rb

Además de proporcionar una lista de archivos de Ruby individuales, puede usar el carácter de comodín
asterisco (*) para seleccionar todos los archivos de Ruby de un directorio especificado. Por ejemplo,
para buscar todos los archivos de Ruby de un directorio llamado src, utilice el siguiente comando
sourceanalyzer:

sourceanalyzer –b <build_id> src/*.rb

Opciones de Ruby
En la siguiente tabla se describen las opciones de conversión de Ruby.

Opción de
Ruby Descripción

-ruby-path Especifica las rutas de acceso a los directorios que contienen bibliotecas Ruby
(consulte "Adición de bibliotecas " En la página siguiente).

-rubygem-path Especifica las rutas de acceso a una ubicación de RubyGems (consulte "Adición
de rutas de acceso de archivos GEM" En la página siguiente).

HP Fortify Static Code Analyzer (4.40) Página 43 de 147


Guía del usuario
Capítulo 7: Conversión de código Ruby

Adición de bibliotecas
Si el código fuente Ruby requiere una biblioteca específica, agregue la biblioteca de Ruby al comando
sourceanalyzer. Por ejemplo, si tiene un archivo utils.rb que reside en el directorio
/usr/share/ruby/myPersonalLibrary, agregue lo siguiente al comando sourceanalyzer:

-ruby-path=/usr/share/ruby/myPersonalLibrary

Adición de varias rutas de acceso a


bibliotecas
Si desea usar varias bibliotecas, utilice una lista delimitada. En Windows, debe separar las rutas de
acceso con punto y coma; no obstante, debe utilizar dos puntos en el resto de plataformas, tal como se
muestra en el siguiente ejemplo:

-ruby-path=/path/one:/path/two:/path/three

Adición de rutas de acceso de archivos


GEM
Para agregar todos los RubyGems y sus rutas de acceso de dependencia, importe todos los
RubyGems. Para ello, obtenga primero las rutas de acceso de los archivos GEM de Ruby ejecutando
el comando gem env y, en GEM PATHS, busque un directorio similar al siguiente:

/home/myUser/gems/ruby-version

Este directorio debería contener otro directorio denominado gems que, a su vez, contiene los directorios
de todos los archivos GEM instalados en el sistema. Por ejemplo, establecería lo siguiente:

-rubygem-path=/home/myUser/gems/ruby-version/gems

Si tiene varios directorios gems, agréguelos mediante una lista delimitada como la siguiente:

-rubygem-path=/path/to/gems:/another/path/to/more/gems

Nota: En sistemas Windows, separe los directorios de GEM con punto y coma.

HP Fortify Static Code Analyzer (4.40) Página 44 de 147


Capítulo 8: Conversión de Flex y
ActionScript
Los temas tratados en esta sección son los siguientes:

• Sintaxis de la línea de comandos de ActionScript 45


• Acerca de la gestión de las advertencias de resolución 47

Sintaxis de la línea de comandos de


ActionScript
La sintaxis de la línea de comandos básica para convertir código ActionScript es la siguiente:

sourceanalyzer -b <build_id> -flex-libraries <listOfLibraries> <listOfFiles>

En este caso:
<listOfLibraries> es una lista separada por punto y coma (en Windows) o una lista separada por
dos puntos (en sistemas distintos de Windows) de nombres de biblioteca con los que desea establecer
un vínculo, mientras que <listOfFiles> representa los archivos que se convierten.

Opciones de la línea de comandos de Flex y


ActionScript
Utilice las siguientes opciones de la línea de comandos para convertir archivos de Flex. También
puede especificar esta información en el archivo de configuración de propiedades (fortify-
sca.properties), como se indica en cada descripción.

Opción Descripción

-flex-sdk-root La ubicación de la raíz de un SDK de Flex válido. Esta carpeta debería


contener una carpeta de marcos con un archivo flex-config.xml.
También debería contener una carpeta bin con un ejecutable de MXMLC.
También es posible establecer la ubicación raíz del SDK mediante la
propiedad com.fortify.sca.FlexSdkRoot.

-flex-libraries Una lista de nombres de biblioteca con los que desea establecer un vínculo,
la cual está separada por dos puntos (en la mayoría de las plataformas) o
por punto y coma (en Windows). En la mayoría de los casos, esta lista
incluye flex.swc, framework.swc y playerglobal.swc (los cuales suelen

HP Fortify Static Code Analyzer (4.40) Página 45 de 147


Guía del usuario
Capítulo 8: Conversión de Flex y ActionScript

Opción Descripción

encontrarse en frameworks/libs/ en la raíz del SDK de Flex).


También es posible establecer las bibliotecas Flex mediante la propiedad
com.fortify.sca.FlexLibraries.

Nota: Puede definir archivos SWC o SWF como bibliotecas Flex (los
archivos SWZ no se admiten actualmente).

-flex-source-roots Una lista de directorios raíz separados por dos puntos o por punto y coma,
en la que se encuentran los archivos de código fuente MXML.
Normalmente, contienen una subcarpeta llamada com. Por ejemplo, si se
proporciona una raíz de código fuente Flex que apunta a foo/bar/src,
foo/bar/src/com/fortify/manager/util/Foo.mxml se transforma en un
objeto denominado com.fortify.manager.util.Foo (un objeto llamado
Foo en el paquete com.fortify.manager.util).
También es posible establecer las ubicaciones de origen de MXML
mediante la propiedad com.fortify.sca.FlexSourceRoots.

Nota: -flex-sdk-root y –flex-source-roots se usan principalmente para la conversión de


MXML, pero no son obligatorias al examinar código ActionScript puro. Utilice –flex-libraries
para resolver todo el código ActionScript.

SCA convierte archivos MXML en código ActionScript y, a continuación, los ejecuta a través de un
analizador de ActionScript. El código ActionScript generado pretende ser sencillo de analizar y no
rigurosamente correcto como el modelo de tiempo de ejecución de Flex. Como consecuencia, es
posible que se produzcan errores de análisis con los archivos MXML. Por ejemplo, podrían producirse
errores de análisis XML, errores de conversión a ActionScript y errores de análisis del código
ActionScript resultante. Si detecta algún error que no tenga una relación clara con el código fuente
original, notifíquelo al soporte técnico de HP Fortify.

Ejemplos de la línea de comandos de ActionScript


En los siguientes ejemplos se muestra la sintaxis de la línea de comandos en escenarios típicos de
conversión de ActionScript.
Ejemplo 1
El siguiente ejemplo corresponde a una sencilla aplicación que contiene un solo archivo MXML y una
sola biblioteca SWF (MyLib.swf):

sourceanalyzer -b MyFlexApp -flex-libraries lib/MyLib.swf -flex-sdk-root


/home/myself/flex-sdk/ -flex-source-roots . my/app/FlexApp.mxml

Esto permite identificar la ubicación de las bibliotecas que se van a incluir, además de las ubicaciones
raíz de código fuente Flex y del SDK de Flex. El archivo MXML único, ubicado en
/my/app/FlexApp.mxml, da como resultado la conversión de la aplicación MXML como una sola clase
de ActionScript llamada FlexApp, que se encuentra en el paquete my.app.

HP Fortify Static Code Analyzer (4.40) Página 46 de 147


Guía del usuario
Capítulo 8: Conversión de Flex y ActionScript

Ejemplo 2
El siguiente ejemplo corresponde a una aplicación cuyos archivos de código fuente están en una ruta
de acceso relativa al directorio src. Se emplea una sola biblioteca SWF (MyLib.swf), así como las
bibliotecas Flex y de marcos del SDK de Flex:

sourceanalyzer -b MyFlexProject -flex-sdk-root /home/myself/flex-sdk/


-flex-source-roots src/ -flex-libraries lib/MyLib.swf src/**/*.mxml src/**/*.as

En este ejemplo, se busca el SDK de Flex. Se usan especificadores de archivo de SCA para incluir los
archivos .as y .mxml en la carpeta src. No es necesario especificar de forma explícita los archivos
.SWC ubicados en –flex-sdk-root, aunque en este ejemplo sí se ha hecho para demostrar el
procedimiento. SCA busca automáticamente todos los archivos .SWC de la raíz del SDK de Flex que
se ha especificado y asume que se trata de bibliotecas destinadas a convertir archivos MXML o de
ActionScript.
Ejemplo 3
En este ejemplo, la biblioteca Flex y la biblioteca raíz del SDK de Flex se especifican en un archivo de
propiedades, ya que escribir en los datos requiere tiempo y tiende a ser constante. La aplicación se
divide en dos secciones, las cuales se almacenan en dos carpetas: una carpeta de sección principal y
otra de módulos. Cada carpeta contiene una carpeta src en la que deben iniciarse las rutas de acceso.
Se utilizan caracteres comodín en los especificadores de archivo para recopilar todos los archivos
.mxml y .as en ambas carpetas src. Un archivo MXML de main/src/com/foo/util/Foo.mxml se
convierte en una clase de ActionScript llamada Foo en el paquete com.foo.util, por ejemplo, con las
raíces de código fuente especificadas a continuación:

sourceanalyzer -b MyFlexProject -flex-source-roots main/src:modules/src


./main/src/**/*.mxml ./main/src/**/*.as ./modules/src/**/*.mxml
./modules/src/**/*.as

Acerca de la gestión de las advertencias de


resolución
Para ver todas las advertencias generadas durante la compilación, escriba el siguiente comando antes
de iniciar la fase de examen:

sourceanalyzer -b <build_id> -show-build-warnings

Acerca de las advertencias de ActionScript


Es posible que reciba un mensaje similar al siguiente:
The ActionScript front end was unable to resolve the following imports: a.b at
y.as:2. foo.bar at somewhere.as:5. a.b at foo.mxml:8.

HP Fortify Static Code Analyzer (4.40) Página 47 de 147


Guía del usuario
Capítulo 8: Conversión de Flex y ActionScript

Este error se produce cuando SCA no encuentra todas las bibliotecas necesarias. Puede que deba
especificar bibliotecas de Flex de SWC o SWF adicionales (con la opción -flex-libraries o la
propiedad com.fortify.sca.FlexLibraries) para que SCA pueda completar el análisis.

HP Fortify Static Code Analyzer (4.40) Página 48 de 147


Capítulo 9: Conversión de código para
plataformas móviles
Los temas tratados en esta sección son los siguientes:

• Acerca de la conversión de código Objective-C++ 49


• Acerca de la conversión de código Google Android 50

Acerca de la conversión de código


Objective-C++
En esta sección se describe cómo convertir código fuente Objective-C++ para aplicaciones de iOS.

Requisitos previos
l Las herramientas de la línea de comandos de Xcode deben estar instaladas en la ruta de acceso.
l Los proyectos deben usar el sistema en tiempo de ejecución de Objective-C++ no frágil (versión 2 o
3 de ABI).
l Utilice la utilidad de la línea de comandos xcode-select de Apple para definir la ruta de acceso de
Xcode. SCA utiliza la configuración global de Xcode del sistema para encontrar los encabezados y
la cadena de herramientas de Xcode.

Sintaxis de la línea de comandos de Objective-


C++
La sintaxis de la línea de comandos para convertir un solo proyecto de Objective-C++ es la siguiente:

sourceanalyzer -b <build_id> -clean

sourceanalyzer -b <build_id> xcodebuild [<compiler options>]

En este caso:
<compiler options> son opciones que se pasan a Xcode.
En el siguiente ejemplo se muestran los patrones de uso de los compiladores admitidos. Ejecute las
siguientes muestras de código desde el directorio en el que se encuentran los archivos de proyecto.

HP Fortify Static Code Analyzer (4.40) Página 49 de 147


Guía del usuario
Capítulo 9: Conversión de código para plataformas móviles

Para convertir un proyecto Objective-C++ de Xcode, escriba lo siguiente:

xcodebuild [<options>] clean (Opcional. Esta acción borra los artefactos de compilación
anteriores.)
sourceanalyzer -b my_buildid -clean

sourceanalyzer -b my_buildid xcodebuild [<options>]

Para examinar los archivos de artefactos de la aplicación:

sourceanalyzer -b my_buildid -scan -f result.fpr

Nota: El código fuente se compila al ejecutar estos comandos.

Errores de compilador de Xcode


Es posible que se produzcan errores de compilador de Xcode a causa de la inclusión de opciones de
Clang incluidas tras el lanzamiento de su versión de SCA. Para eliminar los errores, escriba lo
siguiente después de xcodebuild:
ARCHS=i386
GCC_TREAT_WARNINGS_AS_ERRORS=NO

En el código anterior, ARCHS=i386 representa las arquitecturas (ABI, modelos de procesador) a las que
se destina el binario.

Acerca de la conversión de código Google


Android
La conversión de código Google Android es similar a la conversión de código Java. Consulte
"Conversión de código Java" en la página 20 para obtener más información.

HP Fortify Static Code Analyzer (4.40) Página 50 de 147


Capítulo 10: Conversión de código
COBOL
Los temas tratados en esta sección son los siguientes:

• Preparación de los archivos de código fuente COBOL para realizar la conversión 51


• Sintaxis de la línea de comandos COBOL 52
• Acerca de la auditoría de exámenes de COBOL 53

Para obtener una lista de tecnologías compatibles con la conversión de código COBOL, consulte el
documento Requisitos del sistema de HP Fortify Software Security Center.

Nota: Para examinar COBOL con SCA, debe tener una licencia de HP Fortify especializada y
específica para las capacidades de examen de COBOL. Póngase en contacto con HP Fortify
Software para obtener más información sobre el examen de COBOL y la licencia requerida.

Preparación de los archivos de código


fuente COBOL para realizar la conversión
SCA solo se ejecuta en los sistemas compatibles enumerados en el documento Requisitos del
sistema de HP Fortify Software Security Center, y no en mainframes. Para poder examinar un
programa en COBOL, primero debe copiar los siguientes componentes de programa al sistema que
ejecuta SCA:
l El código fuente COBOL.
l Todos los archivos de libro de copias que usa el código fuente COBOL.
l Todos los archivos SQL INCLUDE a los que hace referencia el código fuente COBOL.
SCA solo procesa el código fuente COBOL de nivel superior. No incluya archivos de libro de copias o
SQL INCLUDE en el directorio o en el subdirectorio en el que se encuentran los archivos de código
fuente COBOL. HP Fortify le sugiere colocar el código fuente COBOL en una carpeta llamada
sources/ y los libros de copias en una carpeta llamada copybooks/. Estas carpetas deberían estar en
el mismo nivel. El comando de conversión debería seguir la siguiente estructura:

sourceanalyzer -b <build_id> -noextension-type COBOL -copydirs copybooks/


sources/

Tenga en cuenta lo siguiente si el código fuente COBOL contiene:

COPY FOO

HP Fortify Static Code Analyzer (4.40) Página 51 de 147


Guía del usuario
Capítulo 10: Conversión de código COBOL

En el ejemplo anterior, FOO es un archivo de libro de copias o un archivo SQL INCLUDE, por lo que el
archivo correspondiente en la carpeta copybooks o en la carpeta SQL INCLUDE, como se especifica
con la opción -copydirs, debería ser FOO. El comando COPY también admite una estructura directorio-
archivo-ruta de acceso, en lugar de tan solo un nombre de archivo. Debería seguirse la misma
estructura de comando de conversión y usarse una estructura directorio-archivo-ruta de acceso en
lugar de un nombre de archivo.

Preparación de archivos de código fuente


COBOL
Si recupera archivos de código fuente COBOL en un mainframe sin la extensión de archivo COB o CBL
(lo cual es habitual para los nombres de archivo de COBOL), debe incluir lo siguiente en la línea de
comandos de conversión:

-noextension-type COBOL <directory-file-path>

Especifique el directorio y la carpeta con todos los archivos de COBOL como el argumento para SCA.
SCA procesará todos los archivos de ese directorio y esa carpeta sin necesidad de contar con
extensiones de archivo de COBOL.

Preparación de archivos de libro de copias


COBOL
SCA no identifica los libros de copias por la extensión. Por lo tanto, todos los archivos de libro de
copias deben conservar los nombres utilizados en las instrucciones COPY del código fuente COBOL.
Los archivos de libro de copias no deben colocarse en la misma carpeta que los archivos de código
fuente COBOL principales, sino en un directorio llamado copybooks/ que está situado en el mismo
nivel que la carpeta que contiene los archivos de código fuente COBOL.
Si los libros de copias tienen extensiones de archivo, use la opción -copy-extensions para
especificar las extensiones de archivo de libro de copias. Puede especificar una o varias extensiones
de archivo (separadas por dos puntos). Por ejemplo:

-copy-extensions <ext1>:<ext2>

Sintaxis de la línea de comandos COBOL


COBOL de formato libre es el modo de conversión y examen predeterminado de SCA. La sintaxis
básica para convertir un archivo de código fuente COBOL de formato libre es la siguiente:

sourceanalyzer -b <build_id>

La sintaxis básica para examinar un programa en COBOL de formato libre convertido es la siguiente:

sourceanalyzer -b <build_id> -scan -f <result.fpr>

HP Fortify Static Code Analyzer (4.40) Página 52 de 147


Guía del usuario
Capítulo 10: Conversión de código COBOL

Uso de COBOL de formato fijo


SCA también admite COBOL de formato fijo. Al convertir y examinar COBOL de formato fijo, las líneas
de comandos de conversión y examen deben incluir la opción de la línea de comandos -fixed-
format. Por ejemplo:

sourceanalyzer -b <build_id> -fixed-format

A continuación se presenta un ejemplo de sintaxis de la línea de comandos de examen:

sourceanalyzer -b <build_id> -scan -fixed-format -f <result.fpr>

Si el código COBOL utilizado es IBM Enterprise COBOL, lo más probable es que sea de formato fijo. Si
parece que el comando de conversión de COBOL no responde, presione Ctrl+C varias veces para
terminar la conversión y, a continuación, repita el comando de conversión con la opción -fixed-
format.

Búsqueda de libros de copias COBOL


Use la opción de la línea de comandos copydirs para hacer que SCA busque una lista de rutas de
acceso para libros de copias y archivos SQL INCLUDE. Por ejemplo:

sourceanalyzer -b <build_id> -copydirs c:\cobol\copybooks

Acerca de la auditoría de exámenes de


COBOL
Después de usar la línea de comandos para examinar la aplicación, puede cargar el archivo FPR
resultante en HP Fortify Audit Workbench o HP Fortify Software Security Center, y realizar una
auditoría de los problemas de la aplicación.
Actualmente, SCA no admite reglas personalizadas para aplicaciones en COBOL.

HP Fortify Static Code Analyzer (4.40) Página 53 de 147


Capítulo 11: Conversión de otros
lenguajes
Los temas tratados en esta sección son los siguientes:

• Acerca de la conversión de código Python 54


• Acerca de la conversión de código ColdFusion 55
• Acerca de la conversión de SQL 56
• Acerca de la conversión de raíces virtuales de ASP/VBScript 57
• Ejemplo de la línea de comandos de ASP clásico 59
• Ejemplo de la línea de comandos de JavaScript 59
• Ejemplo de la línea de comandos de VBScript 60
• Ejemplo de la línea de comandos de PHP 60

Acerca de la conversión de código Python


SCA convierte aplicaciones Python y trata los archivos con la extensión .py como código fuente
Python. Para convertir aplicaciones Python y preparar la aplicación para un examen, SCA busca los
archivos de importación de la aplicación. SCA no respeta la variable de entorno PYTHONPATH que el
sistema en tiempo de ejecución de Python utiliza para buscar los archivos importados, de modo que
esta información debe proporcionarse directamente a SCA a través de la opción -python-path.
Además, algunas aplicaciones agregan directorios de importación adicionales durante la inicialización
en tiempo de ejecución.
Para agregar rutas de acceso para directorios de importación adicionales, use la siguiente opción de la
línea de comandos de sourceanalyzer:

-python-path <pathname>

Nota: Para convertir las aplicaciones Python, SCA utiliza todos los archivos de importación
ubicados en la ruta de acceso del directorio definida por la opción -python-path <pathname>. Por
tanto, la conversión puede tardar bastante tiempo en completarse.

Uso del marco Django con Python


Para examinar el código creado con el marco Django, establezca las siguiente propiedades en el
archivo de configuración fortify-sca.properties:

com.fortify.sca.limiters.MaxPassThroughChainDepth=8

HP Fortify Static Code Analyzer (4.40) Página 54 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

com.fortify.sca.limiters.MaxChainDepth=8

Durante la fase de conversión, utilice la siguiente opción:

-django-template-dirs <path/to/template/dirs>

Opciones de la línea de comandos de Python


En la siguiente tabla se describen las opciones de Python.

Opción de Python Descripción

-python-path <path> Especifica la ruta de acceso de directorios de importación


adicionales. SCA no respeta la variable de entorno PYTHONPATH
que el sistema en tiempo de ejecución de Python utiliza para
encontrar los archivos importados. Utilice la opción
-python-path para especificar directorios de importación
adicionales.

-django-template-dirs <path> Hace que se examine el código creado con el marco Django,
donde <path> es la ubicación de los directorios de plantilla de
Django.

Acerca de la conversión de código


ColdFusion
Para tratar las variables indefinidas de una página CFML como contaminadas, quite la marca de
comentario de la siguiente línea en <Installation_Dir>/Core/config/fortify-sca.properties:

#com.fortify.sca.CfmlUndefinedVariablesAreTainted=true

Esta acción sirve de indicación al analizador de flujo de datos para que esté atento a las
vulnerabilidades del tipo register_globals. Sin embargo, si habilita esta propiedad, puede interferir en la
detección de flujo de datos en los que una variable de una página incluida se inicializa como un valor
contaminado en una página incluida anterior.

Sintaxis de la línea de comandos de ColdFusion


Escriba lo siguiente para convertir código fuente ColdFusion:

sourceanalyzer -b <build_id> -source-base-dir <dir> <files> | <file specifiers>

HP Fortify Static Code Analyzer (4.40) Página 55 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

En este caso:
l <build_id> especifica el id. de compilación del proyecto.
l <dir> especifica el directorio raíz de la aplicación web.
l <files> | <file specifiers> especifica los archivos de código fuente CFML.

Nota: SCA calcula la ruta de acceso relativa de cada archivo de código fuente CFML con el
directorio -source-base-dir como punto de partida y, a continuación, usa estas rutas de acceso
relativas para generar los id. de instancia. Si todo el árbol de código fuente de la aplicación se
traslada a otro directorio, los id. de instancia generados por un análisis de seguridad deberían
permanecer invariables si se especifica un parámetro adecuado para -source-base-dir.

Para obtener una descripción del uso de <file specifiers>, consulte "Especificación de archivos" en la
página 85.

Opciones de ColdFusion
En la siguiente tabla se describen las opciones de ColdFusion.

Opción de ColdFusion Descripción

-source-base-dir El directorio raíz de la aplicación web.


<web_app_root_dir> <files> | <file specifiers>

-source-archive <zip_file> El repositorio de archivos de código


fuente de la aplicación. Debe incluir las
opciones -scan y -f para poder usar esta
opción.

Acerca de la conversión de SQL


De forma predeterminada, se supone que los archivos con la extensión .sql en plataformas Windows
son archivos T-SQL, en lugar de archivos PL/SQL. Si utiliza Windows y tiene archivos PL/SQL con la
extensión .sql, debería configurar SCA para que los trate como archivos PL/SQL. Para cambiar el
comportamiento predeterminado, establezca la propiedad com.fortify.sca.fileextensions.sql de
fortify-sca.properties en TSQL o PLSQL.
Escriba uno de los siguientes fragmentos de código para especificar la conversión del tipo de SQL en
plataformas Windows:

sourceanalyzer -b <build_id> -sql-language TSQL <files>

O bien

sourceanalyzer -b <build_id> -sql-language PL/SQL <files>

HP Fortify Static Code Analyzer (4.40) Página 56 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

Ejemplo de la línea de comandos de PL/SQL


En el siguiente ejemplo se muestra la sintaxis para convertir dos archivos PL/SQL:

sourceanalyzer -b MyProject x.pks y.pks

En el siguiente ejemplo se muestra cómo convertir todos los archivos PL/SQL del directorio sources:

sourceanalyzer -b MyProject "sources/**/*.pks"

Ejemplo de la línea de comandos de T-SQL


En el siguiente ejemplo se muestra la sintaxis para convertir dos archivos T-SQL:

sourceanalyzer -b MyProject x.sql y.sql

En el siguiente ejemplo se muestra cómo convertir todos los archivos T-SQL del directorio sources:

sourceanalyzer -b MyProject "sources\**\*.sql"

Nota: En este ejemplo se da por supuesto que la propiedad


com.fortify.sca.fileextensions.sql de fortify-sca.properties está establecida en
TSQL.

Acerca de la conversión de raíces virtuales


de ASP/VBScript
SCA permite controlar raíces virtuales de ASP. En servidores web que usan directorios virtuales como
alias que se asignan a directorios físicos, SCA permite utilizar un alias.
Por ejemplo, puede tener unos directorios virtuales llamados Include y Library que hagan referencia
a los directorios físicos C:\WebServer\CustomerOne\inc y C:\WebServer\CustomerTwo\Stuff,
respectivamente.
Por ejemplo, el código ASP/VBScript de una aplicación que utiliza directorios INCLUDE virtuales es el
siguiente:

<!--#include virtual="Include/Task1/foo.inc"-->

El código ASP anterior hace referencia al directorio físico real del siguiente modo:

C:\Webserver\CustomerOne\inc\Task1\foo.inc

El directorio real reemplaza el nombre de directorio virtual Include en esa instancia.

HP Fortify Static Code Analyzer (4.40) Página 57 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

Adaptación de raíces virtuales


Para indicar a SCA la asignación de cada directorio virtual, debe establecer la propiedad
com.fortify.sca.ASPVirtualRoots.name_of_virtual_directory como parte de la invocación de
la línea de comandos de souceanalyzer del siguiente modo:

sourceanalyzer -Dcom.fortify.sca.ASPVirtualRoots.<name_of_virtual_
directory>=<full path to corresponding physical directory>

Nota: En Windows, si la ruta de acceso física tiene espacios, debe poner la definición de la
propiedad entre comillas dobles:
sourceanalyzer "-Dcom.fortify.sca.ASPVirtualRoots.<name_of_virtual_
directory>=<full path to corresponding physical directory>"

Para profundizar en el ejemplo de la sección anterior, el valor de propiedad que debe pasar debería ser:

-Dcom.fortify.sca.ASPVirtualRoots.Include=”C:\WebServer\CustomerOne\inc”

-Dcom.fortify.sca.ASPVirtualRoots.Library="C:\WebServer\CustomerTwo\Stuff”

De este modo, Include y Library se asignan a sus directorios respectivos.


Cuando SCA encuentra la directiva INCLUDE:

<!-- #include virtual="Include/Task1/foo.inc" -->

SCA primero comprueba si el proyecto contiene un directorio físico denominado Include. Si no existe
tal directorio físico, SCA busca en sus propiedades de tiempo de ejecución y encuentra lo siguiente:

-Dcom.fortify.sca.ASPVirtualRoots.Include="C:\WebServer\CustomerOne\inc"

Esto indica a SCA que el directorio virtual Include es realmente el directorio:


C:\WebServer\CustomerOne\inc. Como consecuencia, SCA busca este archivo:
C:\WebServer\CustomerOne\inc\Task1\foo.inc.
Como alternativa, si opta por establecer esta propiedad en el archivo fortify-sca.properties, el
cual se encuentra en <Installation_Dir>\Core\config, debe añadir un carácter de escape a la
barra diagonal inversa (\) en la ruta de acceso del directorio físico:

com.fortify.sca.ASPVirtualRoots.Library=C:\\WebServer\\CustomerTwo\\Stuff

com.fortify.sca.ASPVirtualRoots.Include=C:\\WebServer\\CustomerOne\\inc

Nota: La versión anterior de la propiedad ASPVirtualRoot sigue siendo válida. Puede usarla en la
línea de comandos de SCA del siguiente modo:
-Dcom.fortify.sca.ASPVirtualRoots=C:\WebServer\CustomerTwo\Stuff;
C:\WebServer\CustomerOne\inc
De este modo, se solicita a SCA que busque en los directorios enumerados, en el orden especificado,
cuando resuelva una directiva INCLUDE virtual.

HP Fortify Static Code Analyzer (4.40) Página 58 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

Ejemplo de uso de raíces virtuales


Suponga que dispone del siguiente archivo:

C:\files\foo\bar.asp

Puede especificar este archivo con la siguiente directiva INCLUDE:

<!-- #include virtual="/foo/bar.asp">

Para establecer la raíz virtual en el comando sourceanalyzer, debería usar lo siguiente:

-Dcom.fortify.sca.ASPVirtualRoots=C:\files\foo

De este modo, se quita /foo del inicio de la raíz virtual. Si no especifica foo en la propiedad
com.fortify.sca.ASPVirtualRoots, SCA busca en C:\files\bar.asp, y se produce un error.
La secuencia para especificar raíces virtuales es la siguiente:
1. Quite la primera parte de la ruta de acceso en el código fuente.
2. Reemplace la primera parte de la ruta de acceso con la raíz virtual, tal como se especifica en la
línea de comandos.

Ejemplo de la línea de comandos de ASP


clásico
Para convertir un solo archivo de ASP clásico escrito en VBScript, denominado MyASP.asp, escriba:

sourceanalyzer -b mybuild "MyASP.asp"

Ejemplo de la línea de comandos de


JavaScript
Para convertir todos los archivos JavaScript del directorio scripts, escriba:

sourceanalyzer -b mybuild "scripts/*.js"

HP Fortify Static Code Analyzer (4.40) Página 59 de 147


Guía del usuario
Capítulo 11: Conversión de otros lenguajes

Ejemplo de la línea de comandos de


VBScript
Para convertir un archivo VBScript llamado myApp.vb, escriba:

sourceanalyzer -b mybuild "myApp.vb"

Ejemplo de la línea de comandos de PHP


Para convertir un solo archivo PHP llamado MyPHP.php, escriba lo siguiente:

sourceanalyzer -b mybuild "MyPHP.php"

Para convertir un archivo cuyo código fuente o cuya entrada del archivo php.ini incluya un nombre de
ruta de acceso relativa (es decir, que comienza por ./ o ../), debe establecer la raíz del código fuente
PHP de la siguiente manera:

sourceanalyzer -php-source-root <path> -b mybuild "MyPHP.php"

En este caso, <path> es la ruta de acceso absoluta o relativa al directorio raíz del proyecto. El nombre
de ruta de acceso relativa se expande desde el directorio raíz del proyecto de PHP.

HP Fortify Static Code Analyzer (4.40) Página 60 de 147


Capítulo 12: Utilidades de la línea de
comandos
Los temas tratados en esta sección son los siguientes:

• Acerca de las utilidades de SCA 61


• Precompilación de páginas ASP.NET de MS Visual Studio 2003 63
• Comprobación de estado del examen de SCA 63
• Acerca del uso de archivos FPR 65
• Acerca de la generación de informes 72
• Acerca de la actualización del contenido de seguridad 74

Acerca de las utilidades de SCA


Las utilidades de SCA son una colección de utilidades de la línea de comandos diseñadas para
administrar paquetes de reglas, archivos FPR y otros procesos de nivel de sistema. A menos que se
indique lo contrario, estas utilidades se encuentran en <install_directory>/bin/. Las utilidades se
proporcionan como archivos .bat o .cmd (en Windows), o bien como scripts .sh (en Unix).
En la siguiente tabla, podrá encontrar descripciones de las utilidades.

Más
Utilidad Descripción información

fortify_aspnet_ Precompila páginas ASPX de Microsoft Visual Studio "Precompilación


compiler 2003 antes del análisis. de páginas
ASP.NET de
MS Visual
Studio 2003" en
la página 63.

SCAState Proporciona información de análisis de estado sobre "Comprobación


JVM durante la fase de examen. de estado del
examen de
SCA" en la
página 63.

FPRUtility Combina proyectos auditados, verifica firmas de FPR, "Acerca del uso
migra proyectos de auditoría de versiones anteriores a de archivos
formatos nuevos, muestra asignaciones de un proyecto FPR" en la
migrado, muestra los errores asociados a un archivo página 65.
FPR, muestra el número de problemas de un archivo
FPR, y combina o divide archivos de código fuente y

HP Fortify Static Code Analyzer (4.40) Página 61 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Más
Utilidad Descripción información

proyectos de auditoría en archivos FPR.

BIRTReportGenerator Genera informes BIRT e informes de HP Fortify "Acerca de la


y ReportGenerator anteriores a partir de archivos FPR. generación de
informes" en la
página 72.

fortifyupdate Compara el contenido de seguridad instalado con la "Acerca de la


versión más reciente y realiza las actualizaciones actualización
necesarias. del contenido de
seguridad" en la
página 74

Otras utilidades de la línea de comandos


Además de las utilidades de la línea de comandos de SCA que se describen en esta guía, HP Fortify
proporciona las utilidades de la línea de comandos descritas en la siguiente tabla.

Utilidad Descripción Más información

fortifyclient Crea tokens de autenticación fortifyclient, archivos Consulte el documento


FPR de carga y descarga, y eventos en tiempo de Guía de instalación y
ejecución de archivo y restauración. configuración de HP
Fortify Software
Security Center.

scapostinstall Tras la instalación de SCA, permite migrar archivos de Consulte el documento


propiedades de una versión anterior de SCA, Guía de instalación de
especificar una configuración regional y especificar un HP Fortify Static Code
servidor proxy para actualizaciones de contenido de Analyzer.
seguridad.

HP Fortify Static Code Analyzer (4.40) Página 62 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Precompilación de páginas ASP.NET de


MS Visual Studio 2003
Antes de ejecutar un análisis de código fuente en código generado por ASP.NET de MS Visual Studio
2003, necesita precompilarlo con la utilidad ASP.NET Compiler, fortify_aspnet_compiler. La
utilidad fortify_aspnet_compiler se encuentra en el directorio Tools de la instalación. Para
precompilar páginas ASPX de Visual Studio 2003:
1. Vaya al directorio Tools: <install_directory>/Tools/
2. Escriba lo siguiente para ejecutar la utilidad:
fortify_aspnet_compiler <website_address> <source_root>
En el ejemplo anterior, <website_address> es la URL del sitio web que contiene los archivos
ASPX que desea examinar y <source_root> es la raíz de origen del proyecto web.
Para obtener más información, consulte "Conversión de proyectos de ASP.NET 1.1 (Visual Studio
2003)" en la página 30.

Comprobación de estado del examen de


SCA
Use la utilidad SCAState para obtener información actualizada de análisis de estado durante la fase de
examen.
Para comprobar el estado de SCA, realice lo siguiente:
1. Ejecute un examen de SCA.
2. Abra otra ventana de comandos.
3. Escriba lo siguiente en el símbolo del sistema:
SCAState [<options>]

Opciones de la utilidad SCAState


En la siguiente tabla se enumeran las opciones de la utilidad SCAState.

Opción Descripción

-a, --all Muestra toda la información disponible.

-debug Muestra información útil para depurar el comportamiento de


SCAState.

-ftd, --full-thread-dump Imprime un volcado de subprocesos de cada uno de los


subprocesos.

HP Fortify Static Code Analyzer (4.40) Página 63 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción Descripción

-h, --help Muestra la información de ayuda de la utilidad SCAState.

-hd, --heap-dump <filename> Especifica el archivo en el que se escribe el volcado de montón.


Se interpreta que el archivo está en una ruta de acceso relativa al
directorio de trabajo del examen remoto, el cual no es
necesariamente el mismo directorio desde el cual se ejecuta
SCAState.

-liveprogress Muestra el estado actual de un examen en ejecución. Este es el


valor predeterminado. Si es posible, esta información se muestra
en una ventana de terminal independiente.

-nogui Hace que la información de estado de SCA se muestre en la


ventana de terminal actual en lugar de una ventana
independiente.

-pi, --program-info Muestra información sobre el código fuente que se está


examinando, incluido el número de archivos de código fuente y
de funciones que contiene.

-pid <process_id> Especifica el id. del proceso de SCA que se está ejecutando.
Utilice esta opción si varios procesos de SCA se están
ejecutando simultáneamente.
Para obtener el id. de proceso en sistemas Windows, realice los
siguientes pasos:
1. Abra una ventana de comandos.
2. Escriba tasklist en el símbolo del sistema.
Se muestra una lista de procesos.
3. Busque el proceso java.exe en la lista y anote su id. de
proceso.
Para buscar el id. de proceso en sistemas Linux o Unix, realice lo
siguiente:
l Escriba ps aux | grep sourceanalyzer en el símbolo del
sistema.

-progress Muestra la información de examen hasta el momento en que se


emitió el comando. Esta información incluye el tiempo
transcurrido, la fase actual del análisis y el número de resultados
obtenidos hasta el momento.

-properties Muestra las opciones de configuración (no se incluye la


información confidencial como, por ejemplo, las contraseñas).

-scaversion Muestra el número de versión de SCA.

-td, --thread-dump Imprime un volcado de subprocesos del subproceso de examen


principal.

HP Fortify Static Code Analyzer (4.40) Página 64 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción Descripción

-timers Muestra información acerca los temporizadores y los contadores


instrumentados en SCA.

-version Muestra la versión de SCAState.

-vminfo Muestra estadísticas proporcionadas por los objetos MXBean


estándar de la JVM: ClassLoadingMXBean,
CompilationMXBean, GarbageCollectorMXBeans,
MemoryMXBean, OperatingSystemMXBean, RuntimeMXBean
y ThreadMXBean.

<none> Muestra la información de progreso del examen (al igual que


-progress).

Nota: SCA escribe la información del proceso de Java en la ubicación de la variable de entorno del
sistema TMP. En sistemas Windows, la variable de entorno del sistema TMP se encuentra en
C:\Users\<userID>\AppData\Local\Temp. Si se cambia esta variable de entorno del sistema
TMP para que apunte a una ubicación distinta, SCAState no encuentra el proceso de Java de
sourceanalyzer y no devuelve los resultados esperados. Para resolver este problema, cambie la
variable de entorno del sistema TMP para que coincida con la nueva ubicación de TMP. HP Fortify
recomienda la ejecución de SCAState como administrador en Windows.

Acerca del uso de archivos FPR


Utilice FPRUtility, que se encuentra en el directorio bin de la instalación de SCA, para realizar las
siguientes tareas:
l "Combinación de archivos FPR" En la página siguiente.
l "Visualización de resultados de análisis de un archivo FPR" en la página 67.
l "Migración de datos de auditoría de versiones anteriores de FPR" en la página 70.
l "Extracción de un archivo de código fuente de un archivo FPR" en la página 71.

HP Fortify Static Code Analyzer (4.40) Página 65 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Combinación de archivos FPR


La opción -merge de FPRUtility combina la información de análisis de dos archivos FPR en un único
archivo FPR y, en caso de conflicto, utiliza los valores del proyecto principal.
Para combinar archivos FPR, utilice lo siguiente:

FPRUtility -merge -project <primary.fpr> -source <secondary.fpr> \


-f <output.fpr>

Para combinar archivos FPR y establecer las opciones del migrador de id. de instancia, utilice lo
siguiente:

FPRUtility -merge -project <primary.fpr> -source <secondary.fpr> \


-f <output.fpr> -iidmigratorOptions "<iidmigrator_options>"

Opciones de combinación de datos de FPRUtility


En la siguiente tabla se enumeran las opciones de FPRUtility que se aplican a la combinación de
datos.

Opción Descripción

-merge Combina los archivos FPR de código fuente y del proyecto


especificados.

-project <primary.fpr> Especifica el archivo FPR principal que desea combinar. Los
conflictos se resuelven con los valores de este archivo.

-source <secondary.fpr> Especifica el archivo FPR secundario que desea combinar. En


caso de conflicto, los valores se reemplazan con el objeto principal.

-f <output.fpr> Especifica el nombre del archivo de salida combinado. Este archivo


es el resultado de los archivos combinados.

Nota: Si especifica esta opción, no se modifica ninguno de los


archivos FPR originales. Si no la utiliza, el FPR principal se
sobrescribe con los resultados combinados.

-forceMigration Fuerza la migración, incluso si las versiones del motor y del


paquete de reglas de ambos proyectos son idénticas.

-useMigrationFile Especifica un archivo de asignación de id. de instancia. Si se


<mapping_file> especifica un archivo de migración, se pueden modificar
manualmente las asignaciones en lugar de usar los resultados de
migración. Proporcione su propio archivo de asignación de id. de
instancia.

-useSourceProjectTemplate Obliga a utilizar los conjuntos de filtros y las carpetas de la plantilla

HP Fortify Static Code Analyzer (4.40) Página 66 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción Descripción

de proyecto en el archivo FPR secundario. De forma


predeterminada, SCA utiliza los conjuntos de filtros y las carpetas
de la plantilla de proyecto en el FPR principal.

-iidmigratorOptions Especifica las opciones del migrador de id. de instancia. Incluya las
<iidmigrator_options> opciones separadas por espacios y entre comillas. Algunas
opciones válidas son:
l -i proporciona una comparación de nombres de archivo de los
archivos combinados que distingue mayúscula de minúsculas.
l -u <scheme_file> ordena a iidmigrator leer el esquema
coincidente de <scheme_file> para la migración de id. de
instancia.

Nota: Ponga las opciones de -iidmigrator entre comillas


simples ('-u <scheme_file>') cuando utilice un símbolo del
sistema de Cygwin.

Ejemplo de Windows:

FPRUtility -merge -project primary.fpr


-source secondary.fpr -f output.fpr
-iidmigratorOptions "-u scheme_file"

Códigos de salida de combinación de datos de FPRUtility


Cuando finaliza el comando -merge de FPRUtility, se muestra uno de los códigos de salida
enumerados en la siguiente tabla.

Código de salida Descripción

0 La combinación se realizó correctamente.

5 Se produjo un error en la combinación.

Visualización de resultados de análisis de un


archivo FPR
La opción -information de FPRUtility muestra información sobre el proyecto. Puede obtener
información para validar firmas, ver asignaciones de un proyecto migrado, examinar los errores
asociados al archivo FPR y obtener la cantidad de problemas de cada analizador, categoría de
vulnerabilidad o agrupación personalizada.
Para mostrar la información de firma del proyecto, utilice lo siguiente:

FPRUtility -information -signature -project <project.fpr> -f <output.txt>

HP Fortify Static Code Analyzer (4.40) Página 67 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Para mostrar el informe de asignaciones de migración, utilice lo siguiente:

FPRUtility -information -mappings -project <project.fpr> -f <output.txt>

Para mostrar un informe de errores de análisis completo del archivo FPR, utilice lo siguiente:

FPRUtility -information -errors -project <project.fpr> -f <output.txt>

Para mostrar el número de problemas por analizador o categoría de vulnerabilidad, utilice lo siguiente:

FPRUtility -information -categoryIssueCounts -project <project.fpr>


FPRUtility -information -analyzerIssueCounts -project <project.fpr>

Para mostrar el número de problemas de una agrupación personalizada basada en una búsqueda,
utilice lo siguiente:

FPRUtility -information -search -query "search expression" \


[-categoryIssueCounts] [-analyzerIssueCounts] \
[-includeSupressed] [-includeRemoved] \
-project <project.fpr> -f <output.txt>

Nota: De forma predeterminada, el resultado no incluye los problemas suprimidos o eliminados. Si


desea incluir los problemas suprimidos o eliminados, use las opciones -includeSupressed o -
includeRemoved.

Opciones de información de FPRUtility


En la siguiente tabla se enumeran las opciones de FPRUtility que se aplican a la información del
proyecto.

Opción Descripción

-information Muestra información del proyecto.

Una de las siguientes: La opción -signature muestra la firma.


-signature La opción -mappings muestra el informe
-mappings de asignaciones de migración.
-errors
La opción -errors muestra un informe de
-categoryIssueCounts
errores completo del archivo FPR.
-analyzerIssueCounts
-search -query <search_expression> La opción -analyzerIssueCounts
[-categoryIssueCounts] [-analyzerIssueCounts] muestra el número de problemas de cada
[-includeSupressed] [-includeRemoved] analizador.
La opción -categoryIssueCounts
muestra el número de problemas en cada
categoría de vulnerabilidad.
La opción -search -query muestra el
número de problemas en el resultado de la

HP Fortify Static Code Analyzer (4.40) Página 68 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción Descripción

expresión de búsqueda especificada.


Existe otra forma de mostrar el número de
problemas por categoría de vulnerabilidad
o por analizador, la cual consiste en
agregar las opciones facultativas
-categoryIssueCounts y
-analyzerIssueCounts a la opción de
búsqueda. Use las opciones
-includeSuppressed y
-includeRemoved para incluir los
problemas suprimidos o eliminados.

-project <project.fpr> Especifica el archivo FPR del que se


debe extraer la información de resultados.

-f <output.txt> Especifica el archivo que se va a usar


para la salida. El valor predeterminado es
System.out.

Códigos de salida de firma de FPRUtility


Cuando finaliza el comando -information -signature de FPRUtility, se muestra uno de los códigos
de salida enumerados en la siguiente tabla.

Código de
salida Descripción

0 El proyecto se ha firmado y todas las firmas son válidas.

1 El proyecto se ha firmado y algunas firmas (aunque no todas) han superado la


prueba de validez.

2 El proyecto se ha firmado, pero ninguna de las firmas es válida.

3 El proyecto no tiene ninguna firma para validar.

HP Fortify Static Code Analyzer (4.40) Página 69 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Migración de datos de auditoría de versiones


anteriores de FPR
La opción -migrate de FPRUtility usa un archivo de plantilla especificado para migrar un archivo FPR
especificado de una versión anterior y actualizar la información de análisis al nuevo formato de
proyecto de auditoría.
Para migrar datos de auditoría, utilice lo siguiente:

FPRUtility -migrate -project <OldProject.fpr> -settings <Settings.properties> -f


<output.fpr>

Opciones de FPRUtility para migrar datos de auditoría


En la siguiente tabla se enumeran las opciones de FPRUtility que se aplican a la migración de datos de
auditoría.

Opción Descripción

-migrate Migra el FPR al nuevo formato.

-project <Oldproject.fpr> Especifica el nombre del FPR que desea migrar.

-settings <Settings.properties> Especifica el archivo de configuración de migración que se


va a usar. Este archivo de propiedades es la plantilla que se
aplica al FPR. Contiene la configuración de formato del
nuevo proyecto de auditoría.

-f <output.fpr> Especifica el archivo que se va a usar como salida.

HP Fortify Static Code Analyzer (4.40) Página 70 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Extracción de un archivo de código fuente de un


archivo FPR
La opción -sourceArchive de FPRUtility crea un archivo de código fuente (FSA) a partir de un archivo
FPR especificado y quita el código fuente del archivo FPR. Puede extraer el código fuente de un
archivo FPR, o bien puede volver a combinar un archivo de código fuente (FSA) en un archivo FPR.
Para archivar los datos, utilice lo siguiente:

FPRUtility -sourceArchive -extract -project <project.fpr> -f <outputArchive.fsa>

Para archivar los datos en una carpeta, utilice lo siguiente:

FPRUtility -sourceArchive -extract -project <project.fpr> \


-recoverSourceDirectory -f <outputFolder>

Para agregar un archivo a un archivo FPR, utilice lo siguiente:

FPRUtility -sourceArchive -mergeArchive -project <project.fpr> \


-source <oldSourceArchive.fsa> -f <ProjectWithArchive.fpr>

Opciones de FPRUtility para archivar archivos FPR


En la siguiente tabla se enumeran las opciones de FPRUtility que se aplican al proceso de archivo de
los archivos FPR.

Opción Descripción

-sourceArchive Crea un archivo FSA para poder extraer un archivo de código


fuente.

Una de las siguientes: La opción -extract extrae el contenido del archivo FPR.
-extract La opción -mergeArchive combina el contenido del archivo
-mergeArchive FPR con otro archivo que ya haya sido archivado.

-project <project.fpr> Especifica el archivo FPR que desea archivar.

-source <oldSourceArchive.fsa> Especifica el nombre del archivo existente. Use esta opción
únicamente si combina un archivo FPR con un archivo
existente (opción -mergeArchive).

-recoverSourceDirectory Use esta opción junto con la opción -extract para extraer el
código fuente como una carpeta con archivos de código
fuente restaurados.

-f <ProjectWithArchive.fpr> | Especifica el archivo que se va a usar como salida. Puede


<outputArchive.fsa> | generar un archivo FPR, una carpeta o un archivo FSA.
<outputFolder>

HP Fortify Static Code Analyzer (4.40) Página 71 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Acerca de la generación de informes


Existen dos utilidades de la línea de comandos para generar informes: BIRTReportGenerator y
ReportGenerator. BIRTReportGenerator produce informes basados en el sistema BIRT (Business
Intelligence and Reporting Tools). BIRT es un sistema de generación de informes de código abierto.
La utilidad ReportGenerator utiliza la línea de comandos para generar informes anteriores a partir de
archivos FPR. Si no especifica una plantilla de informe se usa la plantilla de informe predeterminada.
Consulte la Guía del usuario de HP Fortify Audit Workbench para obtener una descripción de las
plantillas de informe disponibles.
Ambas utilidades de generación de informes se encuentran en el directorio <install_dir>/bin.

Generación de un informe BIRT


La sintaxis básica de la línea de comandos para generar un informe BIRT es la siguiente:

BIRTReportGenerator -template <template_name> -source <auditedProject.fpr>


-output <reportFile> -format PDF|DOC|HTML

En este ejemplo se genera un informe “OWASP Top 10 2010” con opciones adicionales:

BIRTReportGenerator -template "OWASP Top 10" -source auditedProject.fpr


-output MyOWASP_Top10_Report.pdf -format PDF -showSuppressed
--Version "OWASP Top 10 2010" --UseFortifyPriorityOrder

Cuando se ejecuta BIRTReportGenerator, se muestra el siguiente mensaje de advertencia (el cual


puede omitirse sin problemas):

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m;


support was removed in 8.0

Opciones de BIRTReportGenerator
En la siguiente tabla se enumeran las opciones de BIRTReportGenerator.

Opción Descripción

-template <template_name> Especifica el nombre de plantilla de informe. Los valores


válidos son los siguientes: "Developer Workbook",
"DISA STIG", "CWE/SANS Top 25", "FISMA Compliance",
"OWASP Mobile Top 10", "OWASP Top 10" y
"PCI DSS Compliance".

-source <auditedProject.fpr> Especifica el proyecto auditado en el que se basa el informe.

-format <format> Especifica el formato del informe generado. Los valores

HP Fortify Static Code Analyzer (4.40) Página 72 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción Descripción

válidos para <format> son los siguientes: PDF, DOC y HTML.

-output <resultsfile.***> Especifica el archivo en el que se escribe el informe.

-searchQuery <query> Especifica una consulta de búsqueda para filtrar los problemas
antes de generar el informe.

-showSuppressed Incluye los problemas que se han marcado como suprimidos.

-showRemoved Incluye los problemas que se han marcado como eliminados.

-showHidden Incluye los problemas que se han marcado como ocultos.

-filterSet <filterset_name> Especifica un conjunto de filtros que se va a usar para generar


el informe. Por ejemplo: -filterSet "Quick View".

--Version <version> Especifica la versión de la plantilla. A continuación, se


enumeran los valores válidos para las versiones de plantilla.

Nota: La primera versión que aparece para cada plantilla


es la predeterminada.

Para la plantilla “CWE/SANS Top 25”:


"2011 CWE/SANS Top 25", "2010 CWE/SANS Top 25" y
"2009 CWE/SANS Top 25"
Para la plantilla “DISA STIG”:
"DISA STIG 3.9", "DISA STIG 3.7", "DISA STIG 3.5",
"DISA STIG 3.4" y "DISA STIG 3"
Para la plantilla “OWASP Top 10”:
"OWASP Top 10 2013", "OWASP Top 10 2010",
"OWASP Top 10 2007" y "OWASP Top 10 2004"
Para la plantilla “PCI DSS Compliance”:
"3.0 Compliance" y "2.0 Compliance"

--IncludeDescOfKeyTerminology Incluye la sección “Description of Key Terminology” en el


informe.

--IncludeHPEnterpriseSecurity Incluye la sección “About HP Enterprise Security Products” en


el informe.

--SecurityIssueDetails Proporciona descripciones detalladas de los problemas


incluidos en el informe. Esta opción no está disponible para la
plantilla "Developer Workbook".

--UseFortifyPriorityOrder Usa Fortify Priority en lugar de nombres de carpeta para


categorizar los problemas. Esta opción no está disponible para
las plantillas "Developer Workbook" y "PCI Compliance".

HP Fortify Static Code Analyzer (4.40) Página 73 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Generación de un informe anterior


Para generar un informe (en PDF), utilice lo siguiente:

ReportGenerator -format pdf -f <resultsFile.pdf> -source <auditedProject.fpr>

Para generar un informe (en XML), utilice lo siguiente:

ReportGenerator -format XML -f <resultsFile.xml> -source <auditedProject.fpr>

Opciones de ReportGenerator
En la siguiente tabla se enumeran las opciones de ReportGenerator.

Opción Descripción

-format <format> Especifica el formato del informe generado. Los valores válidos
para <format> son los siguientes: PDF, RTF y XML.

-f <resultsfile.***> Especifica el archivo en el que se escribe el informe.

-source <auditedProject.fpr> Especifica el proyecto auditado en el que se basa el informe.

-template <template_name> Especifica la plantilla de proyecto que se usa para definir el


informe. Si no se especifica, se utiliza la plantilla
predeterminada.

-user <username> Especifica un nombre de usuario que se agregará al informe.

-showSuppressed Incluye los problemas que se han marcado como suprimidos.

-showRemoved Incluye los problemas que SCA ha marcado como eliminados.

-showHidden Incluye los problemas que se han marcado como ocultos.

-filterset <filterset_name> Especifica un conjunto de filtros que se va a usar para generar


el informe. Por ejemplo: -filterset "Quick View".

-verbose Muestra los mensajes de estado en la consola.

Acerca de la actualización del contenido de


seguridad
La utilidad Fortify Update (fortifyupdate) actualiza la instalación mediante la descarga de los
paquetes de reglas de codificación segura de HP Fortify y los metadatos más recientes de HP Fortify
Customer Portal.

HP Fortify Static Code Analyzer (4.40) Página 74 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

La utilidad Fortify Update recopila información sobre el contenido de seguridad existente en la


instalación de HP Fortify y envía dicha información al servidor de actualización. El servidor devuelve
contenido de seguridad nuevo o actualizado y elimina el contenido de seguridad obsoleto de la
instalación de Fortify Static Code Analyzer. Si la instalación está actualizada, se muestra un mensaje
lo confirma.

Importante: Para evitar utilizar contenido de seguridad no válido, asegúrese de estar suscrito a
HP Fortify Customer Portal para que la configuración de su contenido de seguridad se realice en
https://update.fortify.com.

Actualización del contenido de seguridad


La utilidad fortifyupdate se encuentra en el directorio <Installation_Dir>/bin. Para actualizar la
instalación de HP Fortify con los paquetes de reglas de codificación segura de HP Fortify y los
metadatos más recientes, escriba el siguiente comando:

fortifyupdate [<options>]

Opciones de comandos del actualizador de Fortify


En la siguiente tabla se enumeran las opciones de fortifyupdate opcionales.

Opción de
FortifyUpdate Descripción

-import <file.zip> Importa el archivo .zip que incluye el contenido de seguridad archivado.

-acceptKey Acepta la clave pública. No se le solicita que proporcione una clave


pública.

-coreDir <directory> Especifica el directorio principal donde debe almacenarse la


actualización.

-locale <locale> Especifica una configuración regional. El valor predeterminado es el valor


establecido para la propiedad de configuración regional en el archivo de
configuración fortify.properties.

-proxyhost <host> Especifica un nombre de red o dirección IP de servidor proxy.

-proxyport <port> Especifica un número de puerto de servidor proxy.

-proxyUsername Si el servidor proxy requiere autenticación, especifica el nombre de


<username> usuario.

-proxyPassword Si el servidor proxy requiere autenticación, especifica la contraseña.


<password>

-url <url> Especifica una URL desde donde puede descargarse el contenido de
seguridad. La URL predeterminada es https://update.fortify.com o
el valor establecido para la propiedad rulepackupdate.server en el

HP Fortify Static Code Analyzer (4.40) Página 75 de 147


Guía del usuario
Capítulo 12: Utilidades de la línea de comandos

Opción de
FortifyUpdate Descripción

archivo de configuración server.properties. Para obtener más


información sobre el archivo de configuración server.properties,
consulte la Guía de referencia y propiedades de herramientas de HP
Fortify Static Code Analyzer.

HP Fortify Static Code Analyzer (4.40) Página 76 de 147


Capítulo 13: Solución de problemas y
soporte
Los temas tratados en esta sección son los siguientes:

• Uso del archivo de registro para depurar problemas 77


• Acerca del mensaje de error de conversión 77
• Acerca de los problemas de conversión de JSP 78
• Acerca de los archivos de encabezado precompilado de C/C++ 78
• Notificación de errores y solicitud de mejoras 79

Uso del archivo de registro para depurar


problemas
Si recibe advertencias y se producen problemas al ejecutar SCA, vuelva a ejecutar SCA con la opción
-debug. Como resultado, se genera un archivo denominado sca.log en el siguiente directorio:
l En Windows: C:\Users\<user>\AppData\Local\Fortify\sca<version>\log
l En otras plataformas: $HOME/.fortify/sca<version>/log
En el ejemplo anterior, <version> es la versión de SCA que se está usando.
Envíe un ZIP con el archivo sca.log al soporte técnico de HP Fortify a la dirección de correo
electrónico FortifyTechSupport@hpe.com.

Acerca del mensaje de error de conversión


Si la aplicación C o C++ se compila correctamente pero se reciben uno o varios mensajes de error de
conversión durante la compilación con SCA, edite el archivo <Installation_
Dir>/Core/config/fortify-sca.properties para cambiar la siguiente línea:

com.fortify.sca.cpfe.options= --remove_unneeded_entities --suppress_vtbl

Reemplace la línea anterior por la siguiente:

com.fortify.sca.cpfe.options= -w --remove_unneeded_entities --suppress_vtbl

Vuelva a ejecutar la compilación para imprimir los errores que haya encontrado el conversor. Si la
salida indica una incompatibilidad entre el compilador y el conversor de SCA, envíe la salida al soporte
técnico de HP Fortify para que investiguen con mayor profundidad.

HP Fortify Static Code Analyzer (4.40) Página 77 de 147


Guía del usuario
Capítulo 13: Solución de problemas y soporte

Acerca de los problemas de conversión de


JSP
SCA utiliza el compilador integrado o el compilador de JSP de su servidor de aplicaciones específico
para convertir los archivos JSP en archivos de Java que pueden analizarse. Si el analizador de JSP
encuentra problemas mientras SCA convierte archivos JSP en archivos de Java que puedan
analizarse, recibirá un mensaje similar al siguiente:

Failed to translate the following jsps into analysis model. Please see the log
file for any errors from the jsp parser and the user manual for hints on fixing
those
<List of JSP file names>

Esto suele ocurrir por uno o varios de los siguientes motivos:


l La aplicación web no tiene un formato de directorio WAR adecuado que se pueda implementar.
l Faltan algunos archivos JAR o clases que son necesarios para la aplicación.
l En la aplicación faltan algunas bibliotecas de etiquetas o sus definiciones (TLD).
Para obtener más información sobre el problema, ejecute los siguientes pasos:
1. Abra el archivo de registro de SCA en un editor.
2. Busque las cadenas Jsp parser stdout: y Jsp parser stderr:.
El analizador de JSP que se ha utilizado genera estos errores. Resuelva los errores y vuelva a ejecutar
SCA.
Para obtener más información sobre el examen de aplicaciones J2EE, consulte "Conversión de
aplicaciones J2EE" en la página 24.

Acerca de los archivos de encabezado


precompilado de C/C++
Algunos compiladores de C/C++ admiten una característica denominada “archivos de encabezado
precompilado”, la cual puede acelerar la compilación. En algunos compiladores, la implementación de
esta característica puede tener efectos secundarios sutiles. Si esta característica está habilitada, el
compilador puede aceptar código fuente con errores sin que aparezca ninguna advertencia o error.
Como resultado, SCA puede notificar errores de conversión incluso cuando el compilador no los
detecte.
Si utiliza la característica de encabezado precompilado del compilador, deshabilite los encabezados
precompilados y realice una compilación completa para asegurarse de que el código fuente se compile
sin errores.

HP Fortify Static Code Analyzer (4.40) Página 78 de 147


Guía del usuario
Capítulo 13: Solución de problemas y soporte

Notificación de errores y solicitud de


mejoras
Los comentarios son fundamentales para garantizar el éxito de este producto. Si desea solicitar
mejoras o revisiones, o bien notificar errores, envíe un correo electrónico al soporte técnico de
HP Fortify a la dirección FortifyTechSupport@hpe.com.
Asegúrese de incluir la siguiente información en el cuerpo del correo electrónico:
l Producto: SCA.
l Número de versión: para determinar el número de versión, ejecute lo siguiente:

sourceanalyzer -version

l Plataforma: (por ejemplo, PC).


l Sistema operativo: (por ejemplo, Windows 8).
Si desea solicitar mejoras, incluya una descripción de la mejora de la característica.
Si desea notificar errores, proporcione todos los detalles posibles para que el equipo de soporte pueda
reproducir el problema. Cuanto mejor describa el problema, mayor será la rapidez con la que el equipo
de soporte podrá analizarlo y corregirlo. Recuerde incluir también los archivos de registro (o las partes
relevantes de los mismos) que correspondan al momento en que se produjo el problema.

HP Fortify Static Code Analyzer (4.40) Página 79 de 147


Apéndice A: Interfaz de la línea de
comandos
En este capítulo se describen opciones generales de la línea de comandos de SCA y se muestra cómo
especificar archivos de código fuente para realizar el análisis. Las opciones de la línea de comandos
específicas para un lenguaje se describen en el capítulo de ese lenguaje.
Los temas tratados en esta sección son los siguientes:

• Opciones de salida 80
• Opciones de conversión 81
• Opciones de análisis 82
• Directivas 84
• Otras opciones 84
• Especificación de archivos 85

Opciones de salida
En la siguiente tabla se describen las opciones de salida.

Opción de salida Descripción

-f <file> Especifica el archivo en el que se escriben los resultados. Si no


especifica ningún archivo de salida, esta se escribe en el terminal.

-format <format> Controla el formato de salida. Las opciones válidas son: fpr, fvdl,
text y auto. El valor predeterminado es auto, el cual selecciona el
formato de salida en función de la extensión de archivo.

Nota: Si utiliza la certificación de resultados, debe especificar


el formato fpr. Consulte Guía del usuario de HP Fortify Audit
Workbench para obtener información sobre la certificación de
resultados.

-append Anexa los resultados al archivo que se especifica con la opción -f.
El archivo FPR resultante contiene los problemas del examen
anterior, así como los del actual. La información de compilación y los
datos de programa (listas de orígenes y receptores) también se
combinan. Para utilizar esta opción, el formato del archivo de salida
debe ser fpr o fvdl. Para obtener información sobre la opción de
salida -format, consulte la descripción que se ofrece en esta tabla.
Los datos del motor, que incluyen información sobre el paquete de

HP Fortify Static Code Analyzer (4.40) Página 80 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Opción de salida Descripción

reglas, las opciones de la línea de comandos, las propiedades del


sistema, las advertencias, los errores y otros detalles sobre la
ejecución de sourceanalyzer (en lugar de información sobre el
programa que se está analizando) no se combinan. Como los datos
del motor no se combinan con la opción -append, HP Fortify no
certifica los resultados generados con -append.
Si esta opción no se especifica, SCA añade cualquier nuevo
hallazgo al archivo FPR y aplica la etiqueta previous a los
resultados anteriores.
En general, solo utilice la opción -append cuando no sea posible
analizar toda la aplicación de una sola vez.

-disable-source-bundling Excluye archivos de código fuente del archivo FPR.

-build-label <label> Especifica la etiqueta del proyecto que se está examinando. SCA no
utiliza esta etiqueta, pero sí se incluye en los resultados del análisis.

-build-project <project> Especifica el nombre del proyecto que se está examinando. SCA no
utiliza el nombre, pero sí se incluye en los resultados del análisis.

-build-version <version> Especifica la versión del proyecto que se está examinando. SCA no
utiliza la versión, pero sí se incluye en los resultados del análisis.

Opciones de conversión
En la siguiente tabla se describen las opciones de conversión.

Opción de conversión Descripción

-b <build_id> Especifica el id. de compilación. El id. de compilación se utiliza


para realizar un seguimiento de los archivos que se compilan y se
combinan para formar parte de una compilación. Más adelante,
estos archivos se examinarán.

-exclude <file_pattern> Elimina archivos de la lista de archivos que se deben convertir.


Por ejemplo: sourceanalyzer –cp "**/*.jar" "**/*"
-exclude "**/Test.java"

-encoding <encoding_name> Especifica el tipo de codificación del archivo de código fuente. SCA
permite examinar un proyecto que contenga archivos de código
fuente con distinta codificación. Para trabajar con un proyecto con
varios códigos, debe especificar la opción -encoding en la fase de
conversión, cuando SCA lee por primera vez el archivo de código
fuente. Esta codificación se recuerda en la sesión de compilación y
se propaga en el archivo FVDL.

HP Fortify Static Code Analyzer (4.40) Página 81 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Opción de conversión Descripción

-nc Cuando se especifica antes de una línea de comandos del


compilador, SCA procesa el archivo de código fuente, pero no
ejecuta el compilador.

Opciones de análisis
En la siguiente tabla se describen las opciones de análisis.

Opción de análisis Descripción

-scan Hace que SCA analice el id. de compilación


especificado.

-quick Examina el proyecto en modo Quick Scan mediante el


archivo fortify-sca-quickscan.properties. De
forma predeterminada, este examen busca problemas de
confianza y gravedad altas que SCA puede descubrir con
rapidez. Para obtener más información sobre el modo
Quick Scan, consulte la Guía del usuario de HP Fortify
Audit Workbench.

-b <build_id> Especifica el id. de compilación. El id. de compilación se


utiliza para realizar un seguimiento de los archivos que se
compilan y se combinan para formar parte de una
compilación. Más adelante, también se utilizará para
examinarlos.

-bin <binary> Especifica el subconjunto de archivos de código fuente


que se examinarán. Solo se incluyen en el examen los
archivos de código fuente vinculados en el archivo binario
indicado durante la compilación. Esta opción de análisis
se puede utilizar varias veces para especificar la
inclusión de varios archivos binarios en el examen.

-noextension-type <type> Especifica el tipo de archivo de los archivos de código


fuente que no disponen de extensión. Los posibles
valores son: ABAP, ACTIONSCRIPT, ARCHIVE, ASP,
ASPX, BITCODE, BSP, BYTECODE, CFML, COBOL,
CSHARP, HTML, JAVA, JAVA_PROPERTIES,
JAVASCRIPT, JSP, JSPX, MSIL, MXML, PHP, PLSQL,
PYTHON, RUBY, RUBY_ERB, TLD, SQL, TSQL, VB,
VB6, VBSCRIPT y XML.

-filter <file> Especifica un archivo de filtro de resultados.

-findbugs Habilita el análisis FindBugs en el código Java. Los


directorios de clase Java se deben especificar con la

HP Fortify Static Code Analyzer (4.40) Página 82 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Opción de análisis Descripción

opción -java-build-dir, que se describe en "Opciones


de Java/J2EE" en la página 21.

-rules [<file>|<directory>] Especifica un paquete de reglas o un directorio


personalizado. Se puede utilizar varias veces para
especificar varios archivos de paquetes de reglas. Si
especifica un directorio, se incluirán todos los archivos en
el mismo con las extensiones .bin y .xml.

-disable-default-rule-type <type> Deshabilita todas las reglas del tipo especificado en los


paquetes de reglas predeterminados. Se puede utilizar
varias veces para especificar varios tipos de reglas.
El argumento <type> es la etiqueta XML sin el sufijo
Rule. Por ejemplo, utilice DataflowSource para los
elementos DataflowSourceRule. También puede
especificar secciones concretas de reglas de
caracterización, como Characterization:Control
flow, Characterization:Issue y
Characterization:Generic.
El argumento <type> distingue mayúsculas de
minúsculas.

-no-default-issue-rules Deshabilita las reglas de los paquetes de reglas


predeterminados que producen directamente problemas.
No obstante, se siguen cargando las reglas que
caracterizan el comportamiento de las funciones.

Nota: Esto equivale a deshabilitar los siguientes


tipos de reglas: DataflowSink, Semantic,
Controlflow, Structural, Configuration, Content,
Statistical, Internal y Characterization:Issue.

-no-default-rules Impide que se carguen reglas de paquetes de reglas


predeterminados. SCA procesa elementos de
descripción y bibliotecas de lenguaje en los paquetes de
reglas, pero no procesa ninguna regla.

-no-default-source-rules Deshabilita las reglas de origen de los paquetes de reglas


predeterminados.

Nota: Las reglas de origen de caracterización no se


deshabilitan.

-no-default-sink-rules Deshabilita las reglas del receptor en los paquetes de


reglas predeterminados.

Nota: Las reglas del receptor de caracterización no


se deshabilitan.

HP Fortify Static Code Analyzer (4.40) Página 83 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Directivas
Utilice las siguientes directivas para obtener información sobre comandos de conversión anteriores.
Utilice solo una directiva cada vez y no emplee ninguna con comandos normales de conversión o de
análisis.

Directiva Descripción

-clean Elimina todos los archivos intermedios y los registros de compilación de


SCA. Cuando también se especifica un id. de compilación, solo se
eliminan los archivos y los registros de compilación relacionados con él.

-show-binaries Muestra todos los objetos que se crearon, pero que no se utilizaron en la
producción de cualquier otro archivo binario. Si se integran
completamente en la compilación, muestra todos los archivos binarios
producidos.

-show-build-ids Muestra una lista de todos los id. de compilación conocidos.

-show-build-tree Al realizar un análisis con la opción -bin, se muestra un diseño de árbol


en el que aparecen todos los archivos utilizados para crear el archivo
binario, así como todos los archivos utilizados para crear los archivos que
crean el binario. Si la opción -bin no está presente, se mostrará un árbol
para cada archivo binario.

Nota: Esta opción puede generar una gran cantidad de información.

-show-build-warnings Utilícela con -b <build_id> para mostrar todos los errores y las
advertencias de la fase de conversión en la consola.

Nota: HP Fortify Audit Workbench también muestra estos errores y


advertencias en el panel de certificación de resultados.

-show-files Muestra los archivos en el id. de compilación especificado. Cuando la


opción -bin está presente, solo muestra los archivos de código fuente
que pasaron al binario.

-show-loc Muestra el número de líneas del código que se está convirtiendo.

Otras opciones
En la siguiente tabla se describen otras opciones.

Otra opción Descripción

@<filename> Lee las opciones de la línea de comandos del archivo


especificado.

HP Fortify Static Code Analyzer (4.40) Página 84 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Otra opción Descripción

-h | -? | -help Imprime un resumen de opciones de la línea de


comandos.

-debug Habilita el modo de depuración, el cual es útil durante


la solución de problemas.

-logfile <file> Especifica el archivo de registro que SCA crea.

-quiet Deshabilita la información de progreso de la línea de


comandos.

-verbose Envía mensajes de estado detallados a la consola y al


archivo de registro.

-version Muestra el número de versión de SCA.

-autoheap Habilita la asignación automática de memoria en


función del tamaño de la memoria física del sistema.

-Xmx<size>M Especifica la cantidad máxima de memoria que SCA


utiliza. De forma predeterminada, utiliza hasta
1800 MB de memoria, lo que es insuficiente para bases
de código de gran tamaño.
Cuando especifique esta opción, asegúrese de que no
asigna más memoria de la que está físicamente
disponible, ya que esto reduce el rendimiento. En
general, suponiendo que no haya otros procesos que
consuman memoria de forma intensiva, no asigne más
de 2/3 de la memoria disponible.

Especificación de archivos
Los especificadores de archivos son expresiones que permiten pasar una lista larga de archivos a SCA
utilizando caracteres comodín. SCA reconoce dos tipos de caracteres comodín: un asterisco único (*)
permite buscar coincidencias con parte del nombre de un archivo, mientras que dos asteriscos (**)
permiten buscar coincidencias con los directorios recursivamente. Puede especificar uno o varios
archivos, uno o varios especificadores de archivo, o bien una combinación de archivos y
especificadores de archivo.
<files> | <file specifiers>

Los especificadores de archivo pueden adoptar las siguientes formas.

Nota: En la siguiente tabla, la extensión .java solo se utiliza como ejemplo para mostrar las
distintas opciones de los especificadores de archivo.

HP Fortify Static Code Analyzer (4.40) Página 85 de 147


Guía del usuario
Apéndice A: Interfaz de la línea de comandos

Especificador de archivo Descripción

<dirname> Todos los archivos que se encuentren en el directorio indicado o en


cualquier subdirectorio.

<dirname>/**/Example.java Cualquier archivo denominado Example.java que se encuentre en


el directorio indicado o en cualquier subdirectorio.

<dirname>/*.java Cualquier archivo con la extensión .java que se encuentre en el


directorio indicado.

<dirname>/**/*.java Cualquier archivo con la extensión .java que se encuentre en el


directorio indicado o en cualquier subdirectorio.

<dirname>/**/* Todos los archivos que se encuentren en el directorio indicado o en


cualquier subdirectorio (como <dirname>).

Nota: De forma automática, los shells de Windows y muchos shells de Unix intentan expandir
argumentos con el asterisco (*), por lo que las expresiones de especificación de archivos deben
estar entre comillas. En Windows, también se puede usar la barra diagonal inversa (\) como
separador de directorios en lugar de la barra diagonal (/).

Los especificadores de archivo no se utilizan en los lenguajes C, C++ u Objective-C++.

HP Fortify Static Code Analyzer (4.40) Página 86 de 147


Apéndice B: Modo de análisis en
paralelo
Los temas tratados en esta sección son los siguientes:

• Acerca del modo de análisis en paralelo 87


• Configuración del modo de análisis en paralelo 87
• Ejecución en modo de análisis en paralelo 88

Acerca del modo de análisis en paralelo


El procesamiento paralelo permite reducir el tiempo de examen al emplear los distintos núcleos,
memoria y potencia de procesamiento de su equipo.
Aunque el procesamiento paralelo puede habilitarse para todos los exámenes, es posible que los
exámenes que se completen en menos de dos horas no requieran una potencia de procesamiento
superior. Por este motivo, el procesamiento paralelo no es el modo de funcionamiento predeterminado.
Debe habilitar el procesamiento paralelo en su sistema e iniciarlo en la línea de comandos.

Requisitos de hardware
Consulte el documento Requisitos del sistema de HP Fortify Software Security Center para obtener
los últimos requisitos de hardware y software de la ejecución en paralelo.

Configuración del modo de análisis en


paralelo
Después de instalar SCA y completar los pasos posteriores a la instalación, puede agregar dos
propiedades al archivo de configuración de SCA para habilitar el procesamiento paralelo.
Agregue las siguientes propiedades al archivo fortify-sca.properties, ubicado en el directorio
<Installation_Dir>/core/config.

Propiedad Descripción

com.fortify.sca. Establece el tamaño del montón para los trabajadores. La cantidad de


RmiWorkerMaxHeap memoria necesaria varía de un proyecto a otro, pero no es necesario que
asigne la misma cantidad de memoria de la JVM maestra a los trabajadores.
Esta propiedad acepta valores en kilobytes (K), megabytes (M) o gigabytes
(G).

HP Fortify Static Code Analyzer (4.40) Página 87 de 147


Guía del usuario
Apéndice B: Modo de análisis en paralelo

Propiedad Descripción

Esta propiedad puede serle útil si experimenta bloqueos, no consigue un


aumento de memoria o recibe advertencias de memoria baja. 

Nota: En lugar de establecer esta propiedad, puede utilizar la opción -


autoheap en la línea de comandos de la fase de examen de SCA para que
SCA establezca automáticamente los tamaños de montón de los
procesos de trabajo.

Tipo de valor: cadena


Valor predeterminado: (tamaño del montón de la JVM maestra)
Ejemplo: com.fortify.sca.RmiWorkerMaxHeap=500M

com.fortify.sca. Especifica el número de subprocesos para el modo multiproceso. Agregue


ThreadCount esta propiedad solo si necesita reducir el número de subprocesos utilizados a
causa de una restricción de recursos. Si experimenta un aumento del tiempo
del examen o problemas con el mismo, la reducción del número de
subprocesos podría resolver el problema.
Tipo de valor: entero
Valor predeterminado: (número de núcleos de procesador disponibles)

Ejecución en modo de análisis en paralelo


Para ejecutar sourceanalyzer en el modo de análisis en paralelo, agregue la opción siguiente a la
cadena de comandos de sourceanalyzer:

-j <number_worker_processes>

El número ideal de procesos de trabajo es n-2, donde n representa el número de procesadores del
equipo. Por ejemplo, si el equipo cuenta con 8 procesadores, el número ideal de procesos de trabajo
sería 6. Hay un único proceso maestro que coordina las tareas y la distribución de datos a los procesos
de trabajo de datos. Cada proceso de Java utiliza la misma cantidad de memoria (a menos que lo haya
invalidado por medio de com.fortify.sca.RmiWorkerMaxHeap en el archivo fortify-
sca.properties). Puede que deba equilibrar las opciones -Xmx y -j para asegurarse de no asignar
más memoria de la que está disponible físicamente.
También puede especificar la opción -autoheap (en lugar de la opción -Xmx y la propiedad
com.fortify.sca.RmiWorkerMaxHeap) en la línea de comandos de la fase de examen, con lo cual
SCA asignará automáticamente memoria al proceso maestro y a los procesos de trabajo según la
configuración de -j.
A continuación se incluye un ejemplo del comando de SCA para analizar el id. de
compilación MyServlet:

sourceanalyzer -b MyServlet -scan -j 6 -autoheap

HP Fortify Static Code Analyzer (4.40) Página 88 de 147


Guía del usuario
Apéndice B: Modo de análisis en paralelo

El valor mínimo de -j es 2; no obstante, se recomienda 3 o un valor superior. Un valor de 3 suele ser


más rápido que las ejecuciones que no son en paralelo, pero un valor de 4 o superior debería
proporcionar el aumento más grande de velocidad global.

HP Fortify Static Code Analyzer (4.40) Página 89 de 147


Apéndice C: Uso de la tarea
sourceanalyzer de Ant
Los temas tratados en esta sección son los siguientes:

• Acerca de la tarea sourceanalyzer de Ant 90


• Uso de la tarea sourceanalyzer de Ant 90
• Propiedades de Ant 92
• Opciones de la tarea sourceanalyzer 92

Acerca de la tarea sourceanalyzer de Ant


La tarea sourceanalyzer de Ant permite integrar SCA en su compilación de Ant de una manera
sencilla. Como se ha explicado en "Conversión de código Java" en la página 20, los archivos de código
fuente Java que forman parte de una compilación de Ant se pueden convertir más fácilmente mediante
el adaptador de compilador de SCA, el cual captura automáticamente la entrada en invocaciones de
tareas javac. La tarea sourceanalyzer de Ant es una manera cómoda y flexible de realizar otras tareas
de conversión y ejecutar análisis.
En esta sección se describe cómo usar la tarea sourceanalyzer de Ant y se proporciona un ejemplo de
un archivo de compilación de muestra con una instancia de analysis target.rs autocontenida.

Uso de la tarea sourceanalyzer de Ant


Al igual que con el adaptador de compilador de SCA, para usar la tarea sourceanalyzer es necesario
que el archivo sourceanalyzer.jar se encuentre en la classpath de Ant y que el ejecutable de
sourceanalyzer esté ubicado en PATH. Para usar la tarea sourceanalyzer de Ant, realice lo
siguiente:
1. Incluya typedef en el archivo build.xml de la siguiente manera:

<typedef name="sourceanalyzer"
classname="com.fortify.dev.ant.SourceanalyzerTask"/>

2. Defina destinos que invoquen la tarea sourceanalyzer para realizar operaciones de conversión y
análisis exactamente de la misma manera que se hace al ejecutar sourceanalyzer desde la línea
de comandos. La sintaxis de la tarea sourceanalyzer es similar a la de la interfaz de la línea de
comandos, pero puede utilizar los primitivos de Ant, fileset y path.
A continuación, se incluye un ejemplo de un fragmento de código de un archivo build.xml de Ant que
proporciona un destino al que los usuarios pueden llamar para generar resultados de SCA para el
proyecto. En este fragmento de código se da por supuesto que los destinos clean y compile y la ruta

HP Fortify Static Code Analyzer (4.40) Página 90 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

de acceso jsp.classpath están definidos en el archivo. También utiliza las opciones verbose y log
para crear un archivo de registro de SCA independiente para la compilación.

<available classname="com.fortify.dev.ant.SourceanalyzerTask"
property="fortify.present"/>
<property name="sourceanalyzer.buildid" value="mybuild"/>
<!-- For debugging in a separate HP Fortify SCA log file -->
<property name="fortify.debug" value="false" />
<property name="fortify.verbose" value="false" />
<mkdir dir="${code.build}/log" />
<mkdir dir="${code.build}/audit" />
<tstamp/>
<property=”com.fortify.sca.PPSSilent” value=”true” />
<target name="fortify" if="fortify.present">
<typedef name="sourceanalyzer"
classname="com.fortify.dev.ant.SourceanalyzerTask"/>
<!-- call clean to ensure all source files are recompiled -->
<antcall target="clean"/>

<!-- call the compile target using the SCA Compiler Adapter -->
<!-- to translate all source files-->
<antcall target="compile">
<!-- Log SCA in separate file -->
<param name="com.fortify.sca.Debug" value="${fortify.debug}" />
<param name="com.fortify.sca.Verbose"
value="${fortify.verbose}" />
<param name="com.fortify.sca.LogFile"
value="${code.build}/log/${sourceanalyzer.buildid}-${DSTAMP}-${TSTAMP}.log"
/>
<param name="build.compiler"
value="com.fortify.dev.ant.SCACompiler" />
</antcall>

<!-- capture all configuration files in WEB-INF directory -->


<echo>sourceanalyzer ${web-inf}</echo>
<sourceanalyzer buildid="${sourceanalyzer.buildid}">
<fileset dir="${web-inf}">
<include name="**/*.properties"/>
<include name="**/*.xml"/>
</fileset>
</sourceanalyzer>

<!-- translate all jsp files-->


<echo>sourceanalyzer ${basedir} jsp</echo>
<sourceanalyzer buildid="${sourceanalyzer.buildid}">
<fileset dir="${basedir}">
<include name="**/*.jsp"/>
</fileset>
<classpath refid="jsp.classpath"/>

HP Fortify Static Code Analyzer (4.40) Página 91 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

</sourceanalyzer>

<!-- run analysis -->


<echo>sourceanalyzer scan</echo>
<sourceanalyzer buildid="${sourceanalyzer.buildid}"
scan="true" resultsfile="issues.fpr" />
</target>

Propiedades de Ant
Cualquier propiedad de Ant que empiece por com.fortify se transmite a la tarea sourceanalyzer
mediante la opción -D. Por ejemplo, si se establece la propiedad com.fortify.sca.ProjectRoot, se
pasa -Dcom.fortify.sca.ProjectRoot=<value> a la tarea sourceanalyzer. Esto también se utiliza
para el adaptador de compilador de SCA. Puede establecer estas propiedades en el archivo de
compilación mediante la tarea <property>, por ejemplo, o en la línea de comandos de Ant con la
sintaxis -D<property=<value>.
Cuando se utiliza el adaptador de compilador de SCA con la configuración build.compiler, la
propiedad de Ant sourceanalyzer.build equivale al atributo buildID de la tarea sourceanalyzer,
mientras que sourceanalyzer.maxHeap equivale a maxHeap. Puede utilizar la línea de comandos o el
script de compilación para establecer estas propiedades.

Opciones de la tarea sourceanalyzer


En la tabla siguiente se incluyen las opciones de la línea de comandos de la tarea sourceanalyzer.
Los valores de ruta de acceso utilizan listas de nombres de archivo delimitados por dos puntos o punto
y coma.

Opción de la línea
Atributo de comandos Descripción

append -append Anexa los resultados al archivo que se especifica con


la opción -f. Si no se especifica esta opción, SCA
sobrescribe el archivo.

Nota: Para utilizar esta opción, el formato de


archivo de salida debe ser .fpr o .fvdl. Para
obtener información sobre la opción de salida -
format, consulte la descripción que se ofrece en
esta tabla.

appserver -appserver Especifica el servidor de aplicaciones: las opciones


weblogic | válidas son weblogic y websphere.
websphere

appserverHome -appserver-home Especifica el directorio principal del servidor de

HP Fortify Static Code Analyzer (4.40) Página 92 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

Opción de la línea
Atributo de comandos Descripción

<path> aplicaciones.
l En Weblogic, es la ruta de acceso al directorio que
contiene el directorio server/lib.
l En WebSphere, es la ruta de acceso al directorio
que contiene el script bin/JspBatchCompiler.

appserverVersion -appserver-version Consulte el documento Requisitos del sistema de HP


<version> Fortify Software Security Center para conocer las
versiones compatibles.

bootclasspath -bootclasspath Especifica el valor de bootclasspath de JDK.


<classpath>

buildID -b <build_ID> Especifica el id. de compilación. El id. de compilación


se utiliza para hacer un seguimiento de los archivos
que se compilan y se vinculan como parte de una
compilación, así como para, posteriormente,
examinar dichos archivos.

buildLabel -build-label Especifica la etiqueta del proyecto que se está


<label> examinando. SCA no utiliza la etiqueta, pero esta se
incluye en los resultados del análisis.

buildProject -build-project Especifica el nombre del proyecto que se está


<project> examinando. SCA no utiliza el nombre, pero se
incluye en los resultados del análisis.

buildVersion -build-version Especifica la versión del proyecto que se está


<version> examinando. SCA no utiliza la versión, pero sí se
incluye en los resultados del análisis.

classpath -cp <classpath> Especifica el valor de classpath que debe utilizarse


para el código fuente Java. El formato es el mismo
que javac (es decir, una lista de rutas de acceso
separadas por dos puntos o por punto y coma).

clean -clean Restablece el id. de compilación. El valor


predeterminado es false.

debug -debug Habilita el modo de depuración, lo cual resulta útil al


solucionar problemas.

disableAnalyzers -disable-analyzer Deshabilita varios analizadores a la vez si es


<list_of_ necesario. <list_of_analyzers> representa una lista
analyzers> de analizadores separados por dos puntos.

enableAnalyzers -enable-analyzer Habilita varios analizadores a la vez si es necesario.


<list_of_ <list_of_analyzers> representa una lista de
analyzers> analizadores separados por dos puntos.

HP Fortify Static Code Analyzer (4.40) Página 93 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

Opción de la línea
Atributo de comandos Descripción

encoding -encoding Especifica el tipo de codificación del archivo de


<encoding_type> código fuente. Esta opción es la misma que la opción
de codificación de javac.

extdirs -extdirs Es parecida a la opción extdirs de javac y acepta


<list_of_dirs> una lista de directorios separados por dos puntos o
por punto y coma. Los archivos JAR que se
encuentren en estos directorios se incluyen de
manera implícita en la classpath.

filter -filter <file> Especifica el archivo de filtro.

findbugs -findbugs Habilita el análisis FindBugs cuando se establece en


true. El valor predeterminado es false.

format -format Controla el formato de salida. Las opciones válidas


<format_type> son: fpr, fvdl, text y auto. El valor predeterminado
es auto, el cual selecciona el formato de salida en
función de la extensión de archivo.

Nota: Si utiliza la certificación de resultados,


debe especificar el formato fpr. Consulte el
documento Guía del usuario de HP Fortify Audit
Workbench para obtener información sobre la
certificación de resultados.

javaBuildDir -java-build-dir Especifica uno o más directorios en los que se han


<dir> compilado los códigos fuente Java. Debe
especificarse para el atributo findbugs.

jdk -source <version> Indica la versión de JDK para la que se ha escrito el


código Java. Los valores válidos de <version> son
1.4, 1.5, 1.6, 1.7 y 1.8. El valor predeterminado es
1.5.

Nota: Las opciones source y JDK son iguales. Si


se especifican ambas opciones, la opción
especificada en último lugar tiene prioridad.

jdkBootclasspath -jdk-bootclasspath Especifica el valor de bootclasspath de JDK.


<classpath>

logfile -logfile <file_ Especifica el archivo de registro creado por SCA.


name>

maxHeap -Xmx <size> Especifica la cantidad máxima de memoria utilizada


por SCA. De manera predeterminada, utiliza hasta
1800 MB de memoria (1800M), lo que puede resultar

HP Fortify Static Code Analyzer (4.40) Página 94 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

Opción de la línea
Atributo de comandos Descripción

insuficiente para bases de código grandes.

Cuando especifique esta opción, asegúrese de que no


asigna más memoria de la que está físicamente
disponible, ya que esto reduce el rendimiento. En
general, suponiendo que no haya otros procesos que
consuman memoria de forma intensiva, no asigne
más de 2/3 de la memoria disponible.

noDefaultRules -no-default-rules Hace que SCA se abstenga de aplicar las reglas


predeterminadas al realizar el examen.

quick -quick Inicia un examen rápido de SCA en lugar de un


examen normal. Establezca el valor en true para
iniciar un examen rápido. El valor predeterminado es
false.

resultsfile -f <absolute_path_ Especifica el archivo en el que se escriben los


file_name> resultados.

rules -rules <list_of_ Especifica un paquete de reglas o un directorio


rules> personalizado. La opción rules toma una lista de
archivos de reglas delimitados por el separador de
ruta de acceso, el cual es un punto y coma en
Windows y dos puntos en otras plataformas. Para
cada elemento de la lista, se pasa a SCA el comando
-rules <file>.

scan -scan Si se configura esta opción, se determina si SCA


debe realizar un análisis en el id. de compilación
proporcionado. El valor predeterminado es false.

source -source <version> Indica la versión de JDK para la que se ha escrito el


código Java. Los valores válidos de <version> son
1.4, 1.5, 1.6, 1.7 y 1.8. El valor predeterminado es
1.5.

Nota: Las opciones source y JDK son iguales. Si


se especifican ambas opciones, la opción
especificada en último lugar tiene prioridad.

sourcepath -sourcepath <dir> Especifica la ubicación de los archivos de código


fuente que no se incluyen en el examen, sino que se
utilizan para la resolución de nombres. La ruta de
acceso de código fuente es similar a classpath, pero
usa archivos de código fuente en lugar de archivos de
clase para la resolución.

verbose -verbose Envía mensajes de estado detallados a la consola.

HP Fortify Static Code Analyzer (4.40) Página 95 de 147


Guía del usuario
Apéndice C: Uso de la tarea sourceanalyzer de Ant

También puede especificar las opciones bootclasspath, classpath, extdirs como elementos
anidados, tal como en la tarea javac de Ant. Puede especificar archivos de código fuente con
elementos <fileset> anidados.
En la tabla siguiente se describen los elementos de sourceanalyzer.

Elemento Tipo de Ant Descripción

fileset Conjunto de Especifica los archivos que se pasarán a SCA.


archivos

classpath Ruta Especifica el valor de classpath que debe utilizarse para el


código fuente Java.

bootclasspath Ruta Especifica el valor de bootclasspath de JDK.

extdirs Ruta Es similar a la opción extdirs de javac. Los archivos JAR


de estos directorios se incluyen de manera implícita en el
valor de classpath.

sourcepath Ruta Especifica la ubicación de los archivos de código fuente que


no se incluyen en el examen, sino que se utilizan para la
resolución.

HP Fortify Static Code Analyzer (4.40) Página 96 de 147


Apéndice D: Filtrado del análisis
Los temas tratados en esta sección son los siguientes:

• Acerca de los archivos de filtro 97


• Ejemplo de archivo de filtro 97

Acerca de los archivos de filtro


Puede crear un archivo que filtre determinadas instancias de vulnerabilidades, reglas y categorías de
vulnerabilidades cuando ejecute el comando sourceanalyzer. Especifique el archivo utilizando la
opción de análisis -filter.

Nota: HP Fortify solo recomienda esta función a usuarios avanzados. Igualmente, no debe
utilizarse durante auditorías estándar, ya que los auditores deben poder ver y evaluar todos los
problemas que SCA encuentra.

Un archivo de filtros es un archivo de texto que puede crear con cualquier editor de texto. El archivo
funciona como una lista negra, donde solo se especifican los elementos de filtro que no desea. Cada
elemento del filtro está en una línea distinta del archivo. Puede introducir los siguientes tipos de filtro:
l Categoría
l Id. de instancia
l Id. de regla
Según el tipo de filtro, los filtros se aplican en distintos momentos del proceso de análisis. Los filtros de
categoría e id. de regla se aplican durante la fase de inicialización antes de que se haya realizado
ningún examen, mientras que el filtro de id. de instancia se aplica después de la fase de análisis.

Ejemplo de archivo de filtro


Como ejemplo, veamos la siguiente salida que resulta de un examen de EightBall.java, ubicada en
el directorio <Installation_Dir>/Samples/basic/eightball.
Se ejecutan los siguientes comandos para producir los resultados del análisis:

sourceanalyzer -b eightball Eightball.java


sourceanalyzer -b eightball -scan

Los siguientes resultados muestran la detección de siete problemas:

[F7A138CDE5235351F6A4405BA4AD7C53 : low : Unchecked Return Value : semantic ]


EightBall.java(12) : Reader.read()

HP Fortify Static Code Analyzer (4.40) Página 97 de 147


Guía del usuario
Apéndice D: Filtrado del análisis

[63C4F599F304C400E4BB77AB3EF062F6 : high : Path Manipulation : dataflow ]


EightBall.java(12) :  ->new FileReader(0)
EightBall.java(8) : <=> (filename)
EightBall.java(8) : <->Integer.parseInt(0->return)
EightBall.java(6) : <=> (filename)
EightBall.java(4) : ->EightBall.main(0)

[EFE997D3683DC384056FA40F6C7BD0E8 : critical : Path Manipulation : dataflow ]


EightBall.java(12) : ->new FileReader(0)
EightBall.java(6) : <=> (filename)
EightBall.java(4) : ->EightBall.main(0)

[60AC727CCEEDE041DE984E7CE6836177 : high : Unreleased Resource : Streams :


controlflow ]
EightBall.java(12) : start -> loaded : new FileReader(...)
EightBall.java(12) : loaded -> loaded : <inline expression> refers to an
allocated resource
EightBall.java(12) : java.io.IOException thrown
EightBall.java(12) : loaded -> loaded : throw
EightBall.java(12) : loaded -> loaded : <inline expression> no longer refers
to an allocated resource
EightBall.java(12) : loaded -> end_of_scope : end scope : Resource leaked :
java.io.IOException thrown
EightBall.java(12) : start -> loaded : new FileReader(...)
EightBall.java(12) : loaded -> loaded : <inline expression> refers to an
allocated resource
EightBall.java(14) : loaded -> loaded : <inline expression> no longer refers
to an allocated resource
EightBall.java(14) : loaded -> end_of_scope : end scope : Resource leaked

[BB9F74FFA0FF75C9921D0093A0665BEB : low : J2EE Bad Practices : Leftover Debug


Code : structural ]
EightBall.java(4)

[FF0D787110C7AD2F3ACFA5BEB6E951C3 : low : Poor Logging Practice : Use of a


System Output Stream : structural ]
EightBall.java(10)

[FF0D787110C7AD2F3ACFA5BEB6E951C4 : low : Poor Logging Practice : Use of a


System Output Stream : structural ]
EightBall.java(13)

El siguiente archivo de filtro de muestra hace lo siguiente:


l Quita todos los resultados relacionados con la categoría Poor Logging Practice.
l Quita el recurso Unreleased Resource basado en su id. de instancia.
l Quita cualquier problema relacionado con el flujo de datos generado desde un id. de regla específico.
El archivo de filtro de muestra contiene el siguiente texto:

#This is a category that will be filtered from scan output


Poor Logging Practice

HP Fortify Static Code Analyzer (4.40) Página 98 de 147


Guía del usuario
Apéndice D: Filtrado del análisis

#This is an instance ID of a specific issue to be filtered from scan output


60AC727CCEEDE041DE984E7CE6836177

#This is a specific Rule ID that leads to the reporting of a specific issue in


#the scan output: in this case the data flow sink for a Path Manipulation issue.
823FE039-A7FE-4AAD-B976-9EC53FFE4A59

Para probar la salida filtrada, copie el texto anterior y péguelo en un archivo con el nombre test_
filter.txt.
Ejecute el siguiente comando para utilizar la opción -filter y el archivo test_filter.txt:

sourceanalyzer -b eightball -scan -filter test_filter.txt

A continuación, se muestran los resultados del filtrado del análisis:

[F7A138CDE5235351F6A4405BA4AD7C53 : low : Unchecked Return Value : semantic]


EightBall.java(12) : Reader.read()

[63C4F599F304C400E4BB77AB3EF062F6 : high : Path Manipulation : dataflow ]


EightBall.java(12) : ->new FileReader(0)
EightBall.java(8) : <=> (filename)
EightBall.java(8) : <->Integer.parseInt(0->return)
EightBall.java(6) : <=> (filename)
EightBall.java(4) : ->EightBall.main(0)

[BB9F74FFA0FF75C9921D0093A0665BEB : low : J2EE Bad Practices : Leftover Debug


Code : structural]
EightBall.java(4)

HP Fortify Static Code Analyzer (4.40) Página 99 de 147


Apéndice E: Integración de MSBuild
SCA permite convertir el código fuente .NET como parte del proceso de compilación de MSBuild. Con
la integración de MSBuild en SCA, puede convertir archivos en equipos donde no se ha instalado
Microsoft Visual Studio. Consulte el documento Requisitos del sistema de HP Fortify Software
Security Center para conocer las versiones compatibles de MSBuild. El archivo ejecutable de MSBuild
permite convertir los siguientes tipos de proyecto y código fuente:
l Aplicaciones de consola C/C++ (solo Visual Studio 2010 y posterior).
l Bibliotecas C/C++ (solo Visual Studio 2010 y posterior).
l Sitios web Visual C# y Visual Basic.
l Bibliotecas Visual C# y Visual Basic.
l Aplicaciones web Visual C# y Visual Basic.
l Aplicaciones de consola Visual C# y Visual Basic.
En esta sección se describe cómo iniciar un análisis de SCA como parte del proyecto de MSBuild.
Los temas tratados en esta sección son los siguientes:

• Configuración para la integración de MSBuild 100


• Configuración de las variables de entorno de Windows para la integración sin compatibilidad de
SCA 101
• Adición de tareas personalizadas en el proyecto de MSBuild 102

Configuración para la integración de


MSBuild
Lo siguiente solo se debe realizar si el equipo en el que se ejecuta MSBuild no incluye una copia de
Microsoft Visual Studio:
l Añada com.fortify.sca.IldasmPath=<Path_to_Ildasm.exe> al archivo <Installation_
Dir>\Core\config\fortify-sca.properties.

HP Fortify Static Code Analyzer (4.40) Página 100 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

Configuración de las variables de entorno


de Windows para la integración sin
compatibilidad de SCA
Al integrar SCA en el proceso de MSBuild, se puede configurar una serie de variables de entorno de
Windows. Si no se configuran, SCA adopta un conjunto predeterminado de variables y las utiliza. Tras
configurar las variables de entorno de Windows adecuadas, las compilaciones posteriores utilizan el
mismo conjunto hasta que se cambien las variables de entorno. En la tabla siguiente se incluyen las
variables de entorno que puede configurar.

Variable de entorno Definición Valor predeterminado

FORTIFY_MSBUILD_BUILDID Especifica el id. de compilación de El id. de compilación


SCA. especificado en la línea de
comandos

FORTIFY_MSBUILD_DEBUG Coloca el registrador y SCA en el False


modo de depuración.

FORTIFY_MSBUILD_MEM Especifica la memoria usada para 1800 MB


invocar SCA (por ejemplo,
-Xmx2000M).

FORTIFY_MSBUILD_LOG Especifica la ubicación del archivo de ${win32.LocalAppdata}


registro. /Fortify/MSBuildPlugin

FORTIFY_MSBUILD_SCALOG Especifica la ubicación (ruta de La ubicación especificada por


acceso absoluta) del registro de la propiedad
SCA. com.fortify.sca.LogFile
en el archivo fortify-
sca.properties

FORTIFY_MSBUILD_LOGALL Determina si el complemento incluye False


en el registro todos los mensajes que
recibe (esta operación genera una
gran cantidad de información).

La integración sin compatibilidad requiere que el archivo FortifyMSBuildTouchless.dll esté ubicado


en el directorio <Installation_Dir>/Core/lib. Se debe ejecutar desde un símbolo del sistema de
Visual Studio.
A continuación, se incluye un ejemplo del comando utilizado para ejecutar la compilación e iniciar un
análisis de SCA con las variables de entorno predeterminadas, o bien con las que haya configurado
anteriormente:

sourceanalyzer -b buildid msbuild <solution_file> <msbuild_options>

También puede llamar a MSBuild para que inicie una compilación y un análisis de SCA:

HP Fortify Static Code Analyzer (4.40) Página 101 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

Msbuild <solution_file> /logger:"C:\Program Files\HP Fortify\


HP_Fortify_SCA_and_Apps_<version>\Core\lib\FortifyMSBuildTouchless.dll"
<msbuild_options>

Adición de tareas personalizadas en el


proyecto de MSBuild
En lugar de usar el método de integración sin compatibilidad, puede agregar tareas personalizadas al
proyecto de MSBuild para invocar SCA. Debe agregar estas tareas a un proyecto de MSBuild, no a una
solución.
En la tabla siguiente se enumeran las tareas personalizadas que puede agregar al proyecto de
MSBuild.

Tarea personalizada Parámetros obligatorios Parámetros opcionales

Fortify.TranslateTask l BuildID: id. de compilación para l References: lista de archivos


la conversión. DLL que deben pasarse
l BinariesFolder: directorio en el mediante el comando libdirs.
que se encuentran los archivos l JVMSettings: configuración de
que se van a convertir. memoria que debe pasarse a
l VSVersion: versión de los SCA.
archivos DLL de .NET l LogFile: ubicación del archivo de
utilizados. registro de SCA.
l Debug: determina si se va a
habilitar el modo de depuración
para la tarea y SCA.

Fortify.ScanTask l BuildID: id. de compilación del l JVMSettings: configuración de


examen. memoria que debe pasarse a
l Output: nombre del archivo SCA.
FPR que se generará. l LogFile: ubicación del archivo de
registro de SCA.
l Debug: determina si se va a
habilitar el modo de depuración
para la tarea y SCA.

Fortify.CleanTask l BuildID: id. de compilación del l Debug: determina si se va a


examen. habilitar el modo de depuración
para la tarea y SCA.

Fortify.SSCTask l AuthToken: debe definirse o l Debug: determina si se va a


utilizar el nombre de usuario y habilitar el modo de depuración
la contraseña. para la tarea y SCA.
l Project: nombre del proyecto. l Username: necesario si no se

HP Fortify Static Code Analyzer (4.40) Página 102 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

Tarea personalizada Parámetros obligatorios Parámetros opcionales

l ProjectVersion: versión del especifica AuthToken.


proyecto (si no se define, debe l Password: necesario si no se
definirse ProjectID y especifica AuthToken.
ProjectVersionID).
l ProjectID: se utiliza con
l FPRFile: nombre del archivo ProjectVersionID si no se
que se cargará en SSC. especifica Project ni
l SSCURL: URL de SSC. ProjectVersion.
l ProjectVersionID: se utiliza con
ProjectID si no se especifica
Project ni ProjectVersion.
l Proxy: necesario si se requiere
un proxy.

Fortify.CloudScanTask l BuildID: id. de compilación para l Debug: determina si se va a


la conversión. habilitar el modo de depuración
l SSCUpload: determina si se va para la tarea y SCA.
a cargar o no la salida a SSC. Los siguientes parámetros solo se
l CloudURL: URL en la nube. usan si SSCUpload se establece
en true:
O bien
l SSCToken: token de SSC.
l SSCURL: URL de SSC.
l Project: proyecto en el que se
realizará la carga en SSC.
l VersionName: versión del
proyecto en el que desea
realizar la carga en SSC.
El siguiente parámetro solo se usa
si SSCUpload se establece en
false:
l FPRName: nombre del archivo
FPR.

Adición de Fortify.TranslateTask
Para agregar la tarea personalizada Fortify.TranslateTask al proyecto de MSBuild, realice lo
siguiente:
1. Cree una tarea para identificar y ubicar FortifyMSBuildTasks.dll:

<UsingTask TaskName="Fortify.TranslateTask" AssemblyFile="<Installation_


Dir>\Core\lib\FortifyMSBuildTasks.dll" />

2. Cree un destino nuevo o agregue el destino personalizado siguiente a un destino existente para
invocar la tarea personalizada:

HP Fortify Static Code Analyzer (4.40) Página 103 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

<Target Name="FortifyBuild" AfterTargets="AfterBuild" Outputs="dummy.out">

<TranslateTask
BinariesFolder="$(OutDir)"
BuildID="TempTask"
VSVersion="<Visual Studio Version>"
JVMSettings="-Xmx1000M"
LogFile="trans_task.log"
Debug="true" />
</Target>

El destino de FortifyBuild se invoca después de ejecutar el destino de AfterBuild. El destino de


AfterBuild es uno de los destinos predeterminados definidos en el archivo de destino de MSBuild. Se
deben especificar todos los parámetros obligatorios.

Nota: Si está ejecutando MSBuild 2.0 o 3.5 y agrega un destino nuevo, debe quitar la cadena
AfterTargets="AfterBuild" y reemplazar FortifyBuild por AfterBuild.

Adición de Fortify.ScanTask
El código siguiente agrega la tarea personalizada Fortify.ScanTask al proyecto de MSBuild:

<UsingTask TaskName="Fortify.TranslateTask"
AssemblyFile="<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll" />

<UsingTask TaskName="Fortify.ScanTask" AssemblyFile="<Installation_Dir>\Core


\lib\FortifyMSBuildTasks.dll" />

<Target Name="FortifyBuild" AfterTargets="AfterBuild" Outputs="dummy.out">

<TranslateTask
BinariesFolder="$(OutDir)"
VSVersion="<Visual Studio Version>"
BuildID="TempTask"
JVMSettings="-Xmx1000M"
LogFile="trans_task.log"
Debug="true" />          

<ScanTask
BuildID="TempTask"
JVMSettings="-Xmx1000M"
LogFile="scan_task.log"
Debug="true"
Output="Scan.fpr" />
</Target>

HP Fortify Static Code Analyzer (4.40) Página 104 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

Adición de Fortify.CleanTask
El ejemplo siguiente agrega la tarea personalizada Fortify.CleanTask al proyecto de MSBuild:

<UsingTask TaskName="Fortify.CleanTask"
AssemblyFile="<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll" />
<Target Name="FortifyBuild" AfterTargets="AfterBuild" Outputs="dummy.out">

<CleanTask BuildID="TempTask" />


</Target>

Adición de Fortify.SSCTask
En el ejemplo siguiente, se agrega la tarea personalizada Fortify.SSCTask al proyecto de MSBuild:

<UsingTask TaskName="Fortify.TranslateTask"
AssemblyFile="<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll" />  

<UsingTask TaskName="Fortify.ScanTask"
AssemblyFile="<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll" />

<UsingTask TaskName="Fortify.SSCTask"
AssemblyFile=<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll" />

<Target Name="FortifyBuild" AfterTargets="AfterBuild" Outputs="dummy.out">

<TranslateTask
BinariesFolder="$(OutDir)"
VSVersion="<Visual Studio Version>"
BuildID="TempTask"
JVMSettings="-Xmx1000M"
LogFile="trans_task.log"
Debug="true" />          

<ScanTask BuildID="TempTask"
JVMSettings="-Xmx1000M"
LogFile="scan_task.log"
Debug="true"
Output="Scan.fpr" />

<SSCTask
Username="admin"
Password="admin"
Project="Test Project"
ProjectVersion="Test Version 1"

HP Fortify Static Code Analyzer (4.40) Página 105 de 147


Guía del usuario
Apéndice E: Integración de MSBuild

FPRFile="SSC.fpr"
SSCURL="http://localhost:8180/ssc" />
</Target>

Adición de Fortify.CloudScanTask
Si utiliza CloudScan para procesar los exámenes, puede enviar la salida convertida al recurso basado
en la nube. En el ejemplo siguiente se añade la tarea personalizada Fortify.CloudScanTask al
proyecto de MSBuild:

<UsingTask TaskName=”Fortify.CloudScanTask”
AssemblyFile=”<Installation_Dir>\Core\lib\FortifyMSBuildTasks.dll”/>

<Target Name="FortifyBuild" AfterTargets="AfterBuild" Outputs="dummy.out">

<CloudScanTask
BuildID="TempTask"
SSCUpload="false"
FPRName="Scan.fpr"
CloudURL="http://localhost:8080/cloud-ctrl" />
</Target>

HP Fortify Static Code Analyzer (4.40) Página 106 de 147


Apéndice F: Integración de Maven
Los temas tratados en esta sección son los siguientes:

• Acerca del complemento Maven 107


• Instalación del complemento Maven 108
• Uso del complemento Maven 109
• Exclusión de archivos del examen 111
• Desinstalación del complemento Maven 111
• Documentación adicional 111

Acerca del complemento Maven


SCA incluye un complemento Maven que permite añadir capacidades de limpieza, conversión,
examen y carga de archivos FPR de SCA a las compilaciones de sus proyectos de Maven. Puede
utilizar el complemento directamente o integrar su funcionalidad en el proceso de compilación.
El complemento Maven se encuentra en <Installation_Dir>/Samples/advanced/maven-plugin.
En la siguiente tabla se describe el contenido del directorio maven-plugin.

Archivo o
directorio Descripción

pom.xml Archivo de modelo de objeto de proyecto.

README.TXT Archivo de texto README que proporciona instrucciones de instalación y


utilización.

samples Directorio que contiene dos directorios de proyecto de muestra: EightBall y


MyEnterpriseApp.

settings.xml Archivo XML que establece el espacio de nombres que se debe utilizar según
su relación con los ajustes de Maven.

sca-maven-plugin Directorio que contiene código fuente, ensamblados y otros archivos de


código fuente.

xcodebuild Directorio que contiene archivos de código fuente para un proyecto de Xcode
Maven.

Para obtener información sobre las versiones compatibles de Maven, consulte el documento
Requisitos del sistema de HP Fortify Software Security Center.

HP Fortify Static Code Analyzer (4.40) Página 107 de 147


Guía del usuario
Apéndice F: Integración de Maven

Instalación del complemento Maven


Para las siguientes instrucciones de instalación del complemento Maven, se asume que la ruta de
acceso de la carpeta SCA bin se encuentra en su variable de entorno PATH.
Para instalar el complemento Maven:
1. Abra un terminal o una ventana de comandos y desplácese hasta el directorio maven-plugin.
<Installation_Dir>/Samples/advanced/maven-plugin

2. Cuando se le solicite, escriba lo siguiente:

mvn clean install

Prueba del complemento Maven


Después de instalar el complemento Maven, utilice uno de los archivos de muestra incluidos para
garantizar el correcto funcionamiento de la instalación.
Para probar el complemento Maven utilizando el archivo de muestra EightBall, realice lo siguiente:
1. Añada el directorio que contiene el ejecutable de sourceanalyzer a la variable de entorno de la ruta
de acceso.
Por ejemplo:

export set PATH=$PATH:/path_to_HP_Fortify_SCA_and_Apps/bin

O bien

set PATH=%PATH%;path_to_HP_Fortify_SCA_and_Apps\bin

2. Introduzca sourceanalyzer -h para probar el ajuste de la ruta de acceso.


Debe aparecer la ayuda de sourceanalyzer.
3. Desplácese hasta el directorio EightBall: <Installation_Dir>/Samples/advanced/maven-
plugin/samples/EightBall.
4. Escriba lo siguiente:

mvn com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:clean

En el comando anterior, <ver> es la versión del complemento Maven que está utilizando. Si no se
especifica la versión, Maven utiliza la versión más reciente del complemento Maven instalada en
el repositorio local.

Nota: Para determinar la versión del complemento Maven, abra el archivo pom.xml situado
en <Installation_Dir>/Samples/advanced/maven-plugin en un editor de texto. La
versión del complemento Maven se especifica en el elemento <version>.

HP Fortify Static Code Analyzer (4.40) Página 108 de 147


Guía del usuario
Apéndice F: Integración de Maven

5. Si el comando del paso 4 se completa correctamente, significa que el complemento Maven se ha


instalado también de forma adecuada. Si Maven no se ha instalado correctamente, recibirá el
siguiente mensaje de error:

[ERROR] Error resolving version for plugin 'com.fortify.ps.maven.plugin:sca-


maven-plugin' from the repositories

Compruebe el repositorio local de Maven e intente instalar el complemento Maven nuevamente.

Actualización del complemento Maven


Si tiene instalada una versión anterior del complemento Maven, puede actualizarlo a la última versión.
Para actualizar el complemento Maven en el sistema:
1. Abra un terminal o ventana de comandos y navegue hasta el directorio maven-plugin.
<Installation_Dir>/Samples/advanced/maven-plugin
2. Cuando se le solicite, escriba lo siguiente:

mvn install

Uso del complemento Maven


Puede ejecutar el paquete de manera local o integrarlo como parte del proceso de compilación. Durante
la fase de conversión, el complemento Maven de SCA busca el archivo JAR del repositorio local e
intenta resolver las clases en la aplicación.

Nota: En los siguientes pasos, se proporcionan tres versiones de los comandos de SCA. Solo
puede utilizar la versión con el nombre de objetivo corto de cada comando si ha colocado una
copia del archivo settings.xml en el repositorio local.

Para examinar el código manualmente mediante el complemento Maven:


1. Instale la aplicación de destino en el repositorio local:

mvn install

2. Limpie la compilación anterior utilizando uno de los siguientes comandos:

Completo mvn com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:clean

Sin id. de versión mvn com.fortify.ps.maven.plugin:sca-maven-plugin:clean

Nombre de mvn sca:clean


objetivo corto

HP Fortify Static Code Analyzer (4.40) Página 109 de 147


Guía del usuario
Apéndice F: Integración de Maven

3. Convierta el código utilizando uno de los siguientes comandos:

Completo mvn com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:translate

Sin id. de mvn com.fortify.ps.maven.plugin:sca-maven-plugin:translate


versión

Nombre de mvn sca:translate


objetivo
corto

4. Examine el código usando uno de los siguientes comandos:

Completo mvn com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:scan

Sin id. de versión mvn com.fortify.ps.maven.plugin:sca-maven-plugin:scan

Nombre de mvn sca:scan


objetivo corto

En el comando anterior, <ver> es la versión del complemento Maven que está utilizando.

Nota: Si no especifica la versión, Maven llama a la última versión de sca-maven-plugin del


repositorio local.

Para examinar los archivos como parte del sistema de compilación:


1. Instale la aplicación de destino en el repositorio local:

mvn install

2. Limpie la compilación anterior:

sourceanalyzer -b <build_id> -clean

3. Convierta el código utilizando una de las siguientes opciones:

Opciones de comando de conversión

sourceanalyzer -b <build_id> [<SCA build options>] mvn

sourceanalyzer -b <build_id> [<SCA build options>] mvn


com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:translate

sourceanalyzer -b <build_id> [<SCA build options>] mvn


com.fortify.ps.maven.plugin:sca-maven-plugin:translate

sourceanalyzer -b <build_id> [<SCA build options>] mvn sca:translate

Nota: Para utilizar esta versión del comando, debe colocar una copia del archivo
settings.xml en el repositorio local.

HP Fortify Static Code Analyzer (4.40) Página 110 de 147


Guía del usuario
Apéndice F: Integración de Maven

4. Ejecute el examen:

sourceanalyzer -b <build_id> [<SCA scan options>] -scan -f result.fpr

Exclusión de archivos del examen


Si no desea incluir todos los archivos en el proyecto o solución, puede indicar a SCA que excluya los
archivos seleccionados del examen.
Añada la opción -D con la siguiente propiedad al paso de conversión para especificar los archivos que
desea excluir:

-Dfortify.sca.exclude="fileA;fileB;fileC;"

Nota: En Windows, debe separar los nombres de archivo con punto y coma, mientras que para las
otras plataformas debe usar dos puntos. Se admiten los caracteres comodín: utilice un asterisco
único (*) para buscar coincidencias con parte del nombre de un archivo y dos asteriscos (**) para
buscar coincidencias con los directorios recursivamente.

Por ejemplo, para el proyecto EightBall de muestra, puede emitir el siguiente comando para convertir el
código fuente:

mvn com.fortify.ps.maven.plugin:sca-maven-plugin:<ver>:translate
-Dfortify.sca.source.version=1.6 -Dfortify.sca.exclude="fileA;fileB;fileC;

Desinstalación del complemento Maven


Para desinstalar el complemento Maven, elimine manualmente todos los archivos del directorio
<Maven_Local_Repository>/repository/com/fortify/ps/maven/plugin.

Documentación adicional
Después de que se haya instalado correctamente el complemento Maven, se incluye un nuevo
directorio en la siguiente ubicación:
<Installation_Dir>/Samples/advanced/maven-plugin/target/site

Para acceder a la documentación, abra el archivo index.html. Hay secciones sobre las opciones
disponibles, una guía de uso básico, información sobre la carga de exámenes en Software Security
Center y preguntas más frecuentes.

HP Fortify Static Code Analyzer (4.40) Página 111 de 147


Apéndice G: HP Fortify Scan Wizard
Los temas tratados en esta sección son los siguientes:

• Acerca de HP Fortify Scan Wizard 112


• Inicio de HP Fortify Scan Wizard 113

Acerca de HP Fortify Scan Wizard


HP Fortify Scan Wizard utiliza la información proporcionada por el usuario para crear un script que
convierte y examina el código del proyecto mediante HP Fortify Static Code Analyzer (SCA) y, de
manera opcional, carga los resultados directamente en Software Security Center. Puede utilizar
HP Fortify Scan Wizard para ejecutar los exámenes de manera local o, si utiliza HP Fortify CloudScan,
en la nube.

Nota: Si genera un script en un sistema Windows, no podrá ejecutarlo en un sistema que no sea
Windows. Del mismo modo, si genera un script en un sistema diferente de Windows, no podrá

HP Fortify Static Code Analyzer (4.40) Página 112 de 147


Guía del usuario
Apéndice G: HP Fortify Scan Wizard

ejecutarlo en un sistema Windows.

Para usar HP Fortify Scan Wizard, necesita lo siguiente:


l La ubicación del directorio o los directorios de compilación del proyecto que debe examinarse.
l Acceso al directorio o los directorios de compilación del proyecto que debe examinarse.
l Si examina código Java, la versión del JDK de Java usada para desarrollar el código.
l Si tiene previsto usar HP Fortify CloudScan para examinar el código, la URL del servidor en la nube.
l (Opcional) La ubicación de los archivos de reglas personalizadas.
Si tiene previsto cargar los resultados del análisis a HP Fortify Software Security Center, también
necesitará:
l Las credenciales de inicio de sesión en Software Security Center.
l La URL del servidor de Software Security Center.
l Un token de autenticación de carga.

Nota: Si no tiene ningún token de carga, puede usar HP Fortify Scan Wizard para generar uno.
Para ello, debe disponer de credenciales de inicio de sesión en Software Security Center.

Si no dispone de credenciales de inicio de sesión en HP Fortify Software Security Center, debe tener lo
siguiente:
l El nombre del proyecto.
l El nombre de la versión del proyecto.

Nota: Scan Wizard utiliza una configuración de memoria de examen predeterminada del 90 % de
la memoria total disponible si es mayor de 4 GB; de lo contrario, la configuración de memoria
predeterminada es de 2/3 de la memoria total disponible. Ajuste la memoria de examen según sus
necesidades en el paso Translation and Scan del asistente.

Inicio de HP Fortify Scan Wizard


El método utilizado para iniciar HP Fortify Scan Wizard depende de si ha instalado los analizadores y
las aplicaciones de SCA localmente o si utiliza HP Fortify Scan Wizard como utilidad independiente en
el sistema.

Inicio de Scan Wizard en un sistema con


analizadores y aplicaciones de SCA instalados
Para iniciar HP Fortify Scan Wizard con analizadores y aplicaciones de SCA instalados localmente,
siga uno de los siguientes procedimientos en función de su sistema operativo:
l En un sistema Windows, haga clic en Inicio > Todos los programas > HP Fortify SCA and
Applications <version> > Scan Wizard.
l En un sistema Linux, vaya al directorio HP_Fortify/HP_Fortify_SCA_and_Apps_
<version>/bin y ejecute el archivo ScanWizard desde la línea de comandos.

HP Fortify Static Code Analyzer (4.40) Página 113 de 147


Guía del usuario
Apéndice G: HP Fortify Scan Wizard

l En un sistema Macintosh, vaya al directorio HP_Fortify/HP_Fortify_SCA_and_Apps_


<version>/bin y haga doble clic en ScanWizard.

Inicio de HP Fortify Scan Wizard como utilidad


independiente
Para iniciar el asistente como una utilidad independiente, realice lo siguiente:
1. Descargue y descomprima el paquete de HP Fortify Scan Wizard para su sistema operativo.
2. Vaya al directorio HP-Fortify-<version>-Scan-Wizard/bin.
3. Siga uno de estos procedimientos:
l En un sistema Windows, haga doble clic en el archivo ScanWizard.cmd.
l En un sistema Linux, ejecute el archivo ScanWizard.
l En un sistema Macintosh, haga doble clic en el archivo ScanWizard.

HP Fortify Static Code Analyzer (4.40) Página 114 de 147


Apéndice H: Archivos de muestra
Los temas tratados en esta sección son los siguientes:

• Acerca de los archivos de muestra 115


• Muestras básicas 115
• Muestras avanzadas 117

Acerca de los archivos de muestra


La instalación del software HP Fortify incluye una serie de archivos de muestra que puede usar al
probar o aprender a usar SCA. Los archivos de muestra se encuentran en el siguiente directorio:
<Installation_Dir>/Samples

En el directorio Samples, hay dos subdirectorios: basic y advanced. Cada muestra de código incluye
un archivo README.txt que proporciona instrucciones para examinar el código de SCA y ver las
salidas en Audit Workbench.
El subdirectorio basic incluye varias muestras sencillas específicas del lenguaje. El subdirectorio
advanced incluye muestras más avanzadas y muestras de código que le permiten integrar SCA con su
sistema de seguimiento de errores.

Muestras básicas
En la tabla siguiente se incluye una lista de los archivos de muestra del subdirectorio basic
(<Installation_Dir>/Samples/basic), una descripción breve del archivo de muestra y una lista de
las vulnerabilidades identificadas.

Nombre de
carpeta Descripción Vulnerabilidades

cpp Incluye un archivo de muestra C++ e instrucciones para Inyección de


probar una vulnerabilidad de flujo de datos sencilla comandos.
(requiere un compilador gcc o cl).
Fuga de memoria.

database Incluye un archivo de muestra database.pks. Esta Control de acceso:


muestra SQL incluye problemas que se pueden encontrar base de datos.
en el código SQL.

HP Fortify Static Code Analyzer (4.40) Página 115 de 147


Guía del usuario
Apéndice H: Archivos de muestra

Nombre de
carpeta Descripción Vulnerabilidades

eightball Incluye EightBall.java, una aplicación Java que Manipulación de rutas


presenta una gestión de errores incorrecta. Requiere un de acceso.
entero como argumento. Si proporciona un nombre de
Recurso no publicado:
archivo en lugar de un entero, muestra el contenido del
secuencias.
archivo.
Prácticas incorrectas
J2EE: código de
depuración no
finalizado.

formatstring Incluye el archivo formatstring.c (requiere un compilador Cadena de formato.


gcc o cl).

javascript Incluye sample.js, un archivo JavaScript. Scripts de sitios


(XSS).
Redirección abierta.

nullpointer Incluye el archivo NullPointerSample.java. Desreferencia nula.

php Incluye los archivos sink.php y source.php. Al analizar Scripts de sitios.


source.php se detectan vulnerabilidades de flujo de datos
Inyección de código
sencillas y una función peligrosa.
SQL.

sampleOutput Incluye un archivo de salida de muestra (WebGoat5.0.fpr) Entrada de ejemplo


del proyecto de WebGoat ubicado en el directorio para Audit
Samples/advanced/webgoat. Workbench.

stackbuffer Incluye stackbuffer.c. Se requiere un compilador gcc o Desbordamiento


cl. delbúfer.

toctou Incluye el archivo toctou.c. Tiempo de


comprobación/Tiempo
de uso (condición de
carrera).

vb6 Incluye el archivo command-injection.bas. Inyección de


comandos.
Inyección de código
SQL.

vbscript Incluye los archivos source.asp y sink.asp. Inyección de código


SQL.

HP Fortify Static Code Analyzer (4.40) Página 116 de 147


Guía del usuario
Apéndice H: Archivos de muestra

Muestras avanzadas
En la tabla siguiente se incluye una lista de los archivos de muestra del directorio advanced
(<Installation_Dir>/Samples/advanced).

Nombre de carpeta Descripción

BugTrackerPluginAlm Incluye la misma funcionalidad que el complemento ALM integrado para


que pueda utilizarlo como guía para crear su propio complemento.

BugTrackerPluginBugzilla Incluye el complemento Bugzilla que utiliza la API pública. Se utiliza en


Software Security Center.

BugTrackerPluginJira Incluye la misma funcionalidad que el complemento JIRA integrado.

c++ Incluye soluciones de muestra para distintas versiones compatibles de


Microsoft Visual Studio.
SCA y el complemento HP Fortify Package for Microsoft Visual Studio
deben estar instalados para la versión de Visual Studio que utiliza.
El código incluye un problema de inyección de comandos y de valor
devuelto sin comprobar.

configuration Incluye una aplicación J2EE de muestra que tiene vulnerabilidades en el


descriptor de implementación del módulo web web.xml.

crosstier Incluye una muestra que tiene vulnerabilidades que abarcan varias
tecnologías de aplicación (Java, PL/SQL, JSP, Struts). La salida debe
contener varios problemas de distintos tipos, incluidas dos
vulnerabilidades de control de acceso. Una de ellas es un resultado
entre varios niveles. Tiene un seguimiento de flujo de datos de la
entrada del usuario en código Java que puede afectar a una instrucción
SELECT en PL/SQL.

csharp Incluye un programa en C# sencillo que tiene vulnerabilidades de


inyección de código SQL. Se incluyen versiones para las distintas
versiones compatibles de Visual Studio. Tras completar correctamente
el examen, debería poder ver las vulnerabilidades de inyección de
código SQL y una vulnerabilidad de recurso no publicado. Pueden haber
otras categorías, en función de los paquetes de reglas utilizados en el
examen.

customrules Incluye varias muestras de código fuente sencillas y archivos de


paquetes de reglas que ilustran las reglas interpretadas por cuatro
analizadores distintos: Semántico, flujo de datos, flujo de control y
configuración. Este directorio también incluye varias muestras de reglas
verdaderas que puede utilizar para examinar aplicaciones reales.

ejb Incluye una aplicación J2EE entre niveles de muestra con servlets y

HP Fortify Static Code Analyzer (4.40) Página 117 de 147


Guía del usuario
Apéndice H: Archivos de muestra

Nombre de carpeta Descripción

EJB.

filters Incluye una muestra que utiliza la opción -filter de sourceanalyzer.


Consulte "Acerca de los archivos de filtro" en la página 97.

findbugs Incluye una muestra que explica la ejecución de la herramienta de


análisis estático FindBugs (http://findbugs.sourceforge.net/) junto con
SCA y el filtrado de los resultados que se superponen.

java1.5 Incluye ResourceInjection.java. El archivo de resultados debe


contener un resultado de manipulación de ruta de acceso y un resultado
de prácticas incorrectas J2EE.

javaAnnotations Incluye una aplicación de muestra que ilustra los problemas que podrían
surgir a raíz de su uso y cómo solucionarlos mediante las anotaciones
Java de Fortify. El objetivo de este ejemplo consiste en ilustrar cómo el
uso de las anotaciones de Fortify puede mejorar la precisión de la
detección de vulnerabilidades. El archivo Java Annotations
Sample.txt adjunto describe los posibles problemas y soluciones
asociados con resultados de vulnerabilidades.

JavaDoc Directorio JavaDoc para public-api y WSClient.

maven-plugin Incluye pruebas que puede ejecutar en cualquier proyecto que utilice
Maven (por ejemplo, los incluidos en el directorio samples o en
WebGoat: http://code.google.com/p/webgoat).

webgoat Incluye la aplicación web J2EE para pruebas de WebGoat


proporcionada por Open Web Application Security Project
(www.owasp.org). Este directorio contiene los archivos de código
fuente WebGoat 5.0. Puede usar los archivos de código fuente Java de
WebGoat para realizar directamente el examen de vulnerabilidades de
Java con SCA.

HP Fortify Static Code Analyzer (4.40) Página 118 de 147


Apéndice I: Ajuste de problemas
Este apéndice indica las propiedades que afectan la cantidad de problemas notificados por SCA. La
configuración predeterminada se ha diseñado para proporcionar resultados óptimos, por lo que no debe
alterarla a no ser que se produzca algún error o el soporte técnico de HP Fortify le solicite que lo haga.
El ajuste de problemas le permite ajustar el número y la calidad de los resultados que recibe de un
examen de SCA. Esta es una función avanzada que la mayoría de los usuarios no necesita.
Si cree que SCA le notifica de demasiados errores de algún tipo concreto (o muy pocos), puede que
sea necesario ajustar alguna propiedad para excluir o incluir otros problemas. Antes de realizar
cualquier cambio, puede que deba ponerse en contacto con el soporte técnico para notificarles sobre el
problema que se está produciendo.
Se pueden ajustar las siguientes áreas:

• Detección de contenedores 119


• Propagación de constantes entre procedimientos 120
• Seguimiento de operaciones de asignación selectivas 120

Si necesita desactivar una o varias de estas funciones de análisis, edite el archivo fortify-
sca.properties en el directorio <Installation_Dir>/Core/config.

Detección de contenedores
La detección de contenedores identifica métodos que contienen operaciones de asignación. En SCA,
las operaciones de asignación insertan pares de <clave, valor> a asignaciones asociativas o recuperan
pares de <clave, valor> de ellas. Cuando se inserta o se recupera un valor contaminado, su
contaminación puede propagarse en la asignación.
El equipo de HP Fortify Software Security Research (SSR) proporciona reglas que describen cómo
varias API implementan la inserción y recuperación de asignaciones. La propagación de contaminación
se produce cuando se invocan métodos que coinciden con los especificados en las reglas. Si SCA no
puede calcular las claves de asignación utilizadas en esos métodos, promoverá la contaminación
desde un único valor a todos los valores de la asignación. Esto introduce positivos falsos.
Una función se trata como método contenedor cuando:
l Contiene un sitio de llamada a un método identificado por una regla SSR como operación de
asignación o ya identificado como contenedor por SCA.
l Pasa directamente sus parámetros a la operación de asignación.
l Pasa directamente el valor devuelto de la operación de asignación a su propio retorno.
Los efectos de una identificación correcta de contenedor incluyen:
l Reducción de informes de problemas falsos del analizador de flujo de datos mediante la reducción
del número de problemas notificados con recuperaciones e inserciones de asignaciones no
coincidentes.

HP Fortify Static Code Analyzer (4.40) Página 119 de 147


Guía del usuario
Apéndice I: Ajuste de problemas

l Mejora de la legibilidad de los informes de problemas de flujos de datos mediante la sustitución de


las claves de asignación desconocidas (que aparecen como '?') por valores explícitos.
La siguiente propiedad controla el comportamiento de la detección de contenedores:
com.fortify.sca.EnableWrapperDetection. Si esta propiedad se establece en true, se habilita la
detección de contenedores.

Propagación de constantes entre


procedimientos
Los lenguajes de programación proporcionan palabras clave para indicar que una variable es un valor
constante e invariable en todo el programa. Sin embargo, algunos tipos de software fallan al aplicar
estas palabras clave de manera uniforme a variables constantes. La propagación de constantes entre
procedimientos identifica constantes y variables explícitas que no están definidas como constantes
pero que sí tienen valores invariables y propaga estos valores constantes a todas las funciones del
programa.
Las propiedades que aparecen en la siguiente tabla controlan la propagación de constantes entre
procedimientos.

Nombre de la propiedad Descripción

com.fortify.sca. Habilita o deshabilita la propagación de valores


EnableInterproceduralConstantResolution constantes a través de los límites de las
funciones.

com.fortify.sca. Si se establece en true, se deshabilita la


DisableInferredConstants identificación de variables constantes sin valores
const explícitos ni palabras clave final.

Seguimiento de operaciones de asignación


selectivas
El análisis de seguimiento de operaciones de asignación selectivas reduce bastante la prevalencia de
las claves de asignación no resueltas. Este análisis permite a SCA encontrar verdaderos positivos en
clases globales sin introducir ningún aumento en el número de positivos falsos. Configure este
algoritmo con una clave de propiedad que acepte cuatro valores. El valor predeterminado, classrule,
es adecuado en la mayoría de las situaciones. Si detecta que se suprimen demasiados problemas,
puede cambiar el valor y comparar los resultados recibidos.

HP Fortify Static Code Analyzer (4.40) Página 120 de 147


Guía del usuario
Apéndice I: Ajuste de problemas

Los valores que aparecen en la siguiente tabla controlan el seguimiento de operaciones de asignación
selectivas.

Propiedad de
análisis Valor Descripción

com.fortify.sca. classrule Se trata del valor predeterminado de la propiedad. SCA analiza


RequireMapKeys operaciones de flujo de datos en las asignaciones globales según
el valor de classrule únicamente cuando puede determinar las
claves.

never Establezca esta propiedad en never para deshabilitar el análisis


de seguimiento de operaciones de asignación selectivas. Se
analizan todas las operaciones de asignación.

globals Establezca esta propiedad en globals para aumentar la


intensidad del análisis. SCA analiza las operaciones de flujo de
datos en todas las asignaciones globales únicamente cuando
puede determinar las claves.

always Establezca esta propiedad en always para obtener una


intensidad máxima. SCA procesa las operaciones de flujo de
datos en todas las asignaciones únicamente cuando puede
determinar las claves.

HP Fortify Static Code Analyzer (4.40) Página 121 de 147


Apéndice J: Opciones de
configuración
El instalador de HP Fortify SCA y aplicaciones coloca un conjunto de archivos de propiedades en su
sistema durante la instalación. Los archivos de propiedades contienen ajustes configurables para el
análisis del tiempo de ejecución, la salida y el rendimiento de HP Fortify Static Code Analyzer.
Los temas tratados en esta sección son los siguientes:

• Acerca de los archivos de propiedades de HP Fortify Static Code Analyzer 122


• Prioridad de definición de propiedades 123
• fortify-sca.properties 123
• fortify-sca-quickscan.properties 143

Acerca de los archivos de propiedades de


HP Fortify Static Code Analyzer
Los archivos de propiedades se sitúan en el directorio <Installation_Dir>/Core/config.
Los archivos de propiedades instaladas contienen valores predeterminados. HP Fortify recomienda
consultar a su jefe de proyecto antes de realizar cualquier cambio en las propiedades de estos
archivos. Puede modificar cualquier propiedad del archivo de configuración usando un editor de texto, o
bien puede definir la propiedad en la línea de comandos mediante la opción -D.
En la siguiente tabla se describen los archivos de propiedades principales. Otros archivos de
propiedades se describen en la Guía de referencia y propiedades de herramientas de HP Fortify Static
Code Analyzer.

Nombre del archivo de propiedades Descripción

fortify-sca.properties Define las propiedades de configuración de SCA.

fortify-sca-quickscan.properties Define las propiedades de configuración correspondientes


a un examen rápido de SCA.

Formato del archivo de propiedades


En el archivo de propiedades, las propiedades están formadas por un par de cadenas: la primera es el
nombre de la propiedad y la segunda es el valor de la propiedad.

com.fortify.sca.SqlLanguage = TSQL

HP Fortify Static Code Analyzer (4.40) Página 122 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Como se muestra anteriormente, la propiedad establece la variante del lenguaje de SQL. El nombre de
la propiedad es com.fortify.sca.SqlLanguage y el valor se establece en TSQL.

Nota: Cuando se especifica una ruta de acceso para los sistemas Windows como el valor de la
propiedad, debe añadir una barra diagonal inversa como carácter de escape de cualquier carácter
de barra diagonal inversa (\). Por ejemplo:
com.fortify.sca.ASPVirtualRoots.Library=C:\\WebServer\\CustomerA\\inc.

Las propiedades deshabilitadas se convierten en comentarios en el archivo de propiedades. Para


habilitar estas propiedades, quite el símbolo de comentario (#) y guarde el archivo de propiedades. En
el siguiente ejemplo, la propiedad com.fortify.sca.LogFile está deshabilitada en el archivo de
propiedades y deja de formar parte de la configuración:

# default location for the log file


#com.fortify.sca.LogFile=${com.fortify.sca.ProjectRoot}/sca/log/sca.log

Prioridad de definición de propiedades


SCA utiliza los ajustes de prioridades en un orden específico. Con este orden, puede sobrescribir
cualquier propiedad establecida anteriormente con los valores que especifique. Tenga este orden en
cuenta cuando haga cambios en los archivos de propiedades.
El orden de prioridad con las propiedades de SCA es:

Especificación
Orden de propiedad Descripción

1 Línea de Propiedades especificadas en la línea de comandos más prioritarias y


comandos con que se pueden especificar durante cualquier examen.
la opción -D

2 Archivo de Las propiedades especificadas en el archivo de configuración Quick


configuración Scan (fortify-sca-quickscan.properties) son las segundas en
Quick Scan de prioridad, pero solo si incluye la opción -quick para habilitar el modo
SCA Quick Scan. Si Quick Scan no se invoca, este archivo se ignora.

3 Archivo de Las propiedades especificadas en el archivo de configuración de SCA


configuración (fortify-sca.properties) son las menos prioritarias. Edite este
de SCA archivo si quiere modificar los valores de la propiedad para que sean más
permanentes en todos los exámenes.

SCA también confía en algunas propiedades que tienen valores predeterminados definidos
internamente.

fortify-sca.properties
En la siguiente tabla se resumen las propiedades disponibles para su uso en el archivo fortify-
sca.properties. Consulte "fortify-sca-quickscan.properties" en la página 143 para conocer más

HP Fortify Static Code Analyzer (4.40) Página 123 de 147


Guía del usuario
Apéndice J: Opciones de configuración

propiedades que se pueden utilizar en este archivo de propiedades.

Nombre de la propiedad Descripción

com.fortify.sca. De forma predeterminada, si se interrumpe un examen en


AbortedScanOverwrites curso, los resultados parciales se guardan en un archivo de
Output salida distinto: <output>.partial.fpr en lugar de
<output>.fpr. Si esta propiedad se establece en true, el
resultado hasta donde se ha interrumpido se guarda en el
archivo normal de salida (<output>.fpr), que sobrescribe
cualquier resultado de un examen completo que hubiera en ese
archivo.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Especifica el servidor de aplicaciones para el procesamiento de


Appserver los archivos JSP. Los valores válidos son weblogic o
websphere.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica el directorio principal del servidor de aplicaciones.


AppserverHome Para WebLogic, esta es la ruta de acceso al directorio que
contiene server/lib. Para WebSphere, esta es la ruta de
acceso al directorio que contiene el script JspBatchCompiler.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la versión del servidor de aplicaciones.


AppserverVersion
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica una lista delimitada por punto y coma de las rutas de
ASPVirtualRoots. acceso completas a las raíces virtuales utilizadas.
<virtual_path>
Tipo de valor: cadena
Valor predeterminado: (ninguno)
Ejemplo:
com.fortify.sca.ASPVirtualRoots.Library=
c:\\WebServer\\CustomerTwo\\Stuff
com.fortify.sca.ASPVirtualRoots.Include=
c:\\WebServer\\CustomerOne\\inc

com.fortify.sca. Si se establecen en true, las reglas de los paquetes de reglas


NoDefaultRules predeterminados no se cargan. SCA procesa los paquetes de
reglas para los elementos de descripción y las bibliotecas de
idioma, pero no se procesa ninguna regla.

HP Fortify Static Code Analyzer (4.40) Página 124 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: booleano
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, se deshabilitan las reglas de los


NoDefaultIssueRules paquetes de reglas predeterminados que conducen
directamente a los problemas. No obstante, se siguen cargando
las reglas que caracterizan el comportamiento de las funciones.
Puede ser útil cuando se crean reglas de problemas
personalizadas.
Tipo de valor: booleano
Valor predeterminado: (ninguno)

com.fortity.sca. Si se establece en true, se deshabilitan las reglas de receptor


NoDefaultSinkRules en los paquetes de reglas predeterminados. Puede ser útil
cuando se crean reglas de receptor personalizadas.

Nota: Las reglas del receptor de caracterización no se


deshabilitan.

Tipo de valor: booleano
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, se deshabilitan las reglas de origen en


NoDefaultSourceRules los paquetes de reglas predeterminados. Puede ser útil cuando
se crean reglas de origen personalizadas.

Nota: Las reglas de origen de caracterización no se


deshabilitan.

Tipo de valor: booleano
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la carpeta para almacenar archivos intermedios


ProjectRoot generados durante la conversión y el examen.
Tipo de valor: cadena (ruta de acceso)
Predeterminado (Windows): ${win32.LocalAppdata}
\Fortify

Nota: ${win32.LocalAppdata} es una variable especial


que señala la carpeta del shell de datos de aplicación
locales de Windows.

Valor predeterminado (no de Windows): $home/.fortify


Ejemplo:com.fortify.sca.ProjectRoot=
C:\Users\<user>\AppData\Local\

HP Fortify Static Code Analyzer (4.40) Página 125 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca. Especifica una lista separada por dos puntos o comas de los
DefaultAnalyzers tipos de análisis que se pueden realizar. Los valores válidos
para esta propiedad son: buffer, content, configuration,
controlflow, dataflow, findbugs, nullptr, semantic y
structural.
Tipo de valor: cadena
Valor predeterminado: Esta propiedad tiene comentarios;
todos los tipos de análisis se utilizan durante los exámenes.

com.fortify.sca. Especifica una lista separada por dos puntos o comas de los
EnableAnalyzer analizadores que puede usar para un examen, además de los
predeterminados. Los valores válidos para esta propiedad son:
buffer, content, configuration, controlflow, dataflow,
findbugs, nullptr, semantic y structural.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Establece el directorio utilizado para buscar reglas


CustomRulesDir personalizadas.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado:
${com.fortify.Core}/config/customrules

com.fortify.sca. Especifica cómo convertir extensiones de archivo específicas


fileextensions.cfm para lenguajes que no necesitan integración de compilación.
Los tipos válidos son: ABAP, ACTIONSCRIPT, ARCHIVE,
com.fortify.sca.
ASP, ASPX, BITCODE, BYTECODE, CFML, COBOL,
fileextensions.cs
CSHARP, HTML, JAVA, JAVA_PROPERTIES,
com.fortify.sca. JAVASCRIPT, JSP, JSPX, MSIL, MXML, PHP, PLSQL,
fileextensions.java PYTHON, RUBY, RUBY_ERB, TLD, SQL, TSQL, VB, VB6,
VBSCRIPT y XML.
com.fortify.sca.
fileextensions.js Tipo de valor: cadena (lenguaje)
com.fortify.sca. Valor predeterminado: Consulte el archivo fortify-
fileextensions.py sca.properties para acceder a la lista completa.
com.fortify.sca. Ejemplos:
fileextensions.rb
com.fortify.sca.fileextensions.cfm=CFML
com.fortify.sca. com.fortify.sca.fileextensions.cs=CSHARP
fileextensions.aspx com.fortify.sca.fileextensions.java=JAVA
com.fortify.sca.fileextensions.js=
Nota: Esta es una lista JAVASCRIPT
parcial. Para obtener la lista com.fortify.sca.fileextensions.py=PYTHON
completa, consulte el archivo com.fortify.sca.fileextensions.rb=RUBY
de propiedades.

HP Fortify Static Code Analyzer (4.40) Página 126 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca. Si se establece en true, SCA utiliza el analizador de JSP nativo


jsp.UseNativeParser de un servidor de aplicaciones para analizar archivos JSP. De
lo contrario, SCA utiliza el analizador de Jasper.
Tipo de valor: booleano
Valor predeterminado: true
Ejemplo:
com.fortify.sca.jsp.UseNativeParser=
false

com.fortify.sca Si se establece en true, el analizador de JSP utiliza el


jsp.UseSecurityManager administrador de seguridad de JSP.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Especifica la codificación para JSP.


jsp.DefaultEncoding
Tipo de valor: cadena (codificación)
Valor predeterminado: ISO-8859-1

com.fortify.sca. Establece la variante de lenguaje de SQL. Los valores válidos


SqlLanguage son PLSQL (para Oracle PL/SQL) y TSQL (para Microsoft T-
SQL).
Tipo de valor: cadena (tipo de lenguaje SQL)
Valor predeterminado: TSQL

com.fortify.sca. Especifica compiladores con nombres personalizados.


compilers.javac=
Tipo de valor: cadena (compilador)
com.fortify.sca.
util.compilers. Valor predeterminado: Consulte la sección Compilers del
JavacCompiler archivo fortify-sca.properties para obtener una lista
completa.
com.fortify.sca.
compilers.c++= Ejemplo:
com.fortify.sca.
Para indicar a SCA que "my-gcc" es un compilador gcc:
util.compilers.
GppCompiler com.fortify.sca.
compilers.my-gcc=
com.fortify.sca.
com.fortify.sca.util.compilers.
compilers.make=
GccCompiler
com.fortify.sca.
util.compilers. Nota: Los nombres de compilador pueden empezar o
TouchlessCompiler terminar con un asterisco (*)
que coincide con cero o más caracteres.

HP Fortify Static Code Analyzer (4.40) Página 127 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca.
compilers.mvn=
com.fortify.sca.
util.compilers.
MavenAdapter

Nota: Esta es una lista


parcial. Para obtener la lista
completa,
consulte el archivo de
propiedades.

com.fortify.sca. Si se establece en true, SCA genera código JavaScript para


EnableDOMModeling crear el modelo del árbol DOM generado por un archivo
HTML durante la fase de conversión e identificar problemas
relacionados con el DOM (como problemas de creación del
script entre sitios). Habilite esta propiedad si el código que está
examinando incluye archivos de JQuery o cualquier archivo
HTML que contenga JavaScript. Observe que, al habilitar esta
propiedad, puede aumentar el tiempo que se emplea en la
conversión y el examen.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Especifica nombres de dominio de confianza donde SCA puede


JavaScript.src.domain. descargar archivos de JavaScript de referencia para el examen.
whitelist Delimite las URL con barras verticales.
Tipo de valor: cadena
Valor predeterminado: (ninguno)
Ejemplo: com.fortify.sca.JavaScript.
src.domain.whitelist=
http://www.xyz.com|http://www.123.org

com.fortify.sca. Si se establece en true, el código JavaScript incrustado en


DisableJavascript archivos PHP, JSP, JSPX, PHP y HTML no se extrae ni se
Extraction examina.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se habilita un análisis de orden más


hoa.Enable alto.
Tipo de valor: booleano
Valor predeterminado: true

HP Fortify Static Code Analyzer (4.40) Página 128 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca. Lenguajes en los que se puede ejecutar un análisis de orden


Phase0HigherOrder. más alto de fase 0.
Languages
Tipo de valor: cadena (lista separada por comas de los
lenguajes)
Valor predeterminado: python,ruby

com.fortify.sca. Lista separada por comas o dos puntos de lenguajes que


TypeInferenceLanguages utilizan inferencia de tipos.
Tipo de valor: cadena
Valor predeterminado: javascript,python,ruby

com.fortify.sca. Tiempo total (en segundos) permitido que puede emplear la


TypeInferencePhase0 inferencia de tipos en la fase 0 (análisis entre procedimientos).
Timeout El tiempo es ilimitado si se establece en 0 o si no se especifica.
Tipo de valor: largo
Valor predeterminado: 300

com.fortify.sca. Tiempo total (en segundos) permitido que puede emplear la


TypeInferenceFunctionTimeout inferencia de tipos en el análisis de una única función. Es
ilimitado si se establece en 0 o si no se especifica.
Tipo de valor: largo
Valor predeterminado: 60

com.fortify.sca. Si se establece en true, se deshabilitan los punteros de función


DisableFunctionPointers durante el examen.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se habilita la propagación de valores


EnableInterprocedural constantes a través de los límites de la función.
ConstantResolution
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Si se establece en false, se deshabilita toda la detección de


EnableWrapperDetection contenedores.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Esta propiedad permite a SCA sacrificar un pequeño número de


RequireMapKeys verdaderos positivos a cambio de reducir enormemente los
falsos positivos. Consulte "Seguimiento de operaciones de
asignación selectivas" en la página 120 para obtener más
información. Los valores válidos son classrule, never,

HP Fortify Static Code Analyzer (4.40) Página 129 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

globals y always.
Tipo de valor: cadena
Valor predeterminado: classrule

com.fortify.sca. El código no alcanzado es aquel que nunca se ha ejecutado,


DisableDeadCodeElimination como el que contiene el cuerpo de una instrucción if que
siempre evalúa como false. Si esta propiedad se establece en
true, SCA no identifica el código no alcanzado y no indica los
problemas relacionados con él, pero sí otras de sus
vulnerabilidades, aunque no se pueda acceder a ellas durante la
ejecución.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se eliminan los problemas relacionados


DeadCodeFilter con el código no alcanzado. Por ejemplo, código no alcanzado
generado por un compilador que no aparece en el código fuente.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Si se establece en true, se excluyen las descripciones del


FVDLDisableDescriptions archivo de resultados de análisis (FVDL).
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se excluye la sección ProgramData del


FVDLDisableProgramData archivo de resultados de análisis (FVDL).
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se excluyen los datos del motor del


FVDLDisableEngineData archivo de resultados de análisis (FVDL).
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se excluyen los fragmentos de código


FVDLDisableSnippets del archivo de resultados de análisis (FVDL).
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se excluye la evidencia de la etiqueta


FVDLDisableLabelEvidence del archivo de resultados de análisis (FVDL).

HP Fortify Static Code Analyzer (4.40) Página 130 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: booleano


Valor predeterminado: false

com.fortify.sca. Especifica la ubicación de la hoja de estilos para los resultados


FVDLStylesheet del análisis.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado:
${com.fortify.Core}/resources/sca/fvdl2html.xsl

com.fortify.sca. Especifica la ubicación del archivo de registro predeterminado.


LogFile
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: ${com.fortify.sca.ProjectRoot}
/log/sca.log

com.fortify.sca. Cuando se establece esta propiedad, se habilita la rotación del


LogMaxSize registro de SCA. El valor es el número de bytes que SCA puede
guardar en el archivo de registro antes de su rotación. Se debe
utilizar con com.fortify.sca.LogMaxFiles.
Tipo de valor: número
Valor predeterminado: (ninguno)

com.fortify.sca. Número de archivos de registro que se deben incluir en el


LogMaxFiles conjunto de rotación del archivo de registro. Cuando se alcance
el número total, se sobrescribirá el primero de la rotación. El
valor debe ser, como mínimo, 1. Esta propiedad se debe utilizar
con com.fortify.sca.LogMaxSize.
Tipo de valor: número
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, SCA sobrescribe el archivo de registro


ClobberLogFile en cada nuevo examen.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, de forma predeterminada, no se añade


SuppressLogPrefix ningún prefijo al nombre del archivo de registro.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Si se establece en true, SCA guarda los datos relacionados con


PrintPerformanceDataAfterSca el rendimiento en el archivo de registro después de que se
n complete el examen. Este valor se establece automáticamente
como true cuando se pase al modo de depuración.

HP Fortify Static Code Analyzer (4.40) Página 131 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: booleano


Valor predeterminado: false

com.fortify.sca. Si se establece en true, SCA supervisa el uso de la memoria y


MonitorSca advierte cuando la recolección de elementos no utilizados de la
JVM sea excesiva.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Establece la ubicación del archivo binario CPFE que se debe


cpfe.command utilizar en la fase de conversión.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado:
${com.fortify.Core}/private-bin/sca/cpfe48

com.fortify.sca. Si se establece en true, SCA utiliza la versión 4.4.1 de archivo


cpfe.441 CPFE.
Tipo de valor: booleano
Valor predeterminado:

com.fortify.sca. Establece la ubicación del archivo binario CPFE (versión 4.4.1)


cpfe.441.command que se debe utilizar en la fase de conversión.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado:
${com.fortify.Core}/private-bin/sca/cpfe441.rfct

com.fortify.sca. Añade opciones a la línea de comandos del archivo CPFE que


cpfe.options se deben utilizar cuando se convierta código de C/C++.
Tipo de valor: cadena
Valor predeterminado:
--remove_unneeded_entities --suppress_vtbl -tused

com.fortify.sca. Establece el nombre de la opción de CPFE que especifica el


cpfe.file.option nombre del archivo de salida (por ejemplo, NST).
Tipo de valor: cadena
Valor predeterminado: --gen_c_file_name
Ejemplo: com.fortify.sca.cpfe.file.option=
--gen_c_file_name

com.fortify.sca. Si se establece en true, el archivo CPFE administra los


cpfe.multibyte caracteres multibyte del código fuente. Esto permite a SCA
administrar código con codificación multibyte, como SJIS
(japonés).

HP Fortify Static Code Analyzer (4.40) Página 132 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: booleano


Valor predeterminado: false

com.fortify.sca. Si se establece en true, cualquier advertencia de los archivos


cpfe.CaptureWarnings CPFE se incluye en el registro de SCA.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, el archivo CPFE falla en caso de error.


cpfe.FailOnError
Tipo de valor: booleano
Valor predeterminado: false

com.fortify. Si se establece en true, cualquier fallo que se produzca al abrir


cpfe.IgnoreFileOpen el archivo de código fuente (incluidos los encabezados) se
Failures considera una advertencia, en lugar de un error.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, el análisis Findbugs se habilita como


EnableFindbugs parte del examen.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Establece el tamaño máximo del montón del análisis Findbugs.


findbugs.maxheap
Tipo de valor: cadena
Valor predeterminado: Tamaño máximo del montón para SCA
Ejemplo: com.fortify.sca.findbugs.maxheap=500m

com.fortify.sca. Si se establece en true, SCA trata las variables no definidas en


CfmlUndefinedVariablesAreTai páginas CFML como contaminadas. Esta acción sirve de
nted indicación al analizador de flujo de datos para que esté atento a
las vulnerabilidades del tipo register_globals. Sin embargo, si
habilita esta propiedad, puede interferir en la detección de flujo
de datos en los que una variable de una página incluida se
inicializa como un valor contaminado en una página incluida
anterior.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, SCA genera métodos implicados


AddImpliedMethods cuando se encuentra una implementación por herencia.
Tipo de valor: booleano

HP Fortify Static Code Analyzer (4.40) Página 133 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Valor predeterminado: true

com.fortify.sca. Especifica la versión del código fuente de Java al conversor de


JdkVersion Java.
Tipo de valor: cadena
Valor predeterminado: 1.5

com.fortify.sca. Si se establece en true, SCA ignora los problemas de gravedad


SuppressLowSeverity baja detectados durante un examen.
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Especifica el nivel del límite para la supresión de la gravedad.


LowSeverityCutoff SCA ignora cualquier problema encontrado con un valor de
severidad más bajo que el especificado para esta propiedad.
Tipo de valor: número
Valor predeterminado: 1.0

com.fortify.sca. Especifica la ubicación de archivos JAR usados habitualmente.


DefaultJarsDirs Los archivos JAR situados en estos directorios se anexan al
final de la opción classpath (-cp). Puede proporcionar una lista
separada por punto y coma o dos puntos de directorios.
Para obtener una lista de los archivos JAR necesarios para
convertir el código J2EE creado con una versión antigua de
J2EE SDK, consulte "Requisitos previos para convertir código
con versiones anteriores del SDK de J2EE" en la página 25.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica una lista de id. de reglas (separada por dos puntos)
analyzer.controlflow. que debe omitir el analizador de flujo de control.
liveness.skip.rules
Tipo de valor: cadena
Valor predeterminado: (ninguno)
Ejemplo:
com.fortify.sca.analyzer.
controlflow.liveness.skip.rules=
B530C5D6-3C71-48C5-9512-72A7F4911822

com.fortify.sca. Si se establece en true, se optimizan los datos de la máquina


analyzer.controlflow. de retorno en el analizador de flujo de control.
EnableRefRuleOptimization
Tipo de valor: booleano
Valor predeterminado: false

HP Fortify Static Code Analyzer (4.40) Página 134 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca. Si se establece en true, se habilita la optimización de la


analyzer.controlflow. actividad en el analizador de flujo de control.
EnableLivenessOptimization
Tipo de valor: booleano
Valor predeterminado:false

com.fortify.sca. Especifica si se deben habilitar los tiempos de espera del


analyzer.controlflow. analizador de flujo de control.
EnableTimeOut
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. En plataformas Windows, especifica la ruta de acceso a la


RegExecutable utilidad reg.exe del sistema. Las rutas de acceso deben contar
con una sintaxis de Windows, y no de Cygwin, incluso aunque
SCA se ejecute desde Cygwin. Las barras diagonales inversas
deben tener una barra diagonal inversa adicional como carácter
de escape.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: reg
Ejemplo: com.fortify.sca.RegExecutable=
C:\\Windows\\System32\\reg.exe

WinForms. Establece varias opciones .NET.


TransformDataBindings
Tipo de valor: booleano y cadena
WinForms.
Ajustes predeterminados y ejemplos:
TransformMessageLoops
WinForms.TransformDataBindings=true
WinForms.
TransformChange WinForms.TransformMessageLoops=true
NotificationPattern
WinForms.TransformChangeNotificationPattern=true
WinForms.
WinForms.CollectionMutationMonitor.Label=WinFormsDa
CollectionMutationMonitor.
taSource
Label
WinForms.ExtractEventHandlers=true
WinForms.
ExtractEventHandlers

com.fortify.sca. Establece el número de líneas de código que deben aparecer


SnippetContextLines sobre un problema. Siempre se incluyen las dos líneas de
código en ambos laterales de la línea donde se produce el error.
De forma predeterminada, aparece un total de cinco líneas.
Tipo de valor: número
Valor predeterminado: 2

com.fortify.sca. Especifica un archivo o lista de archivos que se deben excluir

HP Fortify Static Code Analyzer (4.40) Página 135 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

exclude de la conversión. La lista de archivos debe estar separada por


punto y coma (en Windows) o por dos puntos (en sistemas
distintos a Windows).

Nota: SCA solo utiliza esta propiedad cuando se convierte


sin integración de compilación. Cuando se utiliza
integración con un compilador o herramienta de
compilación, SCA convierte todos los archivos de código
fuente procesados por la herramienta de compilación
incuso aunque se hayan especificado con esta propiedad.

Tipo de valor: cadena (lista de nombres de archivo)


Valor predeterminado: (no habilitado)
Ejemplo: com.fortify.sca.exclude=file1.x;file2.x

com.fortify.sca. Especifica la ruta de acceso a un archivo de filtro para el


FilterFile examen. Consulte "Acerca de los archivos de filtro" en la
página 97 para obtener más información.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, SCA incluye información de depuración


Debug en el archivo de registro.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Es igual que la opción -debug, pero con más detalles, en


DebugVerbose concreto, errores de análisis.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Si se establece en true, se habilita la depuración adicional para


DebugTrackMem temporizadores de rendimiento.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Si se establece en true, se habilitan temporizadores adicionales


CollectPerformanceData para realizar un seguimiento del rendimiento.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Si se establece en true, se incluyen mensajes detallados en el


Verbose archivo de registro.

HP Fortify Static Code Analyzer (4.40) Página 136 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: booleano


Valor predeterminado: (no habilitado)

com.fortify.sca. Si se establece en true, se deshabilita la información de


Quiet progreso de la línea de comandos.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Esta propiedad está obsoleta. En su lugar, utilice la propiedad


DisplayProgress com.fortify.sca.quiet.
Tipo de valor: booleano
Valor predeterminado:true

com.fortify.sca. Información de salida en un formato que pueden utilizar los


MachineOutputMode scripts o las herramientas de SCA, en lugar de imprimir una
salida de forma interactiva. En lugar de que una única línea
muestre el progreso del examen, en la consola se imprime una
nueva línea debajo de la anterior para mostrar el progreso
actualizado.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Archivo en el que guardan los resultados.


ResultsFile
Tipo de valor: cadena
Valor predeterminado: (ninguno)
Ejemplo: com.fortify.sca.ResultsFile=results.fpr

com.fortify.sca. Si se establece en true, desactive la distinción entre


CaseInsensitiveFiles mayúsculas y minúsculas en los archivos CFML de forma que
las aplicaciones se puedan desarrollar utilizando un sistema de
archivos que no distinga entre mayúsculas y minúsculas y se
pueda realizar el examen en sistemas de archivos que sí las
distingan.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Especifica una lista de extensiones de archivo para los


RulesFileExtensions archivos de reglas. Se incluye cualquier archivo cuya extensión
se incluya en esta lista: <Installation_
Dir>/Core/config/rules (o un directorio especificado con la
opción -rules). La extensión .bin siempre se incluye,
independientemente del valor de esta propiedad. El delimitador
de esta propiedad es el separador de ruta de acceso del

HP Fortify Static Code Analyzer (4.40) Página 137 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

sistema.
Tipo de valor: cadena
Valor predeterminado: .xml

com.fortify.sca. Especifica un paquete de reglas o un directorio personalizado.


RulesFile Si especifica un directorio, se incluyen en él todos los archivos
con las extensiones .bin y .xml.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la classpath que se debe utilizar para analizar el


JavaClasspath código fuente Java. En los sistemas Windows se delimita con
punto y coma, mientras que en otros sistemas operativos se
delimita con dos puntos.
Tipo de valor: cadena (rutas de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica una lista separada por punto y coma (en Windows) o
FlexLibraries por dos puntos (en sistemas distintos a Windows) de
bibliotecas a las que vincularse. Esta lista debe incluir
flex.swc, framework.swc y playerglobal.swc (que suelen
situarse en el directorio frameworks/libs de la raíz de Flex
SDK). Esta propiedad se utiliza principalmente para resolver
archivos en ActionScript.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la ubicación de la raíz de Flex SDK válido. La


FlexSdkRoot carpeta debe contener una carpeta de marcos de trabajo que
incluya a su vez un archivo flex-config.xml. También debe
contener una carpeta bin que contenga un ejecutable mxmlc.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica cualquier directorio de código fuente adicional para


FlexSourceRoots un proyecto de Flex. La lista de directorios debe estar separada
por punto y coma (en Windows) o por dos puntos (en sistemas
distintos a Windows).
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la lista delimitada por punto y coma en la que se


DotnetLibdirs sitúan los archivos DLL de terceros. Se utiliza de forma

HP Fortify Static Code Analyzer (4.40) Página 138 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

predeterminada para los archivos .NET de biblioteca.


Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, SCA añade instrucciones ABAP para


AbapDebug depurar mensajes.
Tipo de valor: cadena (instrucción)
Valor predeterminado: (ninguno)

com.fortify.sca. Cuando SCA encuentra una directiva 'INCLUDE' de ABAP,


AbapIncludes busca en el directorio con ese nombre.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica el id. de la compilación.


BuildID
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica un nombre del proyecto que se está examinando.


BuildProject SCA no utiliza este nombre, pero sí se incluye en los
resultados.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica una etiqueta para el proyecto que se está


BuildLabel examinando. SCA no utiliza esta etiqueta, pero sí se incluye en
los resultados.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica un número de versión para el proyecto que se está


BuildVersion examinando. SCA no utiliza este número de versión, pero sí se
incluye en los resultados.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, SCA copia archivos de código fuente


MobileBuildSession en la sesión de compilación.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Especifica el subconjunto de archivos de código fuente que se

HP Fortify Static Code Analyzer (4.40) Página 139 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

BinaryName examinarán. Solo se incluyen en el examen los archivos de


código fuente vinculados en el archivo binario indicado durante
la compilación.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica las rutas de acceso a los directorios que contienen


RubyLibraryPaths las bibliotecas en Ruby.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica las rutas de acceso a una ubicación de RubyGems.


RubyGemPaths Se debe establecer este valor si el proyecto tiene gemas
asociadas que deban examinarse.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, SCA anexa los resultados a un archivo


OutputAppend de resultados existente.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Controla el formato de salida. Los valores válidos son fpr,


Renderer fvdl, text y auto. El valor predeterminado auto selecciona el
formato de salida según la extensión del archivo proporcionado
con la opción -f.
Tipo de valor: cadena
Valor predeterminado: auto

com.fortify.sca. Si se establece en true, SCA realiza un examen rápido. SCA


QuickScanMode utiliza los ajustes de fortify-sca-quickscan.properties,
en lugar del archivo de configuración fortify-
sca.properties.
Tipo de valor: booleano
Valor predeterminado: (no habilitado)

com.fortify.sca. Si se establece en true, SCA imprime los resultados conforme


ResultsAsAvailable estén disponibles. Esto es útil si no utiliza la opción -f (para
especificar un archivo de salida ) e imprime en StdOut.
Tipo de valor: booleano
Valor predeterminado: false

HP Fortify Static Code Analyzer (4.40) Página 140 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

com.fortify.sca. Especifica el archivo de plantilla de la aplicación que quiera


ProjectTemplate utilizar para este examen. Esto solo afecta a los exámenes de
la máquina local. Si la carga se ha realizado en el servidor de
Software Security Center, este utilizará la plantilla de la
aplicación utilizada para la versión de esa aplicación. También
puede especificar una plantilla predeterminada de la aplicación.
Tipo de valor: cadena
Valor predeterminado: (ninguno)
Ejemplo:
com.fortify.sca.ProjectTemplate=
test_filter.txt

com.fortify.sca. Especifica el tipo de codificación del archivo de código fuente


InputFileEncoding durante la conversión. SCA permite examinar un proyecto que
contenga archivos de código fuente con distinta codificación.
Para trabajar con un proyecto con varios códigos, debe
especificar la opción -encoding en la fase de conversión,
cuando SCA lee por primera vez el archivo de código fuente.
Esta codificación se recuerda en la sesión de compilación y se
propaga en el archivo FVDL.
Tipo de valor: cadena
Valor predeterminado: (ninguno)

com.fortify.sca. Si se establece en true, se habilita el análisis de alias.


alias.Enable
Tipo de valor: booleano
Valor predeterminado: true

com.fortify.sca. Especifica el directorio base para los proyectos de ColdFusion.


SourceBaseDir
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Ruta que conduce a la herramienta Ildasm.exe utilizada para


IldasmPath desensamblar lenguaje IL (Intermediate Language) de .NET.
Con frecuencia es necesario para los análisis estáticos de
.NET.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Establece la versión de Visual Studio para los proyectos de


VsVersion .NET. Consulte "Conversión de aplicaciones .NET sencillas"
en la página 29 para obtener una lista de los números de versión
válidos.
Tipo de valor: cadena

HP Fortify Static Code Analyzer (4.40) Página 141 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Valor predeterminado: (ninguno)


Ejemplo: com.fortify.sca.VsVersion=14.0

com.fortify.sca. Especifica una lista de funciones de todos los analizadores que


UniversalBlacklist se deben añadir a una lista negra.
Tipo de valor: cadena (lista separada por dos puntos)
Valor predeterminado: .*yyparse.*

com.fortify.sca. Especifica las rutas de acceso de directorios de importación


PythonPath adicionales. SCA no respeta la variable de entorno
PYTHONPATH que el sistema de tiempo de ejecución Python
utiliza para encontrar los archivos de importación. Utilice este
valor para especificar los directorios de importación
adicionales.
Tipo de valor: cadena (ruta de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica la ruta de acceso a las plantillas de Django. SCA no


DjangoTemplateDirs utiliza el ajuste TEMPLATE_DIRS desde el archivo
settings.py de Django.
Tipo de valor: cadena (rutas de acceso)
Valor predeterminado: (ninguno)

com.fortify.sca. Establece el tamaño del montón para los trabajadores. La


RmiWorkerMaxHeap cantidad de memoria necesaria varía de un proyecto a otro,
pero no es necesario que asigne la misma cantidad de memoria
de la JVM maestra a los trabajadores. Esta propiedad acepta
valores en kilobytes (K), megabytes (M) o gigabytes (G).
Esta propiedad puede serle útil si experimenta bloqueos, no
consigue un aumento de memoria o recibe advertencias de
memoria baja. 
Tipo de valor: cadena
Valor predeterminado: (tamaño del montón de la JVM
maestra)
Ejemplo: com.fortify.sca.RmiWorkerMaxHeap=500M

com.fortify.sca. Especifica el número de subprocesos para el modo


ThreadCount multiproceso. Agregue esta propiedad solo si necesita reducir el
número de subprocesos utilizados a causa de una restricción
de recursos. Si experimenta un aumento del tiempo del examen
o problemas con el mismo, la reducción del número de
subprocesos podría resolver el problema.
Tipo de valor: entero

HP Fortify Static Code Analyzer (4.40) Página 142 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Valor predeterminado: (número de núcleos de procesador


disponibles)

com.fortify.sca. Si se establece en true, SCA incluye a


UseAntListener com.fortify.dev.ant.SCAListener en los argumentos del
compilador.
Tipo de valor: booleano
Valor predeterminado: false

com.fortify.sca. Si se establece en true, se deshabilitan las entradas externas


DisableASPExternalEntries de ASP en los análisis.
Tipo de valor: booleano
Valor predeterminado: false

fortify-sca-quickscan.properties
SCA ofrece un examen menos intensivo conocido como "examen rápido". Esta opción permite
examinar el proyecto en modo Quick Scan utilizando los valores de la propiedad del archivo fortify-
sca-quickscan.properties. De forma predeterminada, un examen rápido busca exclusivamente
problemas de confianza y gravedad altas. Para obtener más información sobre el modo Quick Scan,
consulte la Guía del usuario de HP Fortify Audit Workbench.

Nota: Las propiedades de este archivo solo se procesan si especifica la opción -quick en la línea
de comandos al invocar el examen.

En la tabla se proporcionan dos conjuntos de valores predeterminados: el de los exámenes rápidos y el


de los normales. Si solo aparece un valor predeterminado, significa que es el mismo para los dos tipos
de exámenes.

Nombre de la propiedad Descripción

com.fortify.sca. Establece el límite de tiempo (en milisegundos) del


CtrlflowMaxFunctionTime análisis de flujo de control en una única función.
Tipo de valor: entero
Valor predeterminado de examen rápido: 30000
Valor predeterminado: 600000

com.fortify.sca. Especifica una lista separada por comas o dos puntos de


DisableAnalyzers los analizadores que deben deshabilitarse durante un
examen. Los valores válidos para esta propiedad son:
buffer, content, configuration, controlflow,
dataflow, findbugs, nullptr, semantic, structural y
tracerintegration.

HP Fortify Static Code Analyzer (4.40) Página 143 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Tipo de valor: cadena


Valor predeterminado de examen rápido:
controlflow:buffer
Valor predeterminado: (ninguno)

com.fortify.sca. Especifica el conjunto de filtros que se debe utilizar. Puede


FilterSet utilizar esta propiedad con una plantilla de aplicación para
filtrar en el momento del examen en lugar de hacerlo
posteriormente.
Cuando se establece en Quick View, esta propiedad
ejecuta reglas con un alto impacto potencial y que es muy
probable que ocurran, así como reglas con un alto impacto
potencial, pero que no es probable que ocurran. Si solo se
ejecuta un subconjunto de reglas definidas, SCA realizará
el examen con mayor rapidez. Esto hace que SCA solo
ejecute las reglas que producen problemas identificados
en el conjunto de filtros indicado, según define la plantilla
predeterminada del proyecto para su aplicación. Para
obtener más información sobre los conjuntos de filtros,
consulte la Guía del usuario de HP Fortify Audit
Workbench.
Tipo de valor: cadena
Valor predeterminado de examen rápido: Quick View
Valor predeterminado: (ninguno)

com.fortify.sca. Deshabilita la creación de la metatabla, que incluye la


FPRDisableMetatable creación de información para la vista Function de Audit
Workbench y permite mostrar la declaración haciendo clic
con el botón derecho en una variable de la ventana de
código fuente. Si los exámenes de C/C++ tardan mucho,
con esta propiedad puede reducir la duración en horas.
Tipo de valor: booleano
Valor predeterminado de examen rápido: true
Valor predeterminado: false

com.fortify.sca. Deshabilita la inclusión de código fuente en el archivo


FPRDisableSourceBundling FPR. Evita que SCA genere archivos de código fuente
marcados durante un examen. Si planea cargar archivos
FPR generados a partir de un examen rápido en Software
Security Center, debe establecer esta propiedad en false.
Tipo de valor: booleano
Valor predeterminado de examen rápido: true

HP Fortify Static Code Analyzer (4.40) Página 144 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Valor predeterminado: false

com.fortify.sca. Establece el límite de tiempo (en milisegundos) del


NullPtrMaxFunctionTime análisis de puntero nulo en una única función. El valor
predeterminado estándar es cinco minutos. Si establece
un límite más corto, reducirá la duración general del
examen.
Tipo de valor: entero
Valor predeterminado de examen rápido: 10000
Valor predeterminado: 300000

com.fortify.sca. Deshabilita el seguimiento de ruta de acceso para el


TrackPaths análisis de flujo de control. El seguimiento de ruta de
acceso proporciona informes más detallados sobre los
problemas, aunque aumenta la duración del examen.
Puede deshabilitar este valor solo para JSP
estableciéndolo en NoJSP. Especifique None para
deshabilitar todas las funciones.
Tipo de valor: cadena
Valor predeterminado de examen rápido: (ninguno)
Valor predeterminado: NoJSP

com.fortify.sca. Especifica el límite de tamaño para cálculos complejos en


limiters.ConstraintPredicateSize el analizador de búfer. Omite cálculos que superen el valor
del tamaño especificado en el analizador de búfer con el fin
de mejorar la duración del examen.
Tipo de valor: entero
Valor predeterminado de examen rápido: 10000
Valor predeterminado: 500000

com.fortify.sca. Controla la profundidad máxima de llamadas a través de la


limiters.MaxChainDepth cual el analizador de flujo de datos realiza el seguimiento
de los datos contaminados. Si aumenta este valor,
aumenta la cobertura del análisis de flujo de datos, lo que
aumenta también su duración.

Nota: La profundidad de llamadas se refiere a la


profundidad máxima de llamadas en una ruta de
acceso de flujo de datos entre un origen contaminado
y el receptor, y no a la que existe desde el punto de
entrada del programa, como main().

Tipo de valor: entero


Valor predeterminado de examen rápido: 3

HP Fortify Static Code Analyzer (4.40) Página 145 de 147


Guía del usuario
Apéndice J: Opciones de configuración

Nombre de la propiedad Descripción

Valor predeterminado: 5

com.fortify.sca. Establece el número de ocasiones en las que el analizador


limiters.MaxFunctionVisits de propagación de contaminación visita las funciones.
Tipo de valor: entero
Valor predeterminado de examen rápido: 5
Valor predeterminado: 50

com.fortify.sca. Controla el número máximo de rutas de acceso que deben


limiters.MaxPaths indicarse para una única vulnerabilidad de flujo de datos. Si
cambia esta valor, los resultados encontrados no varían,
solo el número de rutas de acceso de flujo de datos que se
muestra para un resultado individual.
Tipo de valor: entero
Valor predeterminado de examen rápido: 1
Valor predeterminado: 5

com.fortify.sca. Establece un límite de complejidad para el análisis de flujo


limiters.MaxTaintDefForVar de datos. El flujo de datos reduce de forma incremental la
precisión del análisis en aquellas funciones que superen
esta métrica de complejidad para un determinado nivel de
precisión.
Tipo de valor: entero
Valor predeterminado de examen rápido: 250
Valor predeterminado: 1000

com.fortify.sca. Establece un límite máximo para la complejidad de la


limiters.MaxTaintDefForVarAbort función. Si la complejidad de una función supera este
límite en el nivel de precisión más bajo, el analizador omite
el análisis de esta función.
Tipo de valor: entero
Valor predeterminado de examen rápido: 500
Valor predeterminado: 4000

HP Fortify Static Code Analyzer (4.40) Página 146 de 147


Envío de comentarios sobre la
documentación
Si tiene comentarios acerca de este documento, puede ponerse en contacto con el equipo de
documentación por correo electrónico. Si hay un cliente de correo electrónico configurado en este
sistema, haga clic en el vínculo anterior y se abrirá una ventana de correo electrónico con la siguiente
información en la línea de asunto:
Comentarios sobre la Guía del usuario (Fortify Static Code Analyzer 4.40)
Agregue sus comentarios al correo electrónico y haga clic en Enviar.
Si no hay ningún cliente de correo electrónico disponible, copie la información anterior en un mensaje
nuevo de un cliente de correo web y envíe sus comentarios a HPFortifyTechPubs@hpe.com.
Gracias por sus comentarios.

HP Fortify Static Code Analyzer (4.40) Página 147 de 147

También podría gustarte