
eval()
Исследовательский и демонстрационный проект в области наступательной кибербезопасности, созданный исключительно в образовательных и просветительских целях.
Любое использование на системах без явного разрешения незаконно.
Данный репозиторий должен использоваться только:
Описанный здесь сценарий уязвимости предназначен только для образовательной демонстрации.
CVE-2026-8838 — это критическая уязвимость внедрения кода (Remote Code Execution), обнаруженная в официальном Python-коннекторе Amazon Redshift (amazon-redshift-python-driver).
Уязвимость вызвана небезопасным использованием встроенной функции Python eval() для данных, получаемых напрямую с сервера, в функции vector_in(). Вредоносный сервер или атакующий, занимающий позицию Man-in-the-Middle (MitM), может отправить специально сформированную полезную нагрузку, которая будет вычислена и выполнена на стороне клиента без какой-либо проверки.
Функция vector_in() отвечает за десериализацию векторных данных, полученных от сервера Redshift. В уязвимых версиях она использует eval() непосредственно для необработанного содержимого, возвращаемого сервером:
# Code vulnérable (simplifié) — versions < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# FAILLE : eval() sur une donnée contrôlée par le serveur
return eval(raw)
Вредоносный сервер может вернуть любое корректное Python-выражение вместо легитимного вектора. Python выполнит его как собственный код.
Client (victime) Serveur (malveillant / MitM)
| |
|---------- Connexion Redshift ----------->|
| |
|<--------- Réponse forgée ---------------|
| "[__import__('os').system('cmd')]" |
| |
| eval() exécute le payload côté client |
| => RCE sur la machine du client |
См.
poc_server.pyдля имитации сервера иpoc/poc_client.pyдля демонстрационного клиента.
PoC имитирует сервер Redshift, возвращающий поддельный ответ. Исключительно в демонстрационных целях используемая полезная нагрузка безвредна (whoami).
Запуск:
# Terminal 1 — démarrer le faux serveur
python poc/poc_server.py
# Terminal 2 — simuler le client vulnérable
python poc/poc_client.py
Успешная эксплуатация позволяет атакующему:
| Пакет | Уязвимая версия | Исправленная версия |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
Проверьте установленную версию:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# Vérification
pip show amazon-redshift-python-driver | grep Version
# Attendu : Version: 2.1.14 ou supérieure
См. файл MITIGATION.md с подробными рекомендациями:
Maxime288 — github.com/Maxime288
Исследование выполнено в образовательных целях в рамках изучения наступательной безопасности.
| Поле | Значение |
|---|
| Идентификатор CVE | CVE-2026-8838 |
| Оценка CVSS | 9.8 (Critical) |
| CWE | CWE-94 — Improper Control of Generation of Code |
| Вектор CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Уязвимый компонент | amazon-redshift-python-driver < 2.1.14 |
| Уязвимая функция | vector_in() |
| Тип атаки | Rogue server / Man-in-the-Middle |
| Требуется аутентификация | Нет |
| Взаимодействие с пользователем | Нет |