关联漏洞
标题:
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付费,感谢您的支持。