Ingeniería y evidencia

Casos de estudio

Los casos de estudio del catálogo: los plugins con la evidencia más inusual, cada uno comprobado contra fuentes públicas, patrones de la competencia y requisitos de cumplimiento.

Caso de estudio

Background ReadAction Freeze Companion

La mayoría de los plugins de este catálogo nacen de usuarios que se quejan de un competidor de pago. Este nació del Platform Blog de JetBrains, que describe un punto de entrada en un hilo de fondo que llega a una llamada de read-lock bloqueante y no cancelable como una causa recurrente de congelamientos del IDE.

Aplicado al propio código de IntelliJ, encontró el patrón en SearchForTestsTask, que ejecuta un paso con el cancelable ReadAction.nonBlocking() y el paso hermano con el bloqueante ReadAction.run(). Eso se convirtió en IDEA-393501, presentado a JetBrains y ya clasificado y asignado. Sobre ese mismo código también descartó una read action cuyo único llamador corre en el EDT: un falso positivo evitado en código de producción, no en un ejemplo sintético.

Ver la evidencia
Fuente
JetBrains Platform Blog
Categoría
Calidad de código
Impacto
Alta (nombrado por la propia JetBrains y luego encontrado en el propio código de IntelliJ, IDEA-393501)

Caso de estudio

Dependency Vulnerability Companion

Todas las alternativas principales (Aikido, Xygeni, los propios plugins de JFrog en Marketplace, Snyk) exigen una cuenta en la nube o un token de acceso personal antes de hacer nada. En diciembre de 2024, Semgrep pasó sus reglas mantenidas a una nueva licencia restrictiva, y un consorcio de proveedores de AppSec competidores (Aikido, Endor Labs, Orca Security y otros) respondió bifurcando el motor como Opengrep. Este plugin revisa la misma clase de dependencias vulnerables sin cuenta, sin token y sin llamadas de red. Es la única forma de servir a los contratistas de defensa regulados por CMMC 2.0, un segmento de compradores que no puede usar ninguna de las alternativas en la nube anteriores.

Ver la evidencia
Fuente
Documentación de proveedores (Aikido, Snyk) + CMMC 2.0
Categoría
Seguridad
Impacto
Alta (CMMC 2.0 exige FedRAMP Moderate para cualquier herramienta en la nube que toque CUI, y ninguna herramienta comercial SCA/SAST en la nube cumple ese requisito)

Caso de estudio

SpEL Injection Sink Companion

La inyección de Spring Expression Language no es una clase de error teórica: en CVE-2022-22963, una expresión de enrutamiento enviada por quien hace la llamada se convertía en código SpEL que Spring Cloud Function analizaba y evaluaba, con ejecución remota de código como resultado. CISA la incluyó en su catálogo de vulnerabilidades explotadas conocidas (KEV) en agosto de 2022. Este plugin marca el mismo mecanismo en el código de la aplicación, directamente en el editor: una llamada a ExpressionParser.parseExpression(...) de Spring cuyo argumento se construye a partir de un parámetro de un endpoint HTTP. El análisis de taint para la categoría general existe en IntelliJ IDEA Ultimate y en el nivel Ultimate Plus de Qodana; este plugin es gratuito, no requiere cuenta y funciona en Community Edition.

Ver la evidencia
Fuente
NVD + CISA KEV (CVE-2022-22963)
Categoría
Seguridad
Impacto
Crítica (CVSS 9.8, incluida por CISA entre las vulnerabilidades explotadas activamente)

Caso de estudio

SSRF Allow-List Bypass Companion

Validar una URL saliente comprobando si un host permitido es prefijo o subcadena del texto crudo es un enfoque estructuralmente débil, y el propio Spring Framework lo demostró: en CVE-2024-22243, una URL analizada con UriComponentsBuilder podía pasar una validación de host mientras la petición iba a otro destino, lo que permitía SSRF o una redirección abierta. La corrección cambió cómo se analiza la parte de userinfo de la URL. Este plugin marca una llamada HTTP saliente (new URL(...) o RestTemplate de Spring) que usa un parámetro de endpoint validado solo con .startsWith/.contains sobre el texto crudo de la URL.

Ver la evidencia
Fuente
Aviso de seguridad de Spring + NVD (CVE-2024-22243)
Categoría
Seguridad
Impacto
Alta (CVSS 8.1, en el propio Spring Framework, cuyo RestTemplate es uno de los sinks que se revisan aquí)

Caso de estudio

Lucene Query Injection Companion

Cuando la entrada cruda del usuario se convierte en sintaxis de consulta de Lucene, puede saltarse los filtros que la búsqueda debía aplicar, y una sintaxis profundamente anidada puede tumbar el clúster: CVE-2023-31419 es un desbordamiento de pila y una denegación de servicio provocados por una query string manipulada contra la propia API _search de Elasticsearch. La inyección SQL la cubren todas las herramientas SAST importantes; este sink no lo cubre ninguna query del repositorio público de CodeQL. Este plugin marca una llamada a QueryBuilders.queryStringQuery(...) o .simpleQueryStringQuery(...) cuya entrada se construye a partir de un parámetro de un endpoint HTTP.

Ver la evidencia
Fuente
NVD (CVE-2023-31419)
Categoría
Seguridad
Impacto
Media (CVSS 6.5, denegación de servicio más evasión de filtros; ninguna query pública de CodeQL cubre este sink)

Se irán sumando más casos de estudio a medida que se revisen. Cada uno exige leer toda la evidencia del plugin en su propio README y comprobar cada afirmación contra una fuente pública, el mismo estándar que los de arriba. Cada plugin del catálogo ya muestra su evidencia; esta página reúne los pocos con las historias más inusuales o mejor documentadas.

Siguiente: Tickets de JetBrains Platform