FixVibe
Covered by FixVibehigh

JWT સુરક્ષા: અસુરક્ષિત ટોકન્સનું જોખમ અને દાવાની માન્યતા ખૂટે છે

JSON વેબ ટોકન્સ (JWTs) દાવાઓને સ્થાનાંતરિત કરવા માટે એક માનક પ્રદાન કરે છે, પરંતુ સુરક્ષા સખત માન્યતા પર આધાર રાખે છે. હસ્તાક્ષર, સમાપ્તિ સમય, અથવા ઉદ્દેશિત પ્રેક્ષકોને ચકાસવામાં નિષ્ફળતા હુમલાખોરોને પ્રમાણીકરણને બાયપાસ કરવા અથવા ટોકન્સને ફરીથી ચલાવવાની મંજૂરી આપે છે.

CWE-347CWE-287CWE-613

હુમલાખોરની અસર

અયોગ્ય JWT માન્યતા હુમલાખોરોને ફોર્જ કરીને અથવા સમાપ્ત થયેલા ટોકન્સ [S1] નો પુનઃઉપયોગ કરીને પ્રમાણીકરણ મિકેનિઝમ્સને બાયપાસ કરવાની મંજૂરી આપે છે. જો સર્વર માન્ય હસ્તાક્ષર વિના ટોકન્સ સ્વીકારે છે, તો હુમલાખોર વિશેષાધિકારો વધારવા અથવા કોઈપણ વપરાશકર્તા [S1] નો ઢોંગ કરવા પેલોડમાં ફેરફાર કરી શકે છે. વધુમાં, સમાપ્તિ (exp) દાવાને લાગુ કરવામાં નિષ્ફળ રહેવાથી હુમલાખોરને અનિશ્ચિત સમય માટે [S1] સાથે સમાધાન કરાયેલ ટોકનનો ઉપયોગ કરવાની મંજૂરી મળે છે.

મૂળ કારણ

JSON વેબ ટોકન (JWT) એ JSON-આધારિત માળખું છે જેનો ઉપયોગ એવા દાવાઓનું પ્રતિનિધિત્વ કરવા માટે થાય છે જે ડિજિટલી હસ્તાક્ષરિત અથવા અખંડિતતાથી સુરક્ષિત [S1] છે. સુરક્ષા નિષ્ફળતાઓ સામાન્ય રીતે બે પ્રાથમિક અમલીકરણ ગાબડાઓમાંથી ઉદ્ભવે છે:

  • અસુરક્ષિત JWTs ની સ્વીકૃતિ: જો કોઈ સેવા સહી ચકાસણીને સખત રીતે લાગુ કરતી નથી, તો તે "અસુરક્ષિત JWTs" પર પ્રક્રિયા કરી શકે છે જ્યાં સહી ગેરહાજર હોય અને અલ્ગોરિધમ "કોઈ નહીં" [S1] પર સેટ હોય. આ દૃશ્યમાં, સર્વર તેમની અખંડિતતા [S1] ચકાસ્યા વિના પેલોડમાંના દાવાઓ પર વિશ્વાસ કરે છે.
  • દાવાની માન્યતા ખૂટે છે: exp (સમાપ્તિ સમય) દાવો [S1] પ્રક્રિયા કરવા માટે JWT સ્વીકારવો જોઈએ નહીં તે પછીના સમયને ઓળખે છે. aud (પ્રેક્ષકો) દાવો ટોકન [S1] ના ઇચ્છિત પ્રાપ્તકર્તાઓને ઓળખે છે. જો આ ચકાસાયેલ ન હોય, તો સર્વર એવા ટોકન્સ સ્વીકારી શકે છે કે જેની સમયસીમા સમાપ્ત થઈ ગઈ છે અથવા અલગ એપ્લિકેશન [S1] માટે બનાવાયેલ છે.

કોંક્રિટ ફિક્સેસ

  • ક્રિપ્ટોગ્રાફિક હસ્તાક્ષરો લાગુ કરો: કોઈપણ JWT નકારવા માટે એપ્લિકેશનને ગોઠવો કે જે પૂર્વ-મંજૂર, મજબૂત હસ્તાક્ષર અલ્ગોરિધમનો (જેમ કે RS256) ઉપયોગ કરતું નથી.
  • સમાપ્તિને માન્ય કરો: વર્તમાન તારીખ અને સમય exp દાવા [S1] માં નિર્દિષ્ટ સમય પહેલાંના છે તેની ખાતરી કરવા માટે ફરજિયાત તપાસનો અમલ કરો.
  • પ્રેક્ષકોને ચકાસો: ખાતરી કરો કે aud દાવામાં સ્થાનિક સેવાને ઓળખતું મૂલ્ય છે; જો aud દાવામાં સેવાની ઓળખ ન થઈ હોય, તો ટોકન [S1] નકારી કાઢવો આવશ્યક છે.
  • રીપ્લે અટકાવો: દરેક ટોકન માટે અનન્ય ઓળખકર્તા સોંપવા માટે jti (JWT ID) ક્લેમનો ઉપયોગ કરો, સર્વરને ફરીથી ઉપયોગમાં લેવાયેલા ટોકન્સ [S1] ને ટ્રૅક અને નકારવા માટે પરવાનગી આપે છે.

તપાસ વ્યૂહરચના

JWT હેન્ડલિંગમાં નબળાઈઓને ટોકન માળખું અને સર્વર પ્રતિભાવ વર્તનનું વિશ્લેષણ કરીને ઓળખી શકાય છે:

  • હેડર નિરીક્ષણ: alg (એલ્ગોરિધમ) હેડરને "કોઈ નહીં" પર સેટ કરેલ નથી અને અપેક્ષિત ક્રિપ્ટોગ્રાફિક ધોરણો [S1] નો ઉપયોગ કરે છે તેની ખાતરી કરવા માટે તપાસી રહ્યું છે.
  • દાવાની ચકાસણી: JSON પેલોડ [S1] ની અંદર exp (સમાપ્તિ) અને aud (પ્રેક્ષકો) દાવાની હાજરી અને માન્યતાની પુષ્ટિ કરવી.
  • માન્યતા પરીક્ષણ: જો સર્વર exp દાવા અનુસાર સમાપ્ત થઈ ગયેલા ટોકન્સને યોગ્ય રીતે નકારે છે અથવા aud દાવા aud દ્વારા વ્યાખ્યાયિત કર્યા મુજબ અલગ પ્રેક્ષકો માટે બનાવાયેલ છે, તો પરીક્ષણ.