Documentos de Académico
Documentos de Profesional
Documentos de Cultura
HP Fortify SCA User Guide 4.40 ES PDF
HP Fortify SCA User Guide 4.40 ES PDF
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.
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.
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
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
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
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.
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.
Analizador Descripción
Analizador Descripción
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.
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.
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.
Para analizar varias compilaciones de forma simultánea, añada las compilaciones adicionales como
parámetros:
O bien
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:
Para obtener todos los archivos asociados con un id. de compilación concreto, utilice la directiva -
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.
En este comando, <file.mbs> es el nombre de archivo que asigna a la sesión de compilación móvil de
SCA.
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:
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.
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:
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.
Opciones de Java/J2EE
En la siguiente tabla se describen las opciones de Java/J2EE.
-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.
Para convertir todos los archivos .java del directorio src utilizando todos los archivos .jar del
directorio lib como una classpath, escriba lo siguiente:
Para convertir y compilar el archivo MyCode.java utilizando el compilador javac, escriba lo siguiente:
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.
ant -Dbuild.compiler=com.fortify.dev.ant.SCACompiler
-Dsourceanalyzer.buildid=MyBuild
-lib <Installation_Dir>/Core/lib/sourceanalyzer.jar
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
Advertencias de Java
Es posible que vea las siguientes advertencias relacionadas con Java:
Unable to resolve type...
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.
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
mkdir build
auditworkbench findbugs_sample.fpr
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.
commons-logging.jar
j2ee.jar
jasper2_jasper-runtime.jar
xercesImpl-2.0.2.jar
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.
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:
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.
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:
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.
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.
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:
-libdirs <dirs> Especifica una lista de directorios separados por punto y coma en la que
se encuentran las DLL del sistema o de terceros.
Nota: Los archivos PDB son necesarios para las bibliotecas de terceros.
Ejecute SCA para analizar la aplicación .NET desde la línea de comandos del siguiente modo:
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:
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.
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:
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:
Nota: Todos estos pasos se automatizan si se utiliza el HP Fortify Package for Microsoft Visual
Studio.
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,
puede omitir la advertencia. Si la interfaz no está vacía, póngase en contacto con el soporte técnico de
HP Fortify.
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.
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:
En ese caso, puede convertir el archivo con el comando que se muestra a continuación:
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:
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.
make clean
make
make install
En ese caso, puede convertir y compilar de manera simultánea todo el proyecto con los comandos
siguientes:
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:
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.
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.
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.
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:
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.
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.
<Installation_Dir>/Tools/SAP_Extractor.zip
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.
5. Haga clic en el vínculo Extract ABAP code and launch SCA para iniciar HP Fortify ABAP
Extractor.
Sección Datos
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
Sección Datos
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.
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:
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:
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).
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
-ruby-path=/path/one:/path/two:/path/three
/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.
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.
Opción Descripción
-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
Opción Descripción
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.
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.
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.
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:
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:
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.
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.
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.
xcodebuild [<options>] clean (Opcional. Esta acción borra los artefactos de compilación
anteriores.)
sourceanalyzer -b my_buildid -clean
En el código anterior, ARCHS=i386 representa las arquitecturas (ABI, modelos de procesador) a las que
se destina el binario.
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.
COPY FOO
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.
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.
-copy-extensions <ext1>:<ext2>
sourceanalyzer -b <build_id>
La sintaxis básica para examinar un programa en COBOL de formato libre convertido es la siguiente:
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.
-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.
com.fortify.sca.limiters.MaxPassThroughChainDepth=8
com.fortify.sca.limiters.MaxChainDepth=8
-django-template-dirs <path/to/template/dirs>
-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.
#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.
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.
O bien
En el siguiente ejemplo se muestra cómo convertir todos los archivos PL/SQL del directorio sources:
En el siguiente ejemplo se muestra cómo convertir todos los archivos T-SQL del directorio sources:
<!--#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
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”
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"
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.
C:\files\foo\bar.asp
-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.
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:
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.
Más
Utilidad Descripción información
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
Más
Utilidad Descripción información
Opción Descripción
Opción Descripción
-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.
Opción Descripción
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.
Para combinar archivos FPR y establecer las opciones del migrador de id. de instancia, utilice lo
siguiente:
Opción Descripción
-project <primary.fpr> Especifica el archivo FPR principal que desea combinar. Los
conflictos se resuelven con los valores de este archivo.
Opción Descripción
-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.
Ejemplo de Windows:
Para mostrar un informe de errores de análisis completo del archivo FPR, utilice lo siguiente:
Para mostrar el número de problemas por analizador o categoría de vulnerabilidad, utilice lo siguiente:
Para mostrar el número de problemas de una agrupación personalizada basada en una búsqueda,
utilice lo siguiente:
Opción Descripción
Opción Descripción
Código de
salida Descripción
Opción Descripción
Opción Descripción
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.
-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.
Opciones de BIRTReportGenerator
En la siguiente tabla se enumeran las opciones de BIRTReportGenerator.
Opción Descripción
Opción Descripción
-searchQuery <query> Especifica una consulta de búsqueda para filtrar los problemas
antes de generar el informe.
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.
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.
fortifyupdate [<options>]
Opción de
FortifyUpdate Descripción
-import <file.zip> Importa el archivo .zip que incluye el contenido de seguridad archivado.
-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
Opción de
FortifyUpdate Descripción
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.
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>
sourceanalyzer -version
• 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.
-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.
-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
-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.
-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.
Opciones de análisis
En la siguiente tabla se describen las opciones de análisis.
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
-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-warnings Utilícela con -b <build_id> para mostrar todos los errores y las
advertencias de la fase de conversión en la consola.
Otras opciones
En la siguiente tabla se describen otras opciones.
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>
Nota: En la siguiente tabla, la extensión .java solo se utiliza como ejemplo para mostrar las
distintas opciones de los especificadores de archivo.
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 (/).
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.
Propiedad Descripción
Propiedad Descripción
-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:
<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
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>
</sourceanalyzer>
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.
Opción de la línea
Atributo de comandos Descripción
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.
Opción de la línea
Atributo de comandos Descripción
Opción de la línea
Atributo de comandos Descripción
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.
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.
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:
También puede llamar a MSBuild para que inicie una compilación y un análisis de SCA:
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:
2. Cree un destino nuevo o agregue el destino personalizado siguiente a un destino existente para
invocar la tarea personalizada:
<TranslateTask
BinariesFolder="$(OutDir)"
BuildID="TempTask"
VSVersion="<Visual Studio Version>"
JVMSettings="-Xmx1000M"
LogFile="trans_task.log"
Debug="true" />
</Target>
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" />
<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>
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">
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" />
<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"
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”/>
<CloudScanTask
BuildID="TempTask"
SSCUpload="false"
FPRName="Scan.fpr"
CloudURL="http://localhost:8080/cloud-ctrl" />
</Target>
Archivo o
directorio Descripción
settings.xml Archivo XML que establece el espacio de nombres que se debe utilizar según
su relación con los ajustes de Maven.
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.
O bien
set PATH=%PATH%;path_to_HP_Fortify_SCA_and_Apps\bin
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>.
mvn install
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.
mvn install
En el comando anterior, <ver> es la versión del complemento Maven que está utilizando.
mvn install
Nota: Para utilizar esta versión del comando, debe colocar una copia del archivo
settings.xml en el repositorio local.
4. Ejecute el examen:
-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;
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.
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á
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.
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
Nombre de
carpeta Descripción Vulnerabilidades
Muestras avanzadas
En la tabla siguiente se incluye una lista de los archivos de muestra del directorio advanced
(<Installation_Dir>/Samples/advanced).
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.
ejb Incluye una aplicación J2EE entre niveles de muestra con servlets y
EJB.
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.
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).
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.
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.SqlLanguage = TSQL
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.
Especificación
Orden de propiedad Descripción
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
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
Tipo de valor: booleano
Valor predeterminado: (ninguno)
Tipo de valor: booleano
Valor predeterminado: (ninguno)
Tipo de valor: booleano
Valor predeterminado: (ninguno)
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.
compilers.mvn=
com.fortify.sca.
util.compilers.
MavenAdapter
globals y always.
Tipo de valor: cadena
Valor predeterminado: classrule
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
sistema.
Tipo de valor: cadena
Valor predeterminado: .xml
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)
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.
Valor predeterminado: 5