Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
lfi — Главный репозиторий для LFI: Практичная, эффективная и безопасная программная изоляция | Kitploit
Инструменты/GitHubGitHub/lfi-project/lfi
Безопасность встроенных системСтатический анализДинамический анализ (песочница)Анализ КодаВиртуализация для безопасностиАппаратная БезопасностьАнализ Бинарных Файлов
GitHublfi-project/lfi

lfi

Главный репозиторий для LFI: Практичная, эффективная и безопасная программная изоляция

Репозиторий
116136 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Облегченная изоляция сбоев (LFI)

Добро пожаловать в главный репозиторий проекта Облегченной изоляции сбоев (LFI).

Что такое LFI?

LFI — это система для изолированного выполнения нативного кода. Как WebAssembly и Native Client, LFI изолирует изолируемый код в рамках процесса (т.е. в том же адресном пространстве, что и хост-приложение). В настоящее время мы поддерживаем цели Arm64 и x86-64, а также имеем экспериментальную поддержку RISC-V.

LFI спроектирован с нуля для изоляции существующего кода, такого как библиотеки C/C++ (включая ассемблерный код) и драйверы устройств.

LFI стремится к следующим целям:

  • Совместимость: LFI можно использовать для изоляции почти всего существующего кода C/C++/ассемблера без изменений, работает с существующими интерфейсами системных вызовов и т.д.
  • Производительность: LFI стремится к минимальным накладным расходам по сравнению с неизолированным кодом.
  • Безопасность: Компоненты среды выполнения и компилятора LFI стремятся быть простыми и проверяемыми, когда это возможно.
  • Удобство использования: Инструменты должны максимально упростить внедрение изоляции в существующий код.

Нецелями являются стабильный двоичный формат и независимость от платформы. Мы будем использовать любые архитектурно-зависимые аппаратные возможности и методы компиляции, которые сможем, для повышения производительности.

В настоящее время LFI накладывает около 7% (Arm64) или 8% (x86-64) накладных расходов по сравнению с нативным кодом при изоляции чтения и записи, и 1,5% (Arm64) или 6% (x86-64) при изоляции только записи (геометрическое среднее по SPEC 2017). Переключение контекста LFI (т.е. между изолированным кодом и хост-приложением) занимает всего десятки тактов, и LFI может поддерживать тысячи изолированных сред в одном адресном пространстве: ~64K (Arm64) или ~3K (x86-64), при этом каждая изолированная среда может иметь до 4 ГиБ памяти.

Репозитории

  • lfi-runtime: среда выполнения, отвечающая за загрузку программ LFI, обработку вызовов хоста и выполнение верификации.
  • lfi-verifier: верификатор LFI.
  • lfi-rewriter: переписчик LFI для GNU Assembler и инструмент пост-линковки для выполнения двоичных преобразований после линковки (необходим только на x86-64).
  • lfi-bind: инструмент для генерации трамплинов и процедур инициализации для запуска библиотек внутри изолированных сред LFI.
  • lfi-llvm-toolchain: скрипты для сборки цепочки инструментов компилятора LFI на основе LLVM, а также sysroot, включающий compiler-rt, musl, libc++ и mimalloc.
  • llvm-project: наш форк разработки проекта LLVM.
  • lfi-specification: исходники LaTeX для документа спецификации LFI.
  • lfi-bench: коллекция библиотек и тестов производительности для оценки производительности LFI.

Начало работы

Чтобы начать работу с LFI, вам понадобится компилятор LFI. Вы можете получить его на https://github.com/lfi-project/lfi-llvm-toolchain. Предварительно собранные компиляторы для aarch64 и x86-64 размещены в релизах: https://github.com/lfi-project/lfi/releases/latest. Скачайте пакет aarch64-lfi-clang.tar.gz или x86_64-lfi-clang.tar.gz в зависимости от вашей архитектуры (или aarch64-lfi-clang-host-x86_64.tar.gz, если вы хотите кросс-компилировать для aarch64 с x86-64).

После распаковки архива вы должны увидеть структуру каталогов, подобную этой:

root@kitploit:~
├── bin
│   ├── LLVM tools (clang, lld, ...)
├── include
├── lfi-bin
│   ├── lfi-postlink
│   ├── lfi-rewrite
│   ├── lfi-run
│   ├── lfi-verify
│   ├── ARCH-lfi-linux-musl-clang -> ../bin/clang
│   └── ARCH-lfi-linux-musl-clang++ -> ../bin/clang++
├── lfi-clang
│   ├── ARCH-lfi-linux-musl-clang -> ../bin/clang
│   └── ARCH-lfi-linux-musl-clang++ -> ../bin/clang++
├── lib
├── libexec
├── share
└── sysroot

Вам нужно добавить каталог lfi-bin в ваш PATH. Если у вас уже установлены инструменты LFI отдельно, рассмотрите возможность добавления в PATH только lfi-clang.

После получения компилятора вы сможете собрать простую программу на C или C++:

root@kitploit:~
#include <stdio.h>
int main() {
    printf("Hello from LFI\n");
    return 0;
}

Скомпилируйте и запустите с помощью lfi-run:

root@kitploit:~
$ aarch64-lfi-linux-musl-clang hello.c -O2 -o hello -static-pie
$ lfi-run -v ./hello
Hello from LFI

Вы можете использовать предварительно собранный инструмент lfi-run из предварительно собранного архива. Вы также можете легко собрать среду выполнения LFI из исходников:

root@kitploit:~
git clone https://github.com/lfi-project/lfi-runtime
cd lfi-runtime
meson setup build
cd build
ninja
./tools/lfi-run/lfi-run ...

Инструмент lfi-run в основном предназначен для тестирования производительности и отладки. По умолчанию он не запускает верификацию (передайте -v для включения) и по умолчанию предоставляет полный доступ к файловой системе. См. справку (lfi-run --help) для получения дополнительной информации.

Следующие шаги

После сборки и запуска вашей первой программы LFI вы, возможно, захотите изучить несколько других направлений. См. следующие руководства для некоторых предложений:

  • Настройка тестирования производительности с SPEC 2017 и lfi-bench: руководство.
  • Использование LFI для изоляции библиотек: руководство.
  • Узнайте больше о том, как работает LFI: руководство.
  • Использование liblfi для создания собственной среды выполнения: руководство

Исследовательский репозиторий

Ранее этот репозиторий находился по адресу zyedidia/lfi и содержал начальную реализацию LFI. Эти исходники можно найти в ветке lfi-research.

Скачать инструмент