Spec-Zone.ru › OpenJDK 21

Класс RuntimePermission

java.lang.Object
java.security.Permission
java.security.BasicPermission
java.lang.RuntimePermission
Все реализуемые интерфейсы:
Serializable, Guard
public final class RuntimePermission extends BasicPermission
Этот класс предназначен для разрешений во время выполнения. Разрешение во время выполнения содержит имя (также называемое «именем цели»), но не список действий; у вас есть разрешение с заданным именем или нет.

Имя цели — это имя разрешения во время выполнения (см. ниже). Соглашение об именовании следует соглашению об именовании иерархических свойств. Также, звёздочка может появляться в конце имени, после точки или сама по себе, чтобы указать совпадение по умолчанию. Например: «loadLibrary.*» и «*» означают совпадение по умолчанию, а «*loadLibrary» и «a*b» — нет.

В следующей таблице перечислены стандартные RuntimePermission имена целевых разрешений, и для каждого из них приводится описание того, что разрешение позволяет, и обсуждение рисков предоставления коду разрешения.

имя целевого разрешения, что позволяет целевое разрешение, и связанные с этим риски
Имя целевого разрешения Что разрешение позволяет Риски предоставления этого разрешения
createClassLoader Создание загрузчика классов Это крайне опасное разрешение для предоставления. Злоумышленное приложение, способное создать собственный загрузчик классов, может затем загрузить свои вредоносные классы в систему. Эти недавно загруженные классы могут быть размещены в любой области защиты загрузчиком классов, тем самым автоматически предоставляя классам разрешения на эту область.
getClassLoader Получение загрузчика классов (например, загрузчика классов вызывающего класса) Это предоставило бы злоумышленнику разрешение получить загрузчик классов для конкретного класса. Это опасно, потому что доступ к загрузчику классов класса позволяет злоумышленнику загружать другие классы, доступные этому загрузчику классов. В противном случае злоумышленник, как правило, не имел бы доступа к этим классам.
setContextClassLoader Установка контекстного загрузчика классов, используемого потоком Контекстный загрузчик классов используется системным кодом и расширениями, когда им необходимо найти ресурсы, которые могут отсутствовать в системном загрузчике классов. Предоставление разрешения setContextClassLoader позволит коду изменить контекстный загрузчик классов, используемый для конкретного потока, включая системные потоки.
enableContextClassLoaderOverride Реализация подкласса методов контекстного загрузчика классов потока Контекстный загрузчик классов используется системным кодом и расширениями, когда им необходимо найти ресурсы, которые могут отсутствовать в системном загрузчике классов. Предоставление разрешения enableContextClassLoaderOverride позволит подклассу Thread переопределять методы, используемые для получения или установки контекстного загрузчика классов для конкретного потока.
closeClassLoader Закрытие загрузчика классов Предоставление этого разрешения позволяет коду закрыть любой URLClassLoader, к которому у него есть ссылка.
setSecurityManager Установка менеджера безопасности (возможно, замена существующего) Менеджер безопасности — это класс, который позволяет приложениям реализовывать политику безопасности. Предоставление разрешения setSecurityManager позволит коду изменить менеджер безопасности, установив другой, возможно менее ограниченный менеджер безопасности, тем самым обойдя проверки, которые были бы выполнены исходным менеджером безопасности.
createSecurityManager Создание нового менеджера безопасности Это предоставляет коду доступ к защищенным, чувствительным методам, которые могут раскрыть информацию о других классах или стеке выполнения.
getenv.{имя переменной} Чтение значения указанной переменной среды Это позволит коду прочитать значение или определить существование конкретной переменной среды. Это опасно, если переменная содержит конфиденциальные данные.
exitVM.{код завершения} Остановка виртуальной машины Java с указанным кодом завершения Это позволяет злоумышленнику осуществить атаку отказа в обслуживании, автоматически заставив виртуальную машину остановиться. Примечание: разрешение «exitVM.*» автоматически предоставляется всему коду, загруженному из пути класса приложения, что позволяет приложениям завершать себя. Также разрешение «exitVM» эквивалентно разрешению «exitVM.*».
shutdownHooks Регистрация и отмена хуков завершения виртуальной машины Это позволяет злоумышленнику зарегистрировать вредоносный хук завершения, который мешает чистому завершению работы виртуальной машины.
setFactory Установка фабрики сокетов, используемой ServerSocket или Socket, или фабрики обработчиков потоков, используемой URL Это позволяет коду установить фактическую реализацию для сокета, серверного сокета, обработчика потоков или фабрики сокета RMI. Злоумышленник может установить неисправную реализацию, которая повредит поток данных.
setIO Установка System.out, System.in и System.err Это позволяет изменить значение стандартных системных потоков. Злоумышленник может изменить System.in для мониторинга и кражи пользовательского ввода или установить System.err в «null» OutputStream, что скрыло бы любые сообщения об ошибках, отправленные в System.err.
modifyThread Модификация потоков, например, через вызовы методов Thread interrupt, setDaemon, setPriority, setName и setUncaughtExceptionHandler Это позволяет злоумышленнику изменить поведение любого потока в системе.
modifyThreadGroup Модификация групп потоков, например, через вызовы методов ThreadGroup getParent, setDaemon, и setMaxPriority Это позволяет злоумышленнику создавать группы потоков и устанавливать их приоритет выполнения.
getProtectionDomain Получение ProtectionDomain для класса Это позволяет коду получить информацию о политике для определенного источника кода. Хотя получение информации о политике не компрометирует безопасность системы, оно предоставляет злоумышленникам дополнительную информацию, такую как имена локальных файлов, например, для более точного проведения атаки.
getFileSystemAttributes Получение атрибутов файловой системы Это позволяет коду получить информацию о файловой системе, такую как использование дискового пространства или доступное дисковое пространство для вызывающего кода. Это потенциально опасно, так как раскрывает информацию о конфигурации аппаратного обеспечения системы и некоторую информацию о привилегиях вызывающего кода на запись файлов.
readFileDescriptor Чтение дескрипторов файлов Это позволит коду прочитать конкретный файл, связанный с дескриптором файла. Это опасно, если файл содержит конфиденциальные данные.
writeFileDescriptor Запись в дескрипторы файлов Это позволяет коду записывать в конкретный файл, связанный с дескриптором. Это опасно, так как может позволить вредоносному коду внедрять вирусы или, как минимум, заполнять весь диск.
loadLibrary.{имя библиотеки} Динамическая загрузка указанной библиотеки Разрешение загрузке апплетом нативных библиотек опасно, так как архитектура безопасности Java не предназначена для и не предотвращает вредоносное поведение на уровне нативного кода.
accessClassInPackage.{имя пакета} Доступ к указанному пакету через метод loadClass загрузчика классов, когда этот загрузчик классов вызывает метод SecurityManager checkPackageAccess Это дает коду доступ к классам в пакетах, к которым он обычно не имеет доступа. Вредоносный код может использовать эти классы, чтобы помочь в попытке компрометации безопасности системы.
defineClassInPackage.{имя пакета} Определение классов в указанном пакете через метод defineClass загрузчика классов, когда этот загрузчик классов вызывает метод SecurityManager checkPackageDefinition Это предоставляет коду разрешение на определение класса в конкретном пакете. Это опасно, потому что вредоносный код с этим разрешением может определить вредоносные классы в доверенных пакетах, например, java.security или java.lang.
defineClass Определение класса с помощью Lookup.defineClass. Это предоставляет коду с соответствующим привилегированным объектом Lookup разрешение на определение классов в том же пакете, что и класс поиска объекта Lookup.
accessDeclaredMembers Доступ к объявленным членам класса Это предоставляет коду разрешение запросить класс на его публичные, защищенные, по умолчанию (пакетные) и частные поля и/или методы. Хотя код будет иметь доступ к именам частных и защищенных полей и методов, он не будет иметь доступа к данным частных/защищенных полей и не сможет вызывать любые частные методы. Тем не менее, вредоносный код может использовать эту информацию для более точного проведения атаки. Кроме того, он может вызывать любые публичные методы и/или получать доступ к публичным полям в классе. Это может быть опасно, если код обычно не сможет вызывать эти методы и/или получать доступ к полям, потому что он не может привести объект к классу/интерфейсу с этими методами и полями.
queuePrintJob Инициализация запроса печати Это может распечатать конфиденциальную информацию на принтере или просто потратить бумагу.
getStackTrace Получение стека вызовов другого потока Это позволяет получить информацию о стеке вызовов другого потока. Это может позволить вредоносному коду отслеживать выполнение потоков и обнаруживать уязвимости в приложениях.
getStackWalkerWithClassReference Получение обходчика стека, который может извлекать кадры стека с ссылкой на класс. Это позволяет получить объекты Class из обхода стека. Это может позволить вредоносному коду получать доступ к объектам Class в стеке за пределами собственного контекста.
setDefaultUncaughtExceptionHandler Установка обработчика по умолчанию для использования при внезапном завершении потока из-за неперехваченного исключения Это позволяет злоумышленнику зарегистрировать вредоносный обработчик неперехваченных исключений, который может помешать завершению работы потока
preferences Представляет разрешение, необходимое для получения доступа к реализациям java.util.prefs.Preferences к пользовательскому или системному корню, что в свою очередь позволяет выполнять операции получения или обновления в постоянном хранилище настроек. Это разрешение позволяет пользователю читать из или записывать в хранилище настроек, если пользователь, выполняющий код, имеет достаточные права ОС для чтения/записи в это хранилище. Фактическое хранилище может находиться в традиционном каталоге файловой системы или в реестре в зависимости от операционной системы платформы.
manageProcess Завершение нативных процессов и информация о процессах ProcessHandle. Позволяет коду идентифицировать и завершать процессы, которые он не создавал.
localeServiceProvider Это RuntimePermission должно быть предоставлено классам, которые являются подклассами и реализуют java.util.spi.LocaleServiceProvider. Разрешение проверяется при вызове конструктора базового класса. Это разрешение гарантирует доверие классам, которые реализуют эту механику чувствительного к безопасности поставщика. См. java.util.spi.LocaleServiceProvider для получения дополнительной информации.
loggerFinder Это RuntimePermission должно быть предоставлено классам, которые являются подклассами или вызывают методы java.lang.System.LoggerFinder. Разрешение проверяется при вызове конструктора базового класса, а также при вызове его публичных методов. Это разрешение гарантирует доверие классам, которые предоставляют логгеры системным классам. См. java.lang.System.LoggerFinder для получения дополнительной информации.
accessSystemModules Доступ к модулям системы в запущенной изображении. Это предоставляет разрешение на доступ к ресурсам в модулях системы в запущенной изображении.
inetAddressResolverProvider Это RuntimePermission требуется для классов, которые наследуют и реализуют java.net.spi.InetAddressResolverProvider. Разрешение проверяется во время вызова конструктора базового класса. Это разрешение гарантирует доверие к классам, которые предоставляют разрешители, используемые методами InetAddress для разрешения имен хостов и адресов. См. InetAddressResolverProvider для получения дополнительной информации.
Замечание по реализации:
Реализации могут определить дополнительные целевые имена, но должны использовать соглашения об именовании, такие как обозначение обратного доменного имени, чтобы избежать конфликтов имен.
С:
1.2
См. также:
  • BasicPermission
  • Permission
  • Permissions
  • PermissionCollection
  • SecurityManager
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
RuntimePermission(String name)
Создаёт новый RuntimePermission с указанным именем.
RuntimePermission(String name, String actions)
Создаёт новый объект RuntimePermission с указанным именем.

Краткое описание методов

Методы, объявленные в классе java.security.BasicPermission

equals, getActions, hashCode, implies, newPermissionCollection

Методы, объявленные в классе java.security.Permission

checkGuard, getName, toString

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

RuntimePermission

public RuntimePermission(String name)
Создаёт новый RuntimePermission с указанным именем. Имя - это символическое имя RuntimePermission, например, "exit", "setFactory" и т. д. Звёздочка может появляться в конце имени после точки или сама по себе, для обозначения подстановки.
Параметры:
name - имя RuntimePermission.
Исключения:
NullPointerException - если name null.
IllegalArgumentException - если name пустое.

RuntimePermission

public RuntimePermission(String name, String actions)
Создаёт новый объект RuntimePermission с указанным именем. Имя - это символическое имя RuntimePermission, а строка действий в настоящее время не используется и должна быть null.
Параметры:
name - имя RuntimePermission.
actions - должно быть null.
Исключения:
NullPointerException - если name null.
IllegalArgumentException - если name пустое.

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/RuntimePermission.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API