
CVE-2022-37177 - HireVue-Broken-Or-Risky-Cryptographic-Algorithm
При переходе по ссылке-приглашению на собеседование, которую HireVue предоставляет для интервью, вы попадаете на страницу с условиями, где вы соглашаетесь с ними перед началом записываемого и ограниченного по времени процесса собеседования. Этот первоначальный HTTP-ответ содержит вопросы интервью, которые будут заданы во время собеседования, закодированные с помощью шифра «железнодорожная изгородь» (rail fence cipher). Этот шифр легко расшифровывается, что даёт доступ ко всем вопросам интервью до фактического начала процесса. Если вы не соглашаетесь с условиями, то интервью не начинается, поэтому вы можете переходить по ссылке и уходить сколько угодно раз, пока не согласитесь начать интервью. Клиенты HireVue не ожидают, что вопросы интервью будут известны до начала собеседования; попытка скрыть их с помощью шифра «железнодорожная изгородь» существует, но это слабая форма шифрования.
Вы также можете получить из этого HTTP-ответа другую информацию в открытом виде, например количество вопросов, максимальное время ответа на вопрос в секундах, количество доступных попыток, время подготовки перед началом записи и т.д.
Первоначальный ответ от: hiring-org-subdomain.hirevue.com/interviews/interview-ID. Вам нужно найти раздел с именем questions, содержащий зашифрованные вопросы в формате JSON. Вопросы будут находиться в поле text. Это будет выглядеть как фрагмент HTTP-ответа ниже.
...
"questions": [
{
"id": 123456,
"type": "video",
"text": "hsi htteqetoswl oklk hnecytduigari ec ihr Z25Ti swa h usin illo iewe nrpe sn alfnecpe.(..)",
"maxDuration": 180,
"isRatable": true,
"minDuration": 10,
"prepTimeSeconds": 120,
"disableCopyPaste": false,
"secondsElapsed": 0,
"isAnswered": false,
"answer": null,
"attemptsAvailable": 3
},
{
"id": 654321,
"type": "video",
"text": "hsi htteqetoswl oklk hnecytduigari ec ihr digsm xr ethr o hsoe(..)Ti swa h usin illo iewe nrpe sn alfnecpe.Adn oeetatx eefrti n G19",
"maxDuration": 180,
"isRatable": true,
"minDuration": 10,
"prepTimeSeconds": 120,
"disableCopyPaste": false,
"secondsElapsed": 0,
"isAnswered": false,
...
Чтобы расшифровать текстовую часть с вопросом, вы можете использовать https://www.boxentriq.com/code-breaking/rail-fence-cipher. Вам нужно установить Rails (количество рельсов) в 2 и Offset (смещение) в 0, затем вставить текст и расшифровать. Обратите внимание, что не нужно включать часть "text": в начале или запятую в конце (элементы формата JSON), и, возможно, придётся удалить некоторые символы в конце, например закрывающую кавычку в примере выше.