
CVE-2022-37177 - HireVue-Broken-Or-Risky-Cryptographic-Algorithm
Lorsque vous visitez le lien d'invitation à l'entretien fourni par HireVue, vous êtes redirigé vers une page de conditions générales où vous devez accepter les termes avant de commencer le processus d'entretien enregistré et chronométré. Cette réponse HTTP initiale contient les questions d'entretien qui seront posées, encodées à l'aide d'un chiffrement par rail fence (rail fence cipher). Ce dernier est facilement déchiffré, ce qui donne accès à toutes les questions avant même de commencer le processus. Si vous n'acceptez pas les conditions, l'entretien ne démarre pas, vous pouvez donc visiter le lien et le quitter autant de fois que vous le souhaitez jusqu'à accepter de commencer. Les clients de HireVue ne s'attendent pas à ce que les questions d'entretien soient connues avant le début de l'entretien, et une tentative de les dissimuler via un rail fence cipher existe mais constitue une forme de chiffrement faible.
Vous pouvez également collecter d'autres informations de cette réponse HTTP en texte clair, comme le nombre de questions, le temps maximum pour répondre à chaque question en secondes, le nombre de tentatives disponibles, le temps de préparation avant le début de l'enregistrement, etc.
Réponse initiale provenant de : hiring-org-subdomain.hirevue.com/interviews/interview-ID. Vous devrez localiser la section nommée « questions » qui contient les questions chiffrées au format JSON. Les questions se trouveront dans le champ « text ». Cela ressemblera à la partie de la réponse HTTP ci-dessous.
...
"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,
...
Pour déchiffrer la partie textuelle contenant la question, vous pouvez utiliser https://www.boxentriq.com/code-breaking/rail-fence-cipher. Vous devrez définir « Rails » sur 2 et « Offset » sur 0, puis coller le texte et le déchiffrer. Notez qu'il ne faut pas inclure la partie « "text": » au début ni la virgule à la fin (éléments du format JSON) et qu'il peut être nécessaire de supprimer quelques caractères à la fin, comme le guillemet fermant dans l'exemple ci-dessus.