¿Puedo saber si una secuencia de comandos de Python está segura de transmitir datos confidenciales al analizar sus importaciones?

0

Un experimento mental

Mi objetivo es saber si, y cómo, se puede confiar en un nivel fundamental con un script de Python de un tercero al que se le puede confiar información confidencial.

Básicamente, esta pregunta es, ¿puede un script de Python comunicarse con un tercero sin importar uno de un conjunto de módulos principales para facilitar una comunicación?

Pido esto en el contexto de revisar un script que convierte una base de datos de contraseñas. enlace

Y al momento de escribir, el script solo importa:

import argparse
import csv
import datetime
import logging
import operator  # Toolkit
import re
import sys
import xml.etree.ElementTree as ET  # Saves data, easier to type

No creo que haya ninguna importación dinámica en este caso; Las importaciones dinámicas cosería desconfianza implícita conmigo debido a la complejidad.

Sé que el módulo sys puede tocar un par de flujos específicos.

Dado un conjunto de importaciones conocidas , en realidad es una cadena de dependencia; ¿Se puede descartar que un script determinado sea fundamentalmente incapaz de exponer datos confidenciales? ¿Debido a su falta de importación de código nativo para facilitar dicho transporte?

Consideración; las llamadas open (o file alias) están disponibles en todas las secuencias de comandos, ya que es un tipo de datos central; Y debido a la flexibilidad de los archivos unix, ¿deberían las llamadas a abrir / presentar se consideran una superficie de ataque?

    
pregunta ThorSummoner 13.05.2015 - 01:46
fuente

1 respuesta

1

Simplemente no puede asumir que un programa o script está seguro únicamente en sus importaciones. Es muy fácil combinar funciones o abusar de alguna función "segura" para hacer algo inesperado (como usar consultas de tiempo para transmitir datos a un servidor de comando y control, o engañar al sistema para que ejecute curl con una carga de sus datos)

La única forma de saberlo es hacer una revisión correcta del código de la secuencia de comandos y evaluar si la secuencia de comandos es "segura" o no (lo que define como guardar para usar) es seguro. no se están agregando importaciones de alto riesgo al script en su publicación, pero también tendría que verificar los comandos de bash / system / eval que se "separan" del entorno de Python

    
respondido por el LvB 13.05.2015 - 02:13
fuente

Lea otras preguntas en las etiquetas