Spec-Zone.ru › OpenJDK 17

Класс RuntimePermission

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

Имя целевого объекта — это имя разрешения во время выполнения (см. ниже). Конвенция именования следует соглашению об именовании иерархических свойств. Также звездочка может появляться в конце имени после точки или сама по себе, чтобы указать подстановочный символ. Например: «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, stop, suspend, resume, setDaemon, setPriority, setName и setUncaughtExceptionHandler Это позволяет злоумышленнику изменить поведение любого потока в системе.
stopThread Остановка потоков с помощью вызовов метода Thread stop Это позволяет коду остановить любой поток в системе, при условии, что ему уже предоставлено разрешение на доступ к этому потоку. Это представляет собой угрозу, потому что этот код может повредить систему, убивая существующие потоки.
modifyThreadGroup Модификация групп потоков, например, с помощью вызовов методов ThreadGroup destroy, getParent, resume, setDaemon, setMaxPriority, stop, и suspend Это позволяет злоумышленнику создавать группы потоков и устанавливать их приоритет выполнения.
getProtectionDomain Получение ProtectionDomain для класса Это позволяет коду получить информацию о политике для определенного источника кода. Хотя получение информации о политике не компрометирует безопасность системы, оно дает злоумышленникам дополнительную информацию, например, имена локальных файлов, чтобы лучше нацелить атаку.
getFileSystemAttributes Получение атрибутов файловой системы Это позволяет коду получить информацию о файловой системе, например, использование диска или доступное дисковое пространство для вызывающей стороны. Это потенциально опасно, потому что раскрывает информацию о конфигурации аппаратного обеспечения системы и некоторую информацию о привилегиях вызывающей стороны для записи файлов.
readFileDescriptor Чтение дескрипторов файлов Это позволило бы коду прочитать конкретный файл, связанный с дескриптором файла. Это опасно, если файл содержит конфиденциальные данные.
writeFileDescriptor Запись в дескрипторы файлов Это позволяет коду записывать в конкретный файл, связанный с дескриптором. Это опасно, так как может позволить вредоносному коду внедрить вирусы или, по крайней мере, заполнить весь диск.
loadLibrary.{имя библиотеки} Динамическая загрузка указанной библиотеки Опасно предоставлять апплету разрешение на загрузку библиотек нативного кода, так как архитектура безопасности Java не предназначена для этого и не предотвращает злонамеренного поведения на уровне нативного кода.
accessClassInPackage.{имя пакета} Доступ к указанному пакету через метод loadClass загрузчика классов, когда этот загрузчик классов вызывает метод checkPackageAccess SecurityManager Это дает коду доступ к классам в пакетах, к которым он обычно не имеет доступа. Злонамеренный код может использовать эти классы для содействия попытке компрометации безопасности в системе.
defineClassInPackage.{имя пакета} Определение классов в указанном пакете с помощью метода defineClass загрузчика классов, когда этот загрузчик классов вызывает метод checkPackageDefinition SecurityManager. Это предоставляет коду разрешение на определение класса в определенном пакете. Это опасно, потому что злонамеренный код с этим разрешением может определять вредоносные классы в надежных пакетах, например, java.security или java.lang.
defineClass Определить класс с помощью Lookup.defineClass. Это предоставляет коду с соответствующим привилегированным объектом Lookup разрешение на определение классов в том же пакете, что и класс поиска Lookup.
accessDeclaredMembers Доступ к объявленным членам класса Это предоставляет коду разрешение на запрос класса для его общедоступных, защищенных, унаследованных (пакетного доступа) и закрытых полей и/или методов. Хотя код будет иметь доступ к именам закрытых и защищенных полей и методов, он не будет иметь доступа к закрытым/защищенным данным полей и не сможет вызывать какие-либо закрытые методы. Тем не менее, вредоносный код может использовать эту информацию, чтобы лучше нацелить атаку. Кроме того, он может вызывать любые общедоступные методы и/или получать доступ к общедоступным полям в классе. Это может быть опасно, если код обычно не может вызывать эти методы и/или получать доступ к полям, потому что он не может преобразовать объект в класс/интерфейс с этими методами и полями.
queuePrintJob Инициация запроса печати Это может распечатать конфиденциальную информацию на принтере или просто потратить бумагу.
getStackTrace Получение стека вызовов другого потока. Это позволяет получить информацию о стеке вызовов другого потока. Это может позволить вредоносному коду отслеживать выполнение потоков и обнаруживать уязвимости в приложениях.
getStackWalkerWithClassReference Получить обработчик стека, который может извлекать кадры стека с ссылкой на класс. Это позволяет получать объекты Class из обработки стека вызовов. Это может позволить вредоносному коду получить доступ к объектам Class в стеке вызовов за пределами собственного контекста.
setDefaultUncaughtExceptionHandler Установка обработчика по умолчанию для использования при внезапном завершении потока из-за необработанного исключения Это позволяет злоумышленнику зарегистрировать вредоносный обработчик необработанных исключений, который может повлиять на завершение работы потока
preferences Представляет разрешение, необходимое для получения доступа к реализациям java.util.prefs.Preferences для пользователя или системного корня, что, в свою очередь, позволяет выполнять операции извлечения или обновления в постоянном хранилище Preferences. Это разрешение позволяет пользователю читать из или писать в хранилище предпочтений, если пользователь, выполняющий код, имеет достаточные привилегии ОС для чтения/записи в это хранилище. Фактическое хранилище может находиться в традиционном каталоге файловой системы или в реестре в зависимости от платформы ОС.
manageProcess Завершение нативного процесса и информация о процессах ProcessHandle. Позволяет коду идентифицировать и завершать процессы, которые он не создавал.
localeServiceProvider Это RuntimePermission должно быть предоставлено классам, которые наследуют и реализуют java.util.spi.LocaleServiceProvider. Разрешение проверяется при вызове конструктора абстрактного базового класса. Это разрешение обеспечивает доверие к классам, которые реализуют этот механизм предоставления, чувствительный к безопасности. См. java.util.spi.LocaleServiceProvider для получения дополнительной информации.
loggerFinder Это RuntimePermission необходимо предоставлять классам, которые являются подклассами или вызывают методы java.lang.System.LoggerFinder. Разрешение проверяется во время вызова конструктора базового класса, а также при вызове его публичных методов. Это разрешение обеспечивает доверие к классам, которые предоставляют логгеры системным классам. См. java.lang.System.LoggerFinder для получения дополнительной информации.
accessSystemModules Доступ к системным модулям в образе выполнения. Это предоставляет разрешение на доступ к ресурсам в системных модулях в образе выполнения.
Примечание по реализации:
Реализации могут определять дополнительные целевые имена, но должны использовать соглашения об именовании, такие как обозначение домена обратного имени, чтобы избежать конфликтов имён.
С:
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, 2021, 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/17/docs/api/java.base/java/lang/RuntimePermission.html

Spec-Zone.ru

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