ПЕРЕЙТИ ДО ЗМІСТУ
Дистанційна ударна група Альфа
EN SV ВИДАННЯ 2026-Q2 АКТИВНА
НЕТАЄМНО
FSG-A // ДОКТРИНА // БЕЗПЕКА

ПОСИЛЕННЯ
ПРОШИВКИ

Автор: Tiny
ГОТОВО 6 ХВ ЧИТАННЯ
КЛЮЧОВИЙ ВИСНОВОК
Заводська установка ArduPilot приймає команди від будь-кого — без автентифікації, без шифрування, без примусу меж. Супротивник з RTL-SDR за €25 може перехопити пакети MAVLink, зрозуміти формат (протокол відкритий) і надіслати команду DISARM, що посадить ваш дрон. Посилення прошивки закриває ці двері: підпис MAVLink (автентифікація ключем SHA-256), вимкнення невикористаних портів, примус геозабору та розширене аварійне повернення. Десять параметрів. П'ятнадцять хвилин на дрон. Одноразове налаштування, що захищає кожен наступний політ.

Загроза — ін'єкція команд

Протокол MAVLink — відкритий. Формат пакетів опублікований. Будь-який компетентний супротивник може побудувати передавач MAVLink з SDR і ноутбука. Без підпису автопілот не може відрізнити команду від легітимного оператора від команди від ворога. Найшкідливіша атака — не розбити дрон, а надіслати тиху команду RTL (Return To Launch). Дрон слухняно летить до координат ворога, які він встановив як «домашню» позицію. Оператор бачить, як дрон відлітає, і не може його зупинити, бо RTL-команда ворога переважає над діями оператора.

Підпис MAVLink запобігає цьому: кожна команда містить хеш SHA-256, обчислений з 32-байтним секретним ключем. Автопілот перевіряє хеш перед виконанням будь-якої команди. Без правильного ключа команда тихо відкидається. Ворог бачить дрон, але не може ним керувати. Генерація ключа: openssl rand -hex 32 дає 256-бітний випадковий ключ. Завантажується через USB при першому підключенні. Ключ існує лише на USB-диску оператора і в оперативній пам'яті дрона — ніколи не зберігається у постійній флеш-пам'яті.

Набір параметрів посилення

BRD_SERIAL_SIGNING=1: вмикає підпис MAVLink на всіх послідовних портах. Кожна вхідна команда MAVLink повинна містити дійсний HMAC-підпис. Непідписані команди відкидаються без відповіді — атакуючий не отримує жодного сигналу, що його команди відхиляються. Це єдиний найважливіший параметр посилення.

FS_THR_ENABLE=1: активує аварійне повернення за тягою. Якщо радіозв'язок втрачено довше ніж на FS_THR_VALUE секунд, дрон виконує FS_LONG_ACTN (за замовчуванням: RTL на висоті 150 м). Це запобігає «втечі дрона» — дрон, що втратив зв'язок без аварійного повернення, продовжує останню команду необмежений час, доки не сяде акумулятор, і потенційно приземляється на ворожій території з цілою електронікою та ключами шифрування.

Геозабор

GEO_FENCE_ENABLE=1 з GEO_FENCE_TYPE=7 (висота плюс коло плюс полігон): створює віртуальний кордон. Якщо дрон перетинає забор — чи то через помилку пілота, вітер або ін'єкцію команди — він автоматично повертається до точки запуску. GEO_FENCE_ALT_MAX=300 запобігає підйому дрона вище 300 м над землею, де він стає видимим для радарів і систем SAM.

Розширене аварійне повернення

AFS_ENABLE=1: Забезпечує додаткову логіку припинення польоту для катастрофічних відмов — якщо всі джерела навігації відмовляють, якщо автопілот виявляє апаратну несправність, якщо одночасно спрацьовують кілька аварійних умов. AFS_TERM_ACTION=42 запускає контрольоване припинення польоту: двигуни вимикаються, дрон передбачувано падає. Це запобігає тому, щоб неконтрольований дрон влетів у позиції своїх військ.

Вимкнення невикористаних портів

SERIAL3_PROTOCOL=-1, SERIAL4_PROTOCOL=-1, SERIAL5_PROTOCOL=-1: вимикає всі невикористані послідовні порти. Кожен відкритий послідовний порт — це поверхня атаки. Супротивник, який отримує фізичний доступ до дрона, може підключитися до невикористаного UART і впровадити команди в обхід шифрування радіорівня. Закриття невикористаних портів усуває цей вектор.

Від чого посилення НЕ захищає

Фізичне захоплення: якщо дрон сідає на ворожій території, ворог отримує обладнання. Посилення не захищає від фізичного розбирання — захоплений дрон-протокол (ключі в RAM, LUKS-зашифрований SD, без постійних секретів) розв'язує це окремо. Заградительне глушіння: посилення захищає канал команд, але не може подолати глушник, що блокує всі радіочастоти — цим займаються FHSS і CRPA. Кінетичне знищення: жоден параметр прошивки не захищає від кулі чи ракети SAM.

Посилення — лише один шар у багатошаровій архітектурі оборони; воно необхідне, але недостатнє саме по собі.

Чек-ліст перевірки посилення

Після застосування параметрів посилення перевірте, що кожен з них набув чинності. Тест 1 — підпис: з другої наземної станції без ключа підпису надішліть команду MAVLink ARM. Очікуваний результат: дрон її ігнорує. Якщо дрон озброюється — підпис не активний. Тест 2 — геозабор: летіть до межі геозабору в SITL. Очікувано: дрон автоматично повертається. Тест 3 — аварійне повернення: відключіть радіолінію.

Очікувано: дрон входить у RTL протягом налаштованого тайм-ауту. Тест 4 — скан портів: підключіть USB-serial адаптер до UART3. Очікувано: немає відповіді MAVLink (порт вимкнено). Задокументуйте всі чотири результати тестів у технічному журналі дрона. Повторюйте після кожного оновлення прошивки — параметри можуть скинутися на значення за замовчуванням під час прошивання.

Посилення прошивки — це фундамент кібербезпеки дронів. Без нього кожен інший захід безпеки обходиться на рівні прошивки. Дрон із зашифрованим MANET, але непосиленою прошивкою, приймає непідписані команди MAVLink через будь-який послідовний порт. Посилення прошивки назавжди закриває ці чорні ходи. Конфігурацію прошивки слід перевіряти після кожної зміни параметрів і перед кожним розгортанням.

ПРОСТОЮ МОВОЮ: ЗАЧИНІТЬ ДВЕРІ
Чотири критичні параметри: підпис (відкидає фальшиві команди), аварійне повернення (повертається при втраті зв'язку), геозабор (запобігає втечі), вимкнення портів (закриває поверхні атаки). П'ятнадцять хвилин на дрон. Нульова вартість. Без цього супротивник з SDR-донглом за €25 посадить ваш дрон собі під ноги. З цим він бачить дрон, але не може його торкнутися.

← Частина Інтеграція взводу

Реалізація

# ArduPilot Security Hardening Checklist
HARDENING_PARAMS = {
    # MAVLink signing — reject unsigned commands
    "BRD_SERIAL_SIGNING": 1,
    
    # Disable unused serial ports
    "SERIAL3_PROTOCOL": -1,    # Disabled
    "SERIAL4_PROTOCOL": -1,    # Disabled
    "SERIAL5_PROTOCOL": -1,    # Disabled
    
    # Geofence — prevent flyaway
    "GEO_FENCE_ENABLE": 1,
    "GEO_FENCE_TYPE": 7,      # Altitude + circle + polygon
    "GEO_FENCE_ACTION": 1,    # RTL on breach
    "GEO_FENCE_ALT_MAX": 300, # Max 300m AGL
    
    # Advanced failsafe
    "AFS_ENABLE": 1,
    "AFS_TERM_ACTION": 42,    # Terminate flight on critical failure
    
    # RC override protection
    "RC_OVERRIDE_TIME": 0,    # Disable RC override via MAVLink
}

# Apply all parameters
for param, value in HARDENING_PARAMS.items():
    print(f"param set {param} {value}")

Пов'язані розділи

Джерела

Документація підпису MAVLink ArduPilot. Специфікація протоколу MAVLink 2.0. Посібник з налаштування аварійного повернення ArduPilot. Стандарт посилення FSG-A v3.0.