
CVE-2022-37177 - HireVue-Broken-Or-Risky-Cryptographic-Algorithm
Ao visitar o link de convite para entrevista que o HireVue fornece para uma entrevista, você é direcionado a uma página de termos onde concorda com os termos antes de iniciar o processo de entrevista gravada e cronometrada. Essa resposta HTTP inicial inclui as perguntas da entrevista que serão feitas durante a entrevista, codificadas usando uma cifra de trilhos (rail fence cipher). Isso é facilmente decifrado, fornecendo acesso a todas as perguntas da entrevista antes mesmo de iniciar o processo. Se você não concordar com os termos, a entrevista não começa, então você pode visitar o link e sair quantas vezes quiser até concordar em iniciar a entrevista. Os clientes do HireVue não esperam que as perguntas da entrevista sejam conhecidas antes do início da entrevista, e uma tentativa de ocultá-las usando uma cifra de trilhos existe, mas é uma forma fraca de criptografia.
Você também pode obter outras informações desta resposta HTTP em texto simples, como número de perguntas, tempo máximo para responder por pergunta em segundos, número de tentativas que você tem, tempo de preparação antes do início da gravação, etc.
Resposta inicial de: hiring-org-subdomain.hirevue.com/interviews/interview-ID. Você precisará localizar a seção chamada questions que contém as perguntas criptografadas em formato JSON. As perguntas estarão localizadas no campo text. Será parecido com a parte da resposta HTTP abaixo.
...
"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,
...
Para decifrar a parte de texto com a pergunta, você pode usar https://www.boxentriq.com/code-breaking/rail-fence-cipher. Você deve definir Rails para 2 e Offset para 0, então cole o texto e decifre. Observe que você não deve incluir a parte "text": no início nem a vírgula no final (partes do formato JSON) e pode ser necessário excluir alguns caracteres no final, como a aspa final no exemplo acima.