ID:
ROOT_SELINUXКатегория: Root и состояние системы Статус в RKNHardering 2.10.0: Активная проверка Роль в вердикте: Средняя
Эта страница описывает фактическую реализацию RKNHardering 2.10.0. Здесь отдельно указано, что можно сделать без root, что требует root, а также где способ только уменьшает один сигнал, но не скрывает VPN целиком.
C++ читает /sys/fs/selinux/enforce. Значение 0 выдаёт selinux|permissive с high confidence. Если файл вообще не открывается, выдаётся selinux|absent; Kotlin считает это low-confidence review.
enforce=0 либо невозможность открыть enforce-файл.
Permissive — сильная модификация безопасности. absent неоднозначен: путь может быть скрыт SELinux/namespace, отсутствовать в контейнере или быть недоступен обычному приложению.
Как строка влияет на отчёт: Строка не даёт самостоятельный окончательный вердикт, но выставляет needsReview=true и добавляет доказательство средней уверенности.
Проверка не анализирует политику целиком. Enforcing не означает stock policy; root-модуль может добавить разрешения. Отсутствие файла не равно permissive.
Важно оценивать эту строку вместе с соседними сигналами. Один чистый API не перекрывает Java Binder, libc, raw netlink/syscall, procfs/sysfs, локальные сокеты и серверные признаки одновременно.
Не устанавливайте прошивки, которые запускают SELinux permissive, если нужен чистый baseline. На production ROM оставьте enforcing. Если файл absent только для приложения, оцените соседние сигналы, а не ослабляйте policy.
Никогда не переводите SELinux в permissive ради VPNHide или другого модуля. Исправьте конкретные AVC-denial минимальным правилом либо откажитесь от несовместимого модуля. Подмена значения enforce без реального enforcing создаёт ложное чувство безопасности.
adb shell getenforce
adb shell cat /sys/fs/selinux/enforce 2>/dev/null
adb logcat -d | grep 'avc: denied' | tail -50
getenforce shell и чтение app UID могут различаться только по доступу, не по реальному режиме ядра.
После любого изменения сделайте force-stop RKNHardering и VPN-клиента, запустите их заново и повторите полный scan. Для Zygisk/Xposed/kernel-модулей обычно нужна перезагрузка. Сравнивайте не только эту строку, но и соседние сигналы: частичный hook часто создаёт несогласованность между API.
Сама проба выполняется с обычными правами приложения и не запрашивает root. ADB-команды ниже служат только для ориентира: adb shell работает под другим UID и может видеть больше или меньше, чем процесс приложения. Решающий тест — повторный запуск самой проверки после force-stop.
Permissive отключает принудительное применение SELinux и расширяет ущерб от компрометации. Неправильная sepolicy может вызвать bootloop.
Верните enforcing и удалите последнее широкое sepolicy-правило. Если устройство не загружается, восстановите boot image/модуль через safe mode.
Средняя. Проверено по двум веткам nativeDetectRoot(); confidence различается для permissive и absent.
Статус стороннего решения не переносится автоматически на это устройство. Заявление разработчика модуля — это исходная гипотеза; подтверждением служит повторяемый результат RKNHardering на конкретной версии Android, прошивки и ядра.
native_signs_probe.cpp — нативная реализация проб.NativeSignsChecker.kt — основной native/legacy verdict.NativeSignalId.kt — полный реестр ID.NativeSignalCatalog.kt — категория, slug и mapping строк.Связанные сигналы: root-property, root-system-rw, syscall-unavailable.