Description
### Уязвимость правила тестирования JUnit4 [Временная папка](https://junit.org/junit4/javadoc/4.13/org/junit/rules/TemporaryFolder.html ) содержит уязвимость к раскрытию локальной информации.Пример уязвимого кода:``javapublic static class HasTempFolder { @Rule public TemporaryFolder folder = new TemporaryFolder(); @Test public void testUsingTempFolder() выдает исключение IOException { folder.getRoot(); // Предыдущие права доступа к файлам: `drwxr-xr-x`; После исправления: `drwx------` Созданный файл= папка.Новый файл("myfile.txt "); // без изменений/нерелевантные права доступа к файлам File createdFolder= folder.NewFolder("вложенная папка"); // без изменений/нерелевантные права доступа к файлам // ... }}``### В Unix-подобных системах системный временный каталог является общим для всех пользователей этой системы. Из-за этого, когда файлы и каталоги записываются в этот каталог, они, по умолчанию, доступны для чтения другими пользователями в той же системе.Эта уязвимость ** не позволяет другим пользователям перезаписывать содержимое этих каталогов или файлов. Это чисто уязвимость, связанная с раскрытием информации.При анализе воздействия этой уязвимости необходимо задать следующие важные вопросы: 1. Записывают ли тесты JUnit конфиденциальную информацию, такую как ключи API или пароли, во временную папку? - Если да, то эта уязвимость затрагивает вас, но только в том случае, если вы также ответите "да" на вопрос 2. - Если нет, то эта уязвимость на вас не влияет.2. Выполняются ли когда-либо тесты JUnit в среде, где в операционной системе есть другие ненадежные пользователи. _Это может применяться в средах CI/CD, но обычно не означает "да" для персональных компьютеров разработчика._ - Если да, и вы ответили "да" на вопрос 1, то эта уязвимость влияет на вас. - Если нет, то эта уязвимость на вас не влияет.### Исправления Поскольку некоторые API файловой системы JDK были добавлены только в JDK 1.7, это исправление зависит от версии JDK, которую вы используете. - Пользователи Java 1.7 и более поздних версий: эта уязвимость исправлена в версии 4.13.1. - Пользователи Java 1.6 и более поздних версий: **исправление недоступно, вы должны использовать описанный ниже обходной путь.**### Обходные пути Если вы не можете выполнить исправление или зависаете при запуске на Java 1.6, укажите `java.системная переменная окружения io.tmpdir` в каталог, который принадлежит исключительно исполняющему пользователю, устранит эту уязвимость.### Ссылки- [CWE-200: Предоставление конфиденциальной информации неавторизованному субъекту](https://cwe.mitre.org/data/definitions/200.html )- Исправить фиксацию https://github.com/junit-team/junit4/commit/610155b8c22138329f0723eec22521627dbc52ae #### Похожие уязвимости - Google Guava - https://github.com/google/guava/issues/4011 - Муравей-апач - https://nvd.nist.gov/vuln/detail/CVE-2020-1945 - Компилятор JetBrains Kotlin - https://nvd.nist.gov/vuln/detail/CVE-2020-15824 ### Для получения дополнительной информации, если у вас есть какие-либо вопросы или комментарии по поводу этой рекомендации, пожалуйста, напишите о проблеме в [junit-team/junit4](https://github.com/junit-team/junit4/issues ).