En el mundo de los analizadores de código estático, todos conocemos Sonarqube, sin duda, uno de los mejores 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.
También tenemos herramientas gratuitas como: Security Code Scan y Roslynator que nos ayudan en el analisis de código y seguridad, pero a veces es bueno ejecutar más de una para comparar la información y tener un informe más completo para auditar el codigo.
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 del pipeline CI:
PM > Get-Project -All | Install-Package Puma.Security.Rules
Para configurarlo, hacerlo como explican en la wiki del enlace oficial: https://github.com/pumasecurity/puma-scan/wiki/Installation
Video DevSecOps con Puma Scan de Eric Johnson
Un video genial de como detectar vulnerabilidades en codigo fuente con Puma.
Aqui dejo la lista de las vulnerabilidades que detecta:
- SEC0001 – Debug Build Enabled
- SEC0002 – Custom Errors Disabled
- 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
Información y Versiones
Puma Scan dispone de 2 versiones: Community (free) y Pro Edition (pay) con sus caracteristicas: https://pumascan.com/pro.html
Nota: En las actualidad soporta .NET Core y contenedores Docker.