Seguridad: Puma Scan Code Analyzer for C#

En el mundo de los analizadores de código estático, todos conocemos Sonarqube, si duda, uno de los mejores analizadores para todo tipo de proyectos, pero cuando queremos analizar la seguridad del código fuente, se queda un poco corto, porque está más enfocado a la calidad del código fuente y análisis de la deuda técnica de los proyectos.

Puma Scan, este enfocado 100% en la seguridad del código fuente C#, revisa en tiempo real a medida que los equipos de desarrollo escriben código o cada vez que compilan el proyecto. Las vulnerabilidades se muestran de inmediato en el entorno de desarrollo como corrector ortográfico y advertencias del compilador, evitando que los errores de seguridad entren en sus aplicaciones.

Para instalarlo, podemos hacerlo como una extension de Visual Studio o mediante un paquete Nuget y si fuera necesario podemos incluirlo dentro de nuestro pipeline de CI:

PM > Get-Project -All | Install-Package Puma.Security.Rules

 

Aqui dejo la lista de las vulnerabilidades que detecta:

  • SEC0001 – Debug Build Enabled
  • SEC0002 – Custom Errors Disabled
  • SEC0004 – Forms Authentication: Cookieless Mode
  • SEC0005 – Forms Authentication: Cross App Redirects
  • SEC0007 – Forms Authentication: Weak Timeout
  • SEC0008 – Header Checking Disabled
  • SEC0009 – Version Header Enabled
  • SEC0010 – Event Validation Disabled
  • SEC0011 – View State Mac Disabled
  • SEC0012 – Request Validation Disabled
  • SEC0013 – View State Encryption Disabled
  • SEC0014 – Insecure HTTP Cookies
  • SEC0015 – Cookies Accessible Via Script
  • SEC0016 – Cleartext Machine key
  • SEC0020 – Weak Session Timeout
  • SEC0021 – State Server Mode
  • SEC0024 – Unencoded Response Write
  • SEC0100 – Raw Inline Expression
  • SEC0101 – Raw Binding Expression
  • SEC0102 – Raw Razor Method
  • SEC0103 – Raw WriteLiteral Method
  • SEC0104 – Unencoded Literal Text
  • SEC0105 – Unencoded Label Text
  • SEC0025 – Weak Algorithm: DES
  • SEC0026 – Weak Cipher Mode: ECB
  • SEC0027 – Weak Algorithm: MD5
  • SEC0028 – Weak Algorithm: SHA1
  • SEC0115 – Insecure Random Number Generator
  • SEC0029 – Deserialization: Binary Formatter
  • SEC0030 – Deserialization: Newtonsoft JSON
  • SEC0106 – SQL Injection: Dynamic LINQ Query
  • SEC0107 – SQL Injection: ADO.NET
  • SEC0108 – SQL Injection: Dynamic EF Query
  • SEC0114 – LDAP Injection Directory Entry
  • SEC0117 – LDAP Injection Path Assignment
  • SEC0118 – LDAP Injection Directory Searcher
  • SEC0119 – LDAP Injection Filter Assignment
  • SEC0017 – Identity Weak Password Complexity
  • SEC0018 – Identity Password Lockout Disabled
  • SEC0019 – Missing AntiForgery Token Attribute
  • SEC0022 – Model Request Validation Disabled
  • SEC0023 – Action Request Validation Disabled
  • SEC0109 – Unvalidated MVC Redirect
  • SEC0110 – Unvalidated Web Forms Redirect
  • SEC0111 – Path Tampering: MVC File Path Result
  • SEC0112 – Path Tampering: Unvalidated File Path
  • SEC0113 – Certificate Validation Disabled
  • SEC0116 – Path Tampering: Unvalidated File Path

Link: https://www.pumascan.com/rules.html#configuration

Versiones disponibles

Puma Scan dispone de 2 versiones: Community & Pro Edition, la versión profesional, tiene un coste pequeño y ofrece más caracteristicas: https://pumascan.com/pro.html

Por último, una de las cosas más importantes es que nos ofrecen el código fuente disponibles en GitHub: https://github.com/pumasecurity/puma-scan

 

 

 

 

Anuncios

Visual Studio 2017: Trabajando con Git dia a dia

Empezamos el año 2018, en esta ocasión, voy a enlazar una serie de artículos sobre Visual Studio 2017 y Git escritos por Kenichiro Nakamura para trabajar con ello en nuestro dia a  dia, con la finalidad de usarlos como guia de consulta rápida para otros desarrolladores que no conocen la forma correcta de interactuar Visual Studio con Git.

Como comenta Kenichiro, si no conocemos Git lo mejor es empezar con estos videos rápidos: https://git-scm.com/videos

También tenemos estos enlaces recomendados:

La lista de articulos de Kenichiro sobre Git:

Part 1 : Start repository
Part 2 : Saving your solution
Part 3 : Resetting the changes
Part 4 : Branching
Part 5 : Merging the changes
Part 6 : Rebasing
Part 7 : Cheery-picking changes from other branch
Part 8 : Saving your temporary work
Part 9 : Share your work with remote with Git
Part 10 : Share your work with remote with VS
Part 11 : Configuration
Part 12 : Compare your items in Git
Part 13 : Compare your items in VS
Part 14 : Resetting the changes after sharing code with others
Part 15 : Revise local commits
Part 16 : Find out who introduced the issue and when

Feliz Año 2018!!

Visual Studio 2017: Bot Application Template no encontrada

Por defecto, Visual Studio no incluye ninguna plantilla de “Bot Application”, también podemos crear bots desde cero importando los paquetes Nuget correspondientes, pero como sabeis, es mejor usar la plantilla que ya viene configurada con todo lo necesario para desarrollar bots.

La plantilla sirve para Visual Studio 2015 y 2017, podemos descargarla aqui (recordar solo válida para C#):

De forma predeterminada, el directorio de plantillas de proyectos de Visual Studio se encuentra en:

%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

o bien, poniendo la ruta:

C:\Users\MyUser\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#

Copiamos el archivo “Bot Application.zip” descargado dentro de la carpeta y listo:

Abrimos nuestro Visual Studio y ya veremos la plantilla lista para seleccionar.

Creamos el proyecto y vemos que ha cargado la plantilla, realizamos la compilación para ver que funciona correctamente.

Es posible que la primera vez no descargue todos los paquetes Nuget, pero al compilar se soluciona automáticamente, sino, hay que actualizar los paquetes de la solución y listo.

Para configurar la plantilla tambien dejo estos enlaces a GitHub:

 

Happy Codding!!

 

DevOps Spain 2017

 

El pasado 26 de Octubre en Madrid se celebro el DevOps Spain 2017, organizado por atSistemas, en su apuesta por la cultura y movimiento DevOps, donde pudimos ver por 1ª vez a los mejores ponentes nacionales y la participación de empresas como GitHub, Red Hat, AppDynamics, QASymphonyDocker, Atlassian, Amazon Web Services y Oracle como adoptan y aplican estas estrategias en sus organizaciones y clientes con casos de éxito reales.

 

Lista de videos del evento para no perderse ninguno:

Inauguración del Devops Spain

 

Docker: Lista de comandos desde CLI

Docker, para resumirlo brevemente, es una aplicación que nos permite realizar virtualización ligera para construir, desplegar y ejecutar aplicaciones y servicios dentro de contenedores, no voy a explicar que es Docker, porque hay miles de artículos sobre ello en Internet y en la pagina oficial encontrareis toda la información sobre su arquitectura , instalación y configuración aquí: https://docs.docker.com

Solo deciros, que Docker es una herramienta imprescindible que utilizo a diario para montar entornos de desarrollo y pruebas para llevar luego las aplicaciones y servicios a producción sin tener problemas de puesta en marcha.

Comandos imágenes y contenedores

attach: Acceder a la consola de un contenedor que está corriendo
build: Construir una imagen a partir de un Dockerfile
commit: Crear una nueva imagen de los cambios de un contenedor
cp: Copiar archivos/carpetas desde el sistema de ficheros de un contenedor al host
create: Crear un nuevo contenedor
diff: Diferencias en el sistema de ficheros de un contenedor
events: Obtener eventos en tiempo real del estado de un contenedor
exec: ejecuta un comando en un contenedor activo
export: exporta el contenido del sistema de ficheros de un contenedor a un archivo .tar
history: muestra el historial de una imagen
images: lista las imágenes que tenemos descargadas y disponibles
import: crea una nueva imagen del sistema de archivos vacío e importa el contenido de un fichero .tar
info: muestra información sobre los contenedores, imágenes, versión de docker.
inspect: muestra informaciones de bajo nivel del contenedor o la imagen
kill: Matar uno o mas contenedores en ejecución
load: carga una imagen desde un archivo .tar
login: Acceso al servidor Docker Registry para descargar imágenes
logout: Desconectar del servidor Docker Registry
logs: Obtener los registros de logs de un contenedor
pause: pausa todos los procesos dentro de un contenedor
port: buscar puerto público (nateado) y lo hace privado
ps/ps -a: Listar los contenedores activos y detenidos
pull: descargar una imagen o un repositorio del servidor de registros Docker.
push: enviar una imagen o un repositorio al servidor de registros de Docker.
rename: renombra un contenedor existente.
restart: reinicia un contenedor activo.
rm: elimina uno o más contenedores.
rmi: elimina una o más imágenes.
run: ejecuta un comando en un nuevo contenedor.
save: guarda una imagen en un archivo .tar
search: busca una imagen en el índice de Docker.
start: inicia un contenedor detenido.
stats: muestra el uso de los recursos de los contenedores.
stop: detiene un contenedor.
tag: etiqueta una imagen en un repositorio.
top: busca los procesos en ejecución de un contenedor.
unpause: reanuda un contenedor pausado.
update: actualiza la configuración de uno o más contenedores.
version: muestra la versión de Docker instalada.
wait: bloquea hasta detener un contenedor, entonces muestra su código de salida

 

Comandos redes

network connect: conectar un contenedor a una red
network create: crear una nueva red con un nombre especifico
network disconnect: desconectar un contenedor de una red
network inspect: consultar información detallada de una red
network ls: listado de todas las redes creadas
network rm: borrar una o más redes definidas

Comandos volúmenes

volume create: crear un volumen para almacenar datos
volume inspect: obtener información de un volumen
volume ls: listado de los volúmenes
volume rm: eliminar un volumen

 

Lista oficial Docker CLI con ejemplos: Lista comandos Docker con ejemplos

Happy Docking!!

VSTS: Database DevOps for .NET Developers

Como vimos en un articulo anterior sobre VSTS, automatizar los despliegues de nuestro codigo hasta producción es una buena práctica y nos permite trabajar de forma más agil y confiable, pero que pasa con nuestras Bases de datos, scripts, tablas, campos, etc.

Muchas veces solo nos centramos en el codigo ejecutable de aplicaciones y servicios pero también es posible realizar el mismo proceso con nuestros proyectos de bases de datos.

Microsoft explico en su ultimo evento “Net Conf 2017”, la forma correcta de hacerlo mediante VSTS, aplicando técnicas de Database DevOps for .NET Developers with SSDT and SQL Server 2017.

Aqui teneis el video de la charla:

Como siempre, espero que os sea de utilidad.

Cheers and Happy Coding!!

Visual Studio 2017: Plantilla Web Performance & Load Testing no encontrada

Por defecto, cuando instalamos la nueva versión de Visual Studio Enterprise 2017, el nuevo “Visual Studio Installer” nos ofrecerá un dialogo para indicar que productos vamos a utilizar en nuestro IDE, de esta forma tenemos un IDE personalizado con solo las herramientas que necesitamos para nuestro dia a dia, esto sin embargo, provoca que algunas herramientas no esten disponibles cuando vamos a buscarlas para crear un nuevo proyecto dentro de una solución.

Es el caso de “Web Performance & Load Testing Tools”, por defecto, no se instalaran, para solucionarlo simplemente debemos volver a lanzar el “Visual Studio Installer” y en la pestaña de “Individual components” buscar y seleccionar “Web Performance & Load Testing” en el apartado de “Debugging and Testing”.

Como una imagen vale mas que 1000 palabras, aqui teneis:

 

Quickstarts

Para empezar con pruebas de carga recomiendo empezar aquí:

icon
Load test with Visual Studio
icon
Load test with VSTS
icon
Load test with Azure portal
icon
View and compare results

Sitio oficial y tutoriales

En el sitio oficial de Microsoft encontramos información y tutoriales para empezar con escenarios de pruebas de carga.

link: https://docs.microsoft.com/en-us/vsts/load-test

Happy coding!!