FixVibe
Covered by FixVibehigh

JWT ආරක්ෂාව: අනාරක්ෂිත ටෝකන වල අවදානම් සහ නැතිවූ හිමිකම් වලංගු කිරීම

JSON Web Tokens (JWTs) හිමිකම් මාරු කිරීම සඳහා ප්‍රමිතියක් සපයයි, නමුත් ආරක්ෂාව දැඩි වලංගුකරණය මත රඳා පවතී. අත්සන්, කල් ඉකුත්වන වේලාවන් හෝ අපේක්ෂිත ප්‍රේක්ෂකයින් සත්‍යාපනය කිරීමට අපොහොසත් වීම ප්‍රහාරකයන්ට සත්‍යාපනය මඟ හැරීමට හෝ ටෝකන නැවත ධාවනය කිරීමට ඉඩ සලසයි.

CWE-347CWE-287CWE-613

ප්‍රහාරක බලපෑම

Improper JWT validation allows attackers to bypass authentication mechanisms by forging claims or reusing expired tokens [S1]. සේවාදායකයක් වලංගු අත්සනක් නොමැතිව ටෝකන පිළිගන්නේ නම්, ප්‍රහාරකයෙකුට වරප්‍රසාද තීව්‍ර කිරීමට හෝ ඕනෑම පරිශීලකයෙකු ලෙස පෙනී සිටීමට ගෙවීමේ බර වෙනස් කළ හැකිය [S1]. තවද, කල් ඉකුත් වීමේ (exp) හිමිකම් පෑම බලාත්මක කිරීමට අපොහොසත් වීමෙන් ප්‍රහාරකයෙකුට සම්මුතිගත ටෝකනයක් අසීමිත ලෙස [S1] භාවිතා කිරීමට ඉඩ සලසයි.

මූල හේතුව

JSON වෙබ් ටෝකනයක් (JWT) යනු ඩිජිටල් ලෙස අත්සන් කර ඇති හෝ අඛණ්ඩතාව ආරක්ෂා කර ඇති [S1] හිමිකම් නියෝජනය කිරීමට භාවිතා කරන JSON-පාදක ව්‍යුහයකි. ආරක්ෂක අසමත්වීම් සාමාන්‍යයෙන් පැන නගින්නේ ප්‍රාථමික ක්‍රියාත්මක කිරීමේ හිඩැස් දෙකකිනි:

  • අනාරක්ෂිත JWTs පිළිගැනීම: සේවාවක් අත්සන සත්‍යාපනය දැඩි ලෙස බලාත්මක නොකරන්නේ නම්, එය අත්සන නොමැති සහ ඇල්ගොරිතම "කිසිවක්" [S1] ලෙස සකසා ඇති "අනාරක්ෂිත JWT" ක්‍රියාවට නැංවිය හැක. මෙම අවස්ථාවෙහිදී, සේවාදායකයා ඔවුන්ගේ අඛණ්ඩතාව [S1] සත්‍යාපනය නොකර ගෙවීම් භාරයේ හිමිකම් විශ්වාස කරයි.
  • අතුරුදහන් වූ හිමිකම් වලංගුකරණය: exp (කල් ඉකුත් වීමේ කාලය) හිමිකම් පෑම JWT [S1] සැකසීම සඳහා පිළි නොගත යුතු හෝ ඉන් පසු කාලය හඳුනා ගනී. aud (ප්‍රේක්ෂක) හිමිකම් පෑම [S1] ටෝකනයේ අපේක්ෂිත ලබන්නන් හඳුනා ගනී. මේවා පරීක්ෂා නොකළහොත්, සේවාදායකය විසින් කල් ඉකුත් වූ හෝ වෙනත් යෙදුමක් සඳහා අදහස් කරන ලද ටෝකන පිළිගත හැකිය [S1].

කොන්ක්‍රීට් සවි කිරීම්

  • ක්‍රිප්ටෝග්‍රැෆික් අත්සන් බලාත්මක කරන්න: පෙර අනුමත, ශක්තිමත් අත්සන් කිරීමේ ඇල්ගොරිතමයක් (RS256 වැනි) භාවිතා නොකරන ඕනෑම JWT ප්‍රතික්ෂේප කිරීමට යෙදුම වින්‍යාස කරන්න.
  • කල් ඉකුත්වීම වලංගු කරන්න: වත්මන් දිනය සහ වේලාව exp හිමිකම් [S1] හි දක්වා ඇති කාලයට පෙර බව සහතික කිරීම සඳහා අනිවාර්ය චෙක්පතක් ක්‍රියාත්මක කරන්න.
  • ප්‍රේක්ෂකයින් සත්‍යාපනය කරන්න: aud හිමිකම් පෑමේ දේශීය සේවය හඳුනාගැනීමේ අගයක් ඇති බවට සහතික වන්න; aud හිමිකම් පෑමේ සේවාව හඳුනාගෙන නොමැති නම්, ටෝකනය [S1] ප්‍රතික්ෂේප කළ යුතුය.
  • නැවත ධාවනය වළක්වන්න: සෑම ටෝකනයකටම අනන්‍ය හඳුනාගැනීමක් පැවරීමට jti (JWT ID) හිමිකම් පෑම භාවිතා කරන්න, නැවත භාවිත කළ ටෝකන නිරීක්ෂණය කිරීමට සහ ප්‍රතික්ෂේප කිරීමට සේවාදායකයට ඉඩ සලසයි.

හඳුනාගැනීමේ උපාය මාර්ගය

ටෝකන් ව්‍යුහය සහ සේවාදායක ප්‍රතිචාර හැසිරීම විශ්ලේෂණය කිරීමෙන් JWT හැසිරවීමේ දුර්වලතා හඳුනාගත හැක:

  • ශීර්ෂ පරීක්ෂාව: alg (ඇල්ගොරිතම) ශීර්ෂකය "කිසිවක්" ලෙස සකසා නොමැති බව සහතික කිරීම සඳහා පරීක්ෂා කිරීම සහ අපේක්ෂිත ගුප්ත ලේඛන ප්‍රමිතීන් [S1] භාවිතා කරයි.
  • හිමිකම් සත්‍යාපනය: JSON ගෙවීමේ [S1] තුළ exp (කල් ඉකුත්වීම) සහ aud (ප්‍රේක්ෂකයින්) හි පැවැත්ම සහ වලංගුභාවය තහවුරු කිරීම.
  • වලංගු පරීක්ෂාව: exp හිමිකම් පෑම අනුව කල් ඉකුත් වූ හෝ aud හිමිකම් audFIXVIBETOKEN2[S1]FIXVIBETOKEN2 හි අර්ථ දක්වා ඇති පරිදි වෙනස් ප්‍රේක්ෂකයින් සඳහා අදහස් කරන ටෝකන සේවාදායකය නිවැරදිව ප්‍රතික්ෂේප කරයිද යන්න පරීක්ෂා කිරීම.