POC详情: 8e1e289546c4be52dd5e9f2ad702d73eb134d00c

来源
关联漏洞
标题: Google TensorFlow 代码问题漏洞 (CVE-2021-37678)
描述:Google TensorFlow是美国谷歌(Google)公司的一套用于机器学习的端到端开源平台。 TensorFlow 中存在代码问题漏洞,该漏洞源于产品从YAML格式反序列化到Keras模型时未对输入数据做有效验证,攻击者可通过该漏洞导致代码执行。以下产品及版本收到影响:TensorFlow 2.5.1、TensorFlow 2.4.3 和 TensorFlow 2.3.4。
描述
TP Seguridad Informática UTN FRBA 2021
介绍
# [CVE-2021-37678](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-37678) Exploit

Para explotar la vulnerabilidad, es necesario levantar un contenedor docker con un ambiente preparado para levantar Tensorflow con una [versión 2.2.3](https://hub.docker.com/r/tensorflow/tensorflow/tags?page=1&ordering=last_updated&name=2.2.3) la cual todavía tiene la vulnerabilidad.
Consta de:
- Una arquitectura AMD de 64 bits,
- CPU o GPU que puede ejecutar instrucciones AVX
- Python de 64 bits en la versión 3.6.9
- Pip3 en la versión 20.2.4
- Tensorflow en la versión 2.2.3
- PyYAML en la versión 3.12


Verificar si la máquina cuenta con docker ejecutando:
```shell
docker -v
```

Una vez que nuestro sistema operativo tenga docker instalado, correr los siguientes comando en la carpeta raiz de este repositorio para construir y levantar la aplicación:

```shell
docker-compose build
```

```shell
docker-compose up
```

O bien, para levantar sin docker compose:

```shell
docker build -t docker-exploit-tensorflow-vulnerability:1.0 . # para construir la imagen
```
```shell
docker run --add-host=host.docker.internal:host-gateway --name exploit-tensorflow-vulnerability docker-exploit-tensorflow-vulnerability:1.0 # para crear y lanzar el proceso por primera vez
docker start -a exploit-tensorflow-vulnerability # para lanzar el proceso nuevamente
```

Para que el reverse shell funcione, hay que tener [netcat](https://en.wikipedia.org/wiki/Netcat) instalado en la máquina atacante, y levantar un puerto de escucha para una sesión ssh. Ej:
```shell
nc -lvp 10000
```
Luego, se explotará la vulnerabilidad mediante un modelo de IA malicioso, donde lanzaremos la conexión con el atacante.
Hay que configurarle la ip y puerto de escucha del atacante en el archivo [reverseShell.yaml](/src/reverseShell.yaml) 
文件快照

[4.0K] /data/pocs/8e1e289546c4be52dd5e9f2ad702d73eb134d00c ├── [ 274] docker-compose.yml ├── [ 277] Dockerfile ├── [1.8K] README.md └── [4.0K] src ├── [1.5K] CreateExampleModel.py ├── [ 833] ExecutePythonScripts.sh ├── [ 263] ExploitTensorflowDeserialization.py ├── [3.9K] model_config.py ├── [ 144] printPasswdFile.yaml └── [ 327] reverseShell.yaml 1 directory, 9 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。