
Содержание
Микроархитектурные скрытые каналы являются критической проблемой в современной компьютерной безопасности. В своей основе эти каналы используют тонкие аппаратные поведения для утечки информации между изолированными границами безопасности, обходя традиционные защиты на уровне операционных систем и приложений. Когда облачные вычисления и многоарендные среды становятся нормой, автоматическое обнаружение и смягчение таких угроз становится как никогда важным.
AutoCC — это инновационная структура, которая автоматизирует обнаружение этих скрытых временных каналов, позволяя как наступательным, так и оборонительным заинтересованным сторонам улучшать свое понимание и защиту. В этом руководстве мы расскажем о технологии и исследованиях, лежащих в основе AutoCC, рассмотрим практические советы по обнаружению и объясним важность микроархитектурных скрытых каналов в сегодняшнем ландшафте угроз.
В компьютерной безопасности скрытый канал — это непреднамеренный путь передачи информации, который может быть использован для передачи данных таким образом, чтобы это нарушало политики безопасности системы. В отличие от побочных каналов (которые обычно утечка данных через непреднамеренные излучения или наблюдения), скрытые каналы используются для тайной передачи информации между сотрудничающими агентами, часто обходя средства контроля доступа.
Ключевые характеристики:
Микроархитектура относится к реализацией на уровне аппаратного обеспечения ЦПУ, которые спроектированы быть невидимыми для программного обеспечения благодаря абстракции.
Микроархитектурные скрытые каналы используют эти переходы состояний аппаратного обеспечения, которые:
Цитата из исследования:
Микроархитектурные каналы эксплуатируют состояния аппаратного обеспечения, которые невидимы для архитектуры набора инструкций (ISA), чтобы обеспечить несанкционированный поток информации.
Разрыв между функциями аппаратного обеспечения (например, кэши, буферы, предсказатели ветвей) и абстрактным представлением, предлагаемым ISA, открывает возможности для создания скрытых каналов.
Программы, использующие одно и то же аппаратное обеспечение, могут влиять на время выполнения или поведение друг друга, даже при отсутствии прямых каналов связи.
Временные каналы являются самыми распространенными среди микроархитектурных скрытых каналов. Они работают следующим образом:
Типичные ресурсы, которые злоупотребляют этим механизмом:
Каналы часто возникают, когда два процесса конкурируют за ограниченный аппаратный ресурс (например, набор кэша, очередь контроллера памяти).
Микроархитектурные скрытые каналы используют изменения в сроках выполнения, возникающие из-за конкурирующего доступа к ограниченным аппаратным ресурсам.
Эта конкуренция вызывает измеримые различия во времени выполнения, которые могут кодировать скрытую информацию.
Кэш ЦПУ, разделяемый между несколькими ядрами/потоками, является сокровищницей для эксплуатации скрытых каналов.
Сценарий:
Prime+Probe: Использует время доступа для проверки, была ли строка кэша заменена.
Flush+Reload: Основан на общем доступе к памяти, более точный, чем Prime+Probe.
# Псевдокод: цикл Prime+Probe на Python (концептуально)
import time
CACHE_SET = 0xdeadbeef # Смоделированный адрес
def access_memory(addr):
# Симулирует доступ к строке кэша
pass
def prime():
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
def probe():
start = time.perf_counter_ns()
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
end = time.perf_counter_ns()
return end - start
# Отправитель заполняет, ждет, затем получатель пробует и измеряет время доступа
Хотя они и не являются чистыми скрытыми каналами (часто классифицируются как уязвимости на основе побочных каналов), эти атаки вызвали возобновленный интерес к микроархитектурным утечкам информации, показав как спекуляция и выполнение в неправильном порядке могут нарушать границы безопасности и утекать секреты через изменения микроархитектурного статуса.
Атаки, подобные Spectre: Злоупотребляют спекулятивным выполнением для вставки данных под контролем атакующего в микроархитектурные структуры, влияя на выполнение кода жертвы замечаемыми способами.
AutoCC обозначает Автоматическое Обнаружение Скрытых Каналов во Времени. Это систематический подход и инструмент, разработанный для автоматического нахождения скрытых временных каналов в микроархитектурных ресурсах ЦПУ.
Из Marcelo et al., MICRO 2023:
AutoCC:
Ключевая Научная Информация:
AutoCC обнаружил ранее не задокументированные каналы и слабые места в популярных ЦПУ, показывая настоятельную необходимость в автоматическом анализе и защите.
AutoCC использует смесь техник:
С AutoCC, как нападающие, так и защитники получают:
Предотвращение или смягчение скрытых каналов является сложной задачей из-за их происхождения на уровне аппаратного обеспечения. Тем не менее, некоторые высокоуровневые стратегии включают:
Операционные системы могут помочь, делая:
rdtsc или подобным инструкциям.Производители аппаратного обеспечения могут:
Linux предлагает счетчики мониторинга производительности через инструмент perf, который можно использовать для обнаружения подозрительной микроархитектурной активности или производственных аномалий, могущих свидетельствовать о наличии скрытых каналов.
perf list
# Запись промахов кэша и циклов для процесса с PID 1234
sudo perf stat -e cache-misses,cycles -p 1234
# Разбор вывода (пример вывода)
# 1,234,567 промахов кэша
# 23,456,789 циклов
Приложения, использующие rdtsc или /dev/tsc, могут указывать на тайминг-основанный атакующий код.
# Список процессов, использующих /dev/tsc или подобные
lsof | grep '/dev/tsc'
# Поиск бинарников, содержащих опкод rdtsc (0f 31)
grep -rl -E $'\x0f\x31' /usr/bin /usr/local/bin
# Альтернатива: Используйте strace для мониторинга системных вызовов, связанных со временем, в подозрительном процессе
strace -e trace=clock_gettime,gettimeofday -p <pid>
import subprocess
def monitor_perf(pid, duration=10):
cmd = [
'perf', 'stat', '-e', 'cache-misses,cycles',
'-p', str(pid), 'sleep', str(duration)
]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
return out.decode(), err.decode()
# Пример использования
out, err = monitor_perf(1234)
print("Вывод Perf:", out)
print("Ошибки Perf:", err)
Для более глубокой автоматизации можно разбирать вывод perf для поиска подозрительных изменений в уровнях промахов кэша, возможно указывающих на активную деятельность в кэш-основанных скрытых каналах.
import re
def parse_perf_output(perf_err):
cache_misses = re.search(r'([\d,]+)\s+cache-misses', perf_err)
cycles = re.search(r'([\d,]+)\s+cycles', perf_err)
return {
'cache_misses': int(cache_misses.group(1).replace(',', '')) if cache_misses else 0,
'cycles': int(cycles.group(1).replace(',', '')) if cycles else 0,
}
metrics = parse_perf_output(err)
print(f"Промахи кэша: {metrics['cache_misses']}, Циклы: {metrics['cycles']}")
Скрытые каналы должны быть включены в модели угроз для:
Вопросы для задавания:
Красные команды могут развертывать инструменты в стиле AutoCC для выявления жизнеспособных методов эксфильтрации и моделирования реальных атак.
Синие команды и судмедэксперты могут использовать счетчики производительности, журналы ОС и поведенческое профилирование для поиска аномалий, симптоматичных для активности скрытых каналов.
Микроархитектурные скрытые каналы представляют собой одну из самых коварных угроз в безопасности аппаратного обеспечения на сегодняшний день. Гораздо ниже уровня классических уязвимостей сети или приложений, они используют самые фундаментальные строительные блоки современного вычисления для обеспечения несанкционированного потока информации между изолированными пользователями и процессами.
AutoCC и подобные исследования продвигают эту область вперед, предлагая инструменты и методологии, необходимые для обнаружения и закрытия этих каналов — до того, как злоумышленники смогут их использовать. По мере того, как эволюционируют как процессоры, так и защитники, единственной константой остается то, что мы должны продолжать искать (и учиться на) каждом вновь появляющемся скрытом канале.
Интегрируя мониторинг, анализ и проактивное моделирование угроз в процессы безопасного проектирования, организации могут оставаться впереди этого скрытого, но мощного вектора угроз.
AutoCC: Automatic Discovery of Covert Channels in Time
Авторы: Marcelo Santos и др. MICRO 2023
Полный текст статьи (PDF)
Prevention of Microarchitectural Covert Channels on an Open-Source 64-bit RISC-V Processor
Авторы: Wistoff и др.
Предварительная печать arXiv
Полный текст (PDF)
Документация Linux perf
https://perf.wiki.kernel.org/index.php/Main_Page
Intel® 64 and IA-32 Architectures Optimization Reference Manual
https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Атаки Spectre и Meltdown
https://meltdownattack.com/
Интересуетесь более углубленными руководствами? Подпишитесь на наш бюллетень инсайтов по кибербезопасности!
Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.