Чтение за границами буфера
Что такое Чтение за границами буфера?
Чтение за границами буфераОшибка безопасности памяти (CWE-125): программа читает данные до, после или иначе вне предполагаемого буфера, раскрывая содержимое соседней памяти.
Чтение за границами (OOB read) возникает, когда программа использует подконтрольный атакующему индекс, длину или указатель, чтобы прочитать байты за концом (или до начала) буфера. Раскрытые байты могут содержать криптографические ключи, токены сессий, указатели, помогающие обойти ASLR, и другие секреты процесса. Канонический пример — Heartbleed (CVE-2014-0160) в OpenSSL: TLS heartbeat возвращал до 64 КБ памяти, доверяя длине от атакующего. OOB-read относится к CWE-125 и часто комбинируется с примитивами записи для достижения выполнения кода. Меры защиты: API с проверкой границ, безопасные языки (Rust, современный C++), санитайзеры (ASan, KASAN), фаззинг и аппаратные теги (MTE).
● Примеры
- 01
Heartbleed (CVE-2014-0160): OpenSSL утекает до 64 КБ памяти через TLS heartbeat.
- 02
Парсер изображений читает за полем размера и возвращает читаемые атакующим пиксели в ответе API.
● Частые вопросы
Что такое Чтение за границами буфера?
Ошибка безопасности памяти (CWE-125): программа читает данные до, после или иначе вне предполагаемого буфера, раскрывая содержимое соседней памяти. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Чтение за границами буфера?
Ошибка безопасности памяти (CWE-125): программа читает данные до, после или иначе вне предполагаемого буфера, раскрывая содержимое соседней памяти.
Как работает Чтение за границами буфера?
Чтение за границами (OOB read) возникает, когда программа использует подконтрольный атакующему индекс, длину или указатель, чтобы прочитать байты за концом (или до начала) буфера. Раскрытые байты могут содержать криптографические ключи, токены сессий, указатели, помогающие обойти ASLR, и другие секреты процесса. Канонический пример — Heartbleed (CVE-2014-0160) в OpenSSL: TLS heartbeat возвращал до 64 КБ памяти, доверяя длине от атакующего. OOB-read относится к CWE-125 и часто комбинируется с примитивами записи для достижения выполнения кода. Меры защиты: API с проверкой границ, безопасные языки (Rust, современный C++), санитайзеры (ASan, KASAN), фаззинг и аппаратные теги (MTE).
Как защититься от Чтение за границами буфера?
Защита от Чтение за границами буфера обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Чтение за границами буфера?
Распространённые альтернативные названия: OOB read, CWE-125.
● Связанные термины
- vulnerabilities№ 131
Переполнение буфера
Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.
- attacks№ 544
Целочисленный underflow
Арифметический дефект (CWE-191): вычитание ниже нуля у беззнакового значения «перекручивается» в огромное число, что ведёт к избыточным аллокациям или выходу за буфер.
- vulnerabilities№ 667
Повреждение памяти
Обобщающий термин для уязвимостей, при которых программа пишет за пределы предполагаемой памяти, нарушая типовую безопасность, поток управления или целостность данных.
- vulnerabilities№ 1193
Использование после освобождения
Ошибка безопасности памяти, при которой программа продолжает использовать память после её освобождения, часто позволяя атакующему управлять состоянием объектов и перехватывать выполнение.