May 13, 2025

валор

Обнаружена проблема с недостаточной защитой API-эндпоинтов, таких как:

  • https://valor.bet/m-api/v1/clientdatas
  • и других, доступных по /m-api/v1/*

Для усиления защиты API предлагаю реализовать следующие меры на уровне Cloudflare:

  1. Фильтрация HTTP-методов – разрешить только допустимые методы (GET, POST) для API-запросов. Пример на скрине:
скрин 1.1

  1. Проверка заголовков – настроить правила, требующие наличие следующих заголовков:
    • Origin
    • Referer
    • Sec-Fetch-Mode со значением cors (на скрине подобное правило, вам нужно добавить только свои эндпоинты апи) ! Так-же перепроверьте какой ставиться origin и referer при ваших АПИ запросах через DevTool network можно глянуть Код правила: (http.request.uri.path eq "/m-api/v1/" and ( http.request.method ne "POST" or http.referer ne "https://valor.bet/" or http.request.headers["origin"][0] ne "https://valor.bet/" or http.request.headers["sec-fetch-mode"][0] ne "cors" ))
  2. Включение rate limiting – ограничить количество запросов к API в минуту с одного IP-адреса (прописывайте свои апи эндпоинты либо contains
    /m-api/v1/)
скрин 1.2

Проверьте включены ли у вас автоматические правила смягчения аттаки cloudflare [Security -> DDoS]

скрин 1.3

Если у вас есть тариф cloudflare business, активируйте bot fight mode защиту, она реализована на машином обучении и помогает обнаруживать "вредоносный трафик" во время аттак на уровне TLS, HTTP/1.1 HTTP/2 HTTP/3 протоколов и фильтрует аттаку

скрин 1.4

Также выявлена серьёзная уязвимость: IP-адреса backend-серверов находятся в открытом доступе. Это делает их потенциальной целью для прямых атак, минуя защиту Cloudflare.


Оффициальный диапазон IP Адрессов Cloudflare https://www.cloudflare.com/ips/

Так-же у вас открыт git.valor.bet, что позволяет в будущем легче провести аттаку, ведь аттакующая сторона уже будет знать на каком хостинг провайдере вы находитесь. Аттакующей стороне понадобиться всего пару часов чтобы выявить ваш реальный ип адресс для аттаки ( если вы его ещё не закрыли по методике описаной ниже )

Рекомендуемые меры:

  • Закрытие прямого доступа к HTTP(S)-портам (80, 443 и другим, используемым проектом) с любых IP-адресов, кроме тех, что принадлежат Cloudflare.
  • Настроить iptables с разрешением только доверенных IP-диапазонов Cloudflare:

# Пример: разрешаем Cloudflare IP (замените на актуальные)
iptables -A INPUT -p tcp -s 77.220.207.0/24 -m multiport --dports 80,443 -j ACCEPT
# Разрешаем доступ с внутренних IP (например, для CI/CD)
iptables -A INPUT -p tcp -s ВАШ_ВНУТРЕННИЙ_IP/32 -m multiport --dports 80,443 -j ACCEPT
# Запрещаем всё остальное
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP
#--dports указывайте все ваши хттп порты ❗️

Готовые команды с диапазонами cloudflare

IPV4:
iptables -A INPUT -p tcp -s 77.220.207.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 45.10.240.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 45.10.241.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 45.10.242.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 186.2.160.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 186.2.164.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 186.2.167.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 186.2.168.0/24 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 185.178.209.197/32 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s 190.115.30.44/32 -m multiport --dports 80,443 -j ACCEPT

IPV6: ip6tables -A INPUT -p tcp -s 2400:cb00::/32 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2606:4700::/32 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2803:f800::/32 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2405:b500::/32 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2405:8100::/32 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2a06:98c0::/29 -m multiport --dports 80,443 -j ACCEPT ip6tables -A INPUT -p tcp -s 2c0f:f248::/32 -m multiport --dports 80,443 -j ACCEPT iptables -A INPUT -p tcp -s ВАШ ИП СЕРВЕРА/32 -m multiport --dports 80,443 -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP

После сохраняем чтобы после ребута сервера правила не слетели
sudo apt update sudo apt install iptables-persistent sudo iptables-save > /etc/iptables/rules.v4 sudo ip6tables-save > /etc/iptables/rules.v6

Если нужно можете добавить доступ к хттп портам разработчикам в команде ввести диапазон их ип адрессов либо вашего корп. впн