Інструменти розробника · JWT декодер
Алг: Енон Атака і ключова плутанина: чому випрямлячі повинні пін-алгоритми
· Чому це питання
Опубліковано ToolAcre · Редакція журналу
свінгери безпека криптографія

Якщо виверизатор не дає токену вибрати власний алгоритм, атакуючий може вибрати ні RSA для HMAC. Цей пост пояснює як атаки, так і правила, що перешкоджає їх.
Токен, який перевірив себе — як поле заголовка стала атакою
Алгоритм етикетки сидить всередині керованого токеном. Якщо виверифікатор лікує, що ярлик як дозвіл на вибір будь-якого режиму перевірки, токен починає впливати на правило, яке використовується для судді. ToolAcre виставляє етикетку точно так рецензентів, але ніколи не діє на його криптографічно.
Зручний напрямок - це зворотна: довірена конфігурація сервісу визначає прийнятні алгоритми сімей та пов'язані ключі, а потім вхідні заголовки повинні відповідати цій політиці. Панель декодів не може поставляти цю політику і не помилитися для захисту, просто тому що вона висвітлює підозрюване значення.
Репозиторійні прапори алг:он але не встановлює історію специфікації за невидимий JWTs
Впровадження угод `alg: none` як невизначена декларація і попереджає, що прийняття її буде прийняти довільний зміст. Також повідомляє про порожню третину сегмента окремо. Репозиторійні докази підтримують відхилення такого введення в автентифіковані робочі процеси; це не документ, чому ненадані JWTs були спочатку включені в специфікацію.
Це історичне слово, отже, виправда, а не придумане. Що стосується оперативної чіткості: послуга, що очікується підписаних повноважень, не повинна допускати токени, щоб відхилити перевірку підпису. ToolAcre сам виконує перевірку, тому його здатність відображати `none` виявлення тільки для перевірки.
Алг:он атака — демонтаж підпису і просить виверизатора прийняти порожній
Невизначена атака змінює заголовок для запиту `none`, зміни претензій при бажанні і не подає підпису байтів. Кожен сегмент ще може бути синтактичним, і перший дворазовий декод в полірований JSON. Допустимий верифікатор перетворить переваги атаки в автентифікаційний обхід.
У строгому вивержувачі немає гілки, які модернізують цей вхід для довіреного стану при підписаних токенах. ToolAcreПопередження допомагає визначити форму під час вилучення, але читати слово `none` не зупиняється від прийняття поганого рішення. Доброчиння належить до того, де вживає кримінал.
Ключове заплутування — представлення публічного ключа як публічного ключа HMAC секрет RS256 Токени перевірені як HS256
Ключова плутанність виникає, коли виверження дозволить родинам алгоритму з несумісними ключовими ролями і не вдається зв'язати кожен вибір на правильний тип ключа. Громадський RSA ключ перевірки не є HMAC секрет. Розгортання його байтів як одного після атаки змінює алгоритм етикетки згортається за призначенням громадськості/private сепарація.
Запобігання цьому класу помилки вимагає більшої кількості перевірок на фірмовий сегмент. Послуга повинна парувати очікуваний алгоритм, тип ключа, емітент і токен профілю через довірену конфігурацію. Декодер, який показує RS256 або HS256 не можна сказати, чи підтримує зворотний зв’язок.
Фіксація — стирання прийнятих алгоритмів у виверизаторі і ніколи не занурювати їх з токену
Прийняті алгоритми в конфігурації вихідного пристрою і зберігають список як вузькі, так як дозвіл на видачу. Відправити `none` для підписаних облікових потоків і відхилення невідповідностей, а не намагатися іншому алгоритму. Не зануривши пусконалагоджувача з вивершеного заголовка або з вимогою про оплату.
Ключовий погляд на такий же принцип. Р `kid` може вибрати серед вже перевірених кандидатів, але не створювати нове джерело довіри. Заголовок URL-адрес або вбудованих ключів не слідувати лише тому, що токени просить їх. Вивержувач самостійно вирішує свої джерела.
Зароблений приклад — читання заголовка в ToolAcre JWT декодер для плями алг:он, і чому плямистість це не так само, як охороняється
Створіть нешкідливий токен головки декларування `none` і залишити третій сегмент порожнім. ToolAcre декодування JSON, повідомляє про задекларований алгоритм, попереджає, що він не відзначає і відзначає відсутній підпис. Це саме поведінка, очікувана від інструмента перевірки.
Вправа не доведе, що API відхиляє токен. Підтвердіть, що окремо з контрольованим негативним тестом проти фактичного виводу та конфігурації. Якщо API приймає його, фіксація належить до того, що верифікаційний край; додаючи більш гучне попередження про декодер не захистити запити.
Що це не криється — багато бібліотечних фіксаторів; поради RFC 8725 Ваш блог бібліотеки
Бібліотечні API, типові та історичні виправлення, різні за допомогою продукту та версії. Цей модуль не встановлює алгоритми ім'я параметра в вашому стеці, і ця стаття навмисно не заявляє нічого. Читати далі про те, що ви маєте змогу перевірити поточні документи та змінити журнал, а потім пропустити випадки відхилення в своєму блоці.
Також перевірте неправильні типи ключів, невідомо `kid` значення, відсутність підписів і несподіваних профілів Token. Мета полягає в тому, щоб показати, що конфігурація перемагає з токеном пропозицій. Успішний декод належить ніде в цих твердженнях прийняття, оскільки синтаксисний успіх сумісний з кожним шкідливим прикладом.
Поруч: виверження вирішує, не токен — декодер допомагає бачити заголовок, але тільки засвідчена перевірка захищає вас
Виверження вирішує; токен не робить. ToolAcre може виявити заголовок, який говорить `none`, однофазний алгоритм або дивний ідентифікатор ключа. Ця видимість допомагає триванню, але тільки анульованою політикою алгоритму і правильно пов'язаними ключами запобігають приймання.
Ми рекомендуємо `none`, вибираючи ключ перевірки від ненадійного заголовка або лікуючи відображенням довжини підпису в якості перевірки. Декод для перевірки, потім довести відторгнення та прийняття поведінки на реальному криптографічному кордоні з керованими тестами.