Українська

Інструменти розробника · JWT декодер

Алг: Енон Атака і ключова плутанина: чому випрямлячі повинні пін-алгоритми

· Чому це питання

Опубліковано ToolAcre · Редакція журналу

свінгери безпека криптографія

Ненадійна етикетка алгоритму, що заблокована від зміни політики виверження
Головна 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`, вибираючи ключ перевірки від ненадійного заголовка або лікуючи відображенням довжини підпису в якості перевірки. Декод для перевірки, потім довести відторгнення та прийняття поведінки на реальному криптографічному кордоні з керованими тестами.