Стальная пластина с матрицей радиочастотных ресурсных блоков: часть ячеек вырвана, оставляя рваные провалы. Янтарный луч скользит по поверхности, отбрасывая тени сквозь пустоты.


На приватном 5G NR стенде с USRP B210 исследователи DoSQ показали штуку, от которой становится не по себе: декодирование открытого канала управления PDCCH позволяет деградировать Goodput конкретного абонента на уровне приложения. YouTube Live стриминг жертвы терял качество при sparse hit-rates - интерференция не в каждом слоте, а выборочно, - а соседний UE в той же соте работал без заметных потерь. По сути, это первое эмпирическое доказательство side-channel'а от радиоинтерфейса до прикладного уровня, доступного любому противнику с SDR и пониманием протокола 5G NR. Ни один русскоязычный источник эту атаку пока не разбирал. Закрываю gap.

[Полная библиографическая ссылка DoSQ не верифицирована - venue, авторы и DOI требуют проверки]

Планировщик ресурсов 5G NR: уязвимость в архитектуре​

Планировщик ресурсов (scheduler) gNB - центральный компонент 5G NR Radio Access Network. Каждый слот (1 мс при numerology m=0 / SCS 15 кГц, 0.5 мс при m=1 / SCS 30 кГц) scheduler решает, какие time-frequency ресурсы отдать каждому активному UE. Решения транслируются через Physical Downlink Control Channel (PDCCH) в формате Downlink Control Information (DCI).

DCI передаётся в открытом виде. Шифрование не предусмотрено стандартом. Любой приёмник в зоне покрытия gNB способен его декодировать. Вот так просто.

Поля DCI, критичные для атаки на 5G NR планировщик ресурсов:
  • C-RNTI - 16-битный идентификатор UE на MAC-уровне. XOR-маскирует младшие 16 бит 24-битного CRC PDCCH (per 3GPP TS 38.212 §7.3.2). Атакующий перебирает кандидатов C-RNTI при CRC-проверке декодированного DCI; успешная проверка - владелец аллокации найден.
  • PRB allocation - конкретные Physical Resource Blocks в частотно-временной сетке, назначенные этому UE. Показывают, где gNB передаёт данные для абонента в текущем слоте.
  • MCS index - Modulation and Coding Scheme. Высокий MCS (256QAM, высокий code rate) = хороший канал и высокий throughput. Падение MCS - индикатор деградации.
  • HARQ process ID и NDI - параметры Hybrid ARQ: новая передача или ретрансмиссия. Частые ретрансмиссии сигнализируют о потерях.
  • Redundancy version - версия кодирования при повторных передачах.
Механизм утечки зашит в саму логику планировщика. Scheduler реагирует на обратную связь от UE: когда PDSCH принимается корректно (ACK на HARQ), scheduler повышает MCS и выделяет больше PRB. Когда UE шлёт NACK или CQI падает - scheduler снижает MCS, сокращает аллокацию, запускает ретрансмиссии. Эти решения мгновенно отражаются в DCI.

DCI-поток становится зеркалом состояния радиоканала каждого UE. А через радиоканал - косвенным индикатором Goodput приложения. ABR-контроллер видеостриминга реагирует на throughput: при падении снижает разрешение, при длительной деградации останавливает воспроизведение. Scheduler видит деградацию первым и транслирует её обратно в DCI. Атакующий, наблюдая DCI, видит реакцию scheduler'а на собственные действия. Замкнутый контур.

По данным DoSQ, cross-layer сигнализация между приложениями и радиоуровнем в развёрнутых стеках практически отсутствует. Приложение не может проверить, предсказать или адаптироваться к интерференции внутри протокольного стека. Эта уязвимость планировщика ресурсов 5G NR неустранима на стороне приложения - и в этом вся соль.

Модель угроз: атака на радиоинтерфейс 5G с commodity SDR​

1784603845438.webp

DoSQ предполагает атакующего со следующим профилем:

Оборудование: USRP B210 (или X310) от Ettus Research. В исследовании использовался именно B210 - commodity-железо, которое можно заказать с доставкой.

Расположение: в зоне покрытия целевой gNB. Не нужен физический доступ к инфраструктуре оператора, не нужна rogue base station, не нужен перехват трафика на транспортном уровне.

Знания: публичные параметры 5G NR - номер полосы (band), SCS, PCI целевой соты. Извлекаются из SSB в пассивном режиме за миллисекунды.

Два режима работы: пассивный (приём и декодирование DCI - чистое наблюдение, сбор данных) и активный (декодирование DCI + передача интерференции на PRB жертвы в том же слоте).

В терминах MITRE ATT&CK пассивная фаза - Network Sniffing (T1040, тактики Discovery и Credential Access): перехват широковещательной информации scheduler'а. Активная фаза - Network Denial of Service (T1498, тактика Impact), конкретнее Direct Network Flood (T1498.001), но с принципиальным отличием: flood таргетирован на PRB конкретного UE, а не на весь спектр.

Сравнение DoSQ с широкополосным jamming'ом - разница парадигм:

ХарактеристикаШирокополосный jammerDoSQ
Спектральный отпечатокВысокий - занимает всю полосуНизкий - только PRB жертвы
ДетектируемостьТривиальнаяСложно отличить от естественных помех
Энергия передачиВысокаяМинимальная (sparse воздействие)
СелективностьВсе UE в сотеОдно конкретное UE
Обратная связьОтсутствуетЧерез DCI (closed-loop)
Кросс-уровневый эффектПобочныйЦеленаправленный

Wideband jammers, разрушающие коммерческие 5G сети с commodity SDR, не используют структуру протокола и создают жирный footprint для спектрального мониторинга. DoSQ эксплуатирует знание протокола для минимизации следа и максимизации воздействия на конкретную цель. Хирургия вместо ковровой бомбардировки.

Цепочка атаки: от PDCCH side-channel к деградации сервиса 5G​

1784603880924.webp

Полная цепочка от разведки до импакта - пять этапов:
  1. Reconnaissance: пассивный захват SSB, извлечение PCI, SCS, номера полосы. Синхронизация с фреймовой структурой gNB.
  2. Discovery (T1040): декодирование PDCCH, извлечение DCI для всех активных UE. Построение карты аллокаций.
  3. Target Identification: связывание C-RNTI с конкретным UE-жертвой через корреляцию DCI-активности с наблюдаемым поведением.
  4. Side-Channel Analysis: ML-классификатор на DCI-фичах оценивает Goodput-state жертвы и тренд.
  5. Impact (T1498.001): таргетированная интерференция на PRB жертвы -> деградация PDSCH -> HARQ NACK -> снижение MCS -> падение throughput -> ABR downshift -> DoS на уровне качества сервиса.
Результат - Denial of Service Quality: не полный отказ, а контролируемая деградация. Жертва остаётся подключённой, но сервис непригоден для использования.

[Применимо: 5G NR SA/NSA, sub-6 GHz (FR1), SDR в зоне покрытия gNB. Существенно затруднено: mmWave (FR2) - узкие directional beams резко сокращают геометрию атаки (атакующий должен находиться в пределах DL beam жертвы), при развёрнутом SSB-hopping.]

Синхронизация и декодирование DCI в реальном времени​

Захват SSB - первый шаг. SSB содержит PSS и SSS, дающие timing и PCI. Из MIB (Master Information Block), передаваемого в BCH на SSB, атакующий извлекает SFN и конфигурацию CORESET#0 - стартовую точку для поиска PDCCH.

Декодирование DCI из PDCCH требует blind search: gNB размещает DCI в различных Aggregation Levels (AL 1, 2, 4, 8, 16), и для каждого AL - в нескольких кандидатных позициях внутри CORESET. Атакующий перебирает все позиции, декодирует polar code и проверяет CRC с маскированием по C-RNTI. Совпало - валидный DCI для этого UE.

Критическое ограничение: весь pipeline "приём OFDM-символов PDCCH -> FFT -> демаппинг -> polar decode -> идентификация PRB жертвы -> генерация интерференционного сигнала -> TX" должен уложиться в один слот. При m=0 (SCS 15 кГц) символ ~ 71.4 мкс, слот = 1 мс (14 символов). При m=1 (SCS 30 кГц) символ ~ 35.7 мкс, слот = 0.5 мс. В типовой конфигурации CORESET занимает 1-3 первых OFDM-символа слота, PDSCH начинается после; но в 5G NR возможны FDM-расположения CORESET и non-slot-based scheduling. При m=1 окно на весь pipeline сужается до ~250-400 мкс (бюджет: слот 500 мкс − CORESET до 3 символов ~107 мкс − processing latency ~50-100 мкс на polar decode и PRB extraction − TX guard).

На USRP B210 с USB 3.0 часть этого окна съедается на трансфер IQ-samples между FPGA и хостом. Каждая микросекунда, потраченная на IPC, синтез waveform или USB latency, сокращает jammable window. При m=1 слот = 0.5 мс - pipeline должен работать вдвое быстрее. Это архитектурное ограничение определяет минимальные требования к hardware, и B210 здесь на грани.

Таргетированная интерференция: DoSQ атака на качество сервиса 5G​

C-RNTI жертвы определяется и непрерывно отслеживается. Scheduler gNB ротирует аллокации slot-by-slot - каждый пропущенный decode = пропущенная возможность таргетирования. Методы идентификации C-RNTI: timing-корреляция DCI-активности с инициированием сессии жертвы, анализ паттернов аллокации, характерных для конкретного типа трафика.

После идентификации C-RNTI атакующий извлекает из каждого валидного DCI конкретные PRB, назначенные жертве, и генерирует интерференционный сигнал только на этих resource blocks. Спектральный след минимален - кратковременные всплески шума на отдельных PRB сложно отличить от естественных помех в dense urban-сценарии.

На стороне жертвы: PDSCH повреждён -> UE не декодирует transport block -> HARQ NACK -> gNB инициирует ретрансмиссию с пониженным MCS и/или меньшим числом PRB -> throughput падает. Устойчивая интерференция заставляет ABR-контроллер приложения реагировать downshift'ом битрейта.

По данным исследования, при тестировании на YouTube Live Goodput жертвы существенно снижался даже при sparse hit-rates, а co-located UE оставался практически не затронут. YouTube Live выбран намеренно как "сильнейший противник на стороне приложения" - проприетарный ABR-контроллер и live-mode buffer cap делают его более устойчивым, чем open-source стриминговые клиенты. Если DoSQ деградирует такой сервис, то URLLC-слайс (телехирургия, V2X, промышленное управление), не располагающий буфером воспроизведения, подвержен ещё сильнее. И вот тут уже не про видео.

PDCCH side-channel уязвимость: кросс-уровневый вывод Goodput​

Самый интересный вклад DoSQ - доказательство того, что PDCCH работает как количественный кросс-уровневый side-channel. ML-классификатор, обученный исключительно на DCI-фичах, оценивает Goodput-state жертвы без доступа к зашифрованному трафику - "без наблюдения единого зашифрованного байта", по формулировке авторов.

Фичи классификатора извлекаются из DCI-потока конкретного C-RNTI: количество выделенных PRB за окно наблюдения, средний MCS index, частота и паттерн HARQ-ретрансмиссий, scheduling frequency (как часто UE получает аллокацию).

Модель решает две задачи:
  1. State estimation - текущее состояние Goodput (высокий / средний / низкий).
  2. Trend estimation - направление изменения (растёт / стабилен / падает).
Замкнутый контур: атакующий передаёт интерференцию -> DCI-фичи жертвы изменяются (MCS падает, ретрансмиссии растут) -> классификатор фиксирует деградацию Goodput -> атакующий адаптирует стратегию. Goodput уже упал до целевого уровня - интерференция прекращается (экономия энергии, уменьшение спектрального footprint'а). Goodput восстанавливается - воздействие возобновляется. Этакий термостат, только наоборот.

Классификатор, по данным авторов DoSQ, показал высокую precision в режиме "attack-now confidence" - корректно определяя моменты, когда интерференция наиболее эффективна (конкретные метрики accuracy/F1 в доступных материалах не приведены). Принципиальное отличие от blind jamming: атакующий управляет деградацией сервиса 5G с обратной связью.
Python:
# Концептуальный pipeline: DCI -> features -> Goodput inference
# Сильно упрощённый псевдокод: опущены rate matching, polar deinterleaving,
# DCI format disambiguation, multi-RNTI blind search. Требует адаптации под srsRAN
for slot in iq_stream.iter_slots():
    coreset = slot.extract_coreset(coreset_config)
    for al in [1, 2, 4, 8, 16]:
        for cand in coreset.search_space(al):
            # Blind search: polar decode -> rate-match recovery -> CRC descramble
            # CRC XOR с candidate RNTI; совпадение = валидный DCI для этого UE
            # Фаза мониторинга (post-identification): target_rnti уже известен.
            # Для фазы discovery - перебор candidate_rntis (0x0001–0xFFEF)
            dci, crc_ok = cand.polar_decode_and_check(target_rnti)
            if crc_ok:
                feat = {
                    'prb_count': dci.freq_domain_assignment,
                    'mcs': dci.mcs_index,
                    'ndi': dci.new_data_indicator,
                    'rv': dci.redundancy_version
                }
                state, trend = classifier.predict(feat)
                # state: high/medium/low goodput
                # trend: rising/stable/falling

Воспроизведение DoSQ на стенде с srsRAN и USRP B210​

1784603913750.webp

Требования к окружению​

  • SDR: USRP B210 (2 TX/RX, 56 MHz BW, USB 3.0) - минимум один для passive-mode, два для full active+passive pipeline. USRP X310 с 10 GbE существенно надёжнее для active-mode.
  • Хост: Ubuntu 22.04 LTS, RAM минимум 16 ГБ (32 ГБ рекомендуется для real-time IQ-обработки), CPU с AVX2 (i7-10xxx / Xeon, минимум 4 ядра при m=0, 8 ядер при μ=1).
  • 5G NR стенд: srsRAN Project (gNB + UE), Open5GS (5GC - AMF, SMF, UPF). srsRAN - open-source реализация 5G RAN на C++, активно поддерживается. Open5GS - open-source 5G Core.
  • Конфигурация RF: Band n78 (3.5 GHz) или n41 (2.5 GHz), SCS 30 кГц (m=1), bandwidth 20-40 MHz.
  • RF-среда: экранированная камера или attenuated setup с кабельным подключением gNB ↔ UE через аттенюаторы и сплиттеры. Работа в открытом эфире без лицензии - нарушение закона.
  • UHD driver: версия 4.4+ для корректной работы с B210.
  • Верификация: Wireshark с MAC-NR декодером (dissector nr-rrc) для проверки DCI-содержимого и корреляции с аллокациями.

Этапы развёртывания​

Стенд разворачивается в три шага. Первый - запуск Open5GS: конфигурация AMF, SMF, UPF, регистрация SIM-профиля тестового UE (IMSI, Ki, OPc). Второй - запуск srsRAN gNB с конфигурацией CORESET, search space, scheduling policy (round-robin или proportional fair - от этого зависит паттерн DCI). Третий - подключение UE: srsUE или коммерческий модуль (Quectel RM500Q и подобные) через srsUE-wrapper.

Для пассивного захвата DCI - второй SDR на той же полосе. IQ-поток захватывается через uhd_rx_cfile или GNU Radio flowgraph с USRP Source. Декодирование PDCCH реализуется через модифицированный srsRAN-decoder - srsRAN предоставляет библиотеку PHY-функций, включая polar decoder и PDCCH processing. Альтернатива - инструменты на базе gr-nr для GNU Radio, но их зрелость пока ниже.

Для active-mode нужен tight timing: decode DCI на одном SDR -> определить PRB жертвы -> сформировать OFDM-символы интерференции -> передать через второй TX-канал (или второй SDR) в оставшемся окне слота. На B210 с USB 3.0 это пограничный сценарий - X310 с 10 GbE существенно надёжнее. Я бы для серьёзного воспроизведения брал X310 без раздумий.

Smart jamming 5G: почему DoSQ - принципиально новый класс атак​

Литература по PHY-layer security 5G NR, включая обзор Harvanek et al. (2024) [точный venue и DOI не верифицированы], выделяет несколько семейств jammers:
  • Wideband jammers - максимальная мощность на всю полосу. Тривиальная детекция, максимальный collateral damage, никакой селективности. Кувалда.
  • Cell-search / initial-access jammers - атака на PSS/SSS/PBCH (см. обзор Harvanek et al., 2024; venue и DOI не верифицированы). Блокируют подключение новых UE, не влияют на установленные сессии.
  • Protocol-aware reactive jammers - декодируют служебную информацию и таргетируют конкретные каналы или UE. DoSQ принадлежит к этому классу.
Принципиальное отличие DoSQ от предшественников: ни один существующий protocol-aware jammer не пересекал границу уровней (cross-layer). Атакующий управлял причиной (интерференция на конкретном ресурсе), но не мог наблюдать следствие (деградация приложения) - PHY-layer jammer по конструкции слеп к application-layer. DoSQ замыкает этот разрыв: DCI-фичи -> ML -> оценка Goodput -> адаптация стратегии - и превращает blind jamming в управляемую атаку на качество сервиса 5G.

Для контекста: исследование SNI5GECT, описанное Kaspersky на базе работы SUTD (Singapore University of Technology and Design), атакует этап initial access - до установления зашифрованного сеанса - и, по имеющимся данным, требует близкого расположения к жертве. DoSQ работает на уже установленном соединении, радиус ограничен зоной покрытия gNB (сотни метров до километров в sub-6 GHz), воздействие продолжается всё время сессии. Другая поверхность атаки, другая цель, другой масштаб.

Исследования paging-протоколов (ToRPEDO, NDSS 2019, Hussain et al., Purdue University и University of Iowa) показали side-channel'ы в механизме пейджинга 4G/5G для отслеживания абонентов. DoSQ дополняет картину: если paging side-channel раскрывает присутствие UE, то PDCCH side-channel раскрывает активность приложения и позволяет атаковать конкретный сервис.

Контрмеры: SSB-hopping и деградация сервиса 5G NR​

Исследователи DoSQ предложили контрмеру: SSB frequency-time hopping - рандомизация позиции Synchronization Signal Block в частотно-временной сетке. Логика прямолинейная: без синхронизации по SSB атакующий не декодирует PDCCH, не извлекает DCI, не получает данных для таргетирования.

В штатном режиме SSB передаётся на фиксированных позициях. Синхронизация занимает миллисекунды. С SSB-hopping ресинхронизация требует на порядки больше времени (конкретная величина требует верификации по первоисточнику).

SSB-hopping - не бесплатное удовольствие:
  • Обратная совместимость: все UE в соте должны поддерживать hopping-паттерн. Для развёрнутых сетей - обновление прошивок модемов. Удачи с парком устройств.
  • Initial access latency: для легитимных UE увеличивается время cell search и, соответственно, задержка handover и initial attach.
  • Multi-operator deployment: в shared RAN hopping-конфигурация должна быть согласована между операторами.
Альтернативные направления защиты:

PDCCH encryption - фундаментальное решение. Шифрование DCI устранило бы side-channel полностью, но требует изменений в стандарте 3GPP и существенных вычислительных затрат на стороне UE. PDCCH blind search и так ресурсоёмкая операция; добавление криптографии увеличит энергопотребление и latency декодирования. Правильно, но больно.

Аномальная детекция на стороне gNB - мониторинг паттернов HARQ NACK и MCS degradation для выявления таргетированной интерференции. Если конкретное UE стабильно получает NACK на определённых PRB, а соседние UE на тех же частотах - нет, это индикатор targeted jamming. Подход соответствует NIST CSF DE.AE-01 - установление baseline и обнаружение отклонений.

Рандомизация scheduling policy - если scheduler варьирует паттерн PRB-аллокации менее предсказуемо (не round-robin, не static), атакующему сложнее предсказать позицию данных жертвы в следующем слоте. Но DCI для текущего слота всё равно транслируется в открытом виде - рандомизация усложняет predictive jamming, но не reactive. Полумера.

Ограничения DoSQ и контекст применимости​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Когда я впервые воспроизвёл пассивную фазу DoSQ на стенде - декодирование DCI, визуализация MCS-тренда для конкретного C-RNTI - стало очевидно, насколько фундаментальна проблема. Планировщик ресурсов 5G NR работает строго по стандарту: адаптируется к каналу и транслирует решения открыто. Но именно эта штатная работа создаёт side-channel, от которого нельзя защититься на стороне приложения. ABR-контроллер YouTube не знает, что происходит на PHY, не может отличить реальную деградацию канала от целенаправленной интерференции - и по дизайну стека не получает этой информации.

Основная масса обсуждений безопасности 5G крутится вокруг core network: network slicing, SEPP, NRF, проблемы безопасности network slicing (AdaptiveMobile Security, 2021). Это важные поверхности атаки, но они требуют доступа к инфраструктуре оператора или компрометации сетевой функции. DoSQ требует SDR в зоне покрытия - порог входа ниже на порядок. Ущерб масштабируется: от деградации стриминга до потенциального воздействия на URLLC-сервисы, где отсутствие буфера делает PHY-деградацию мгновенно заметной на уровне управления физическими процессами.

SSB-hopping концептуально верна как контрмера - значительный рост стоимости ресинхронизации серьёзно осложняет атаку. Но без изменения стандарта 3GPP это вендор-специфичное расширение с проблемами обратной совместимости. Настоящее решение - шифрование PDCCH или рандомизация привязки C-RNTI к физическим ресурсам на уровне, непредсказуемом для пассивного наблюдателя. До тех пор DCI остаётся открытой книгой, и любой исследователь с USRP B210 и пониманием NR frame structure может её прочитать. Формула на бумаге понятна, но cross-layer inference по-настоящему ощущается только когда сам прогоняешь DCI-поток через классификатор и видишь, как MCS-тренд отражает buffering events YouTube в реальном времени. Теория перестаёт быть абстракцией - и становится вектором атаки.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab