የአጥቂ ተጽዕኖ
ትክክል ያልሆነ JWT ማረጋገጫ አጥቂዎች የይገባኛል ጥያቄዎችን በመመስረት ወይም ጊዜ ያለፈባቸውን ቶከኖች እንደገና በመጠቀም የማረጋገጫ ዘዴዎችን እንዲያልፉ ያስችላቸዋል [S1]። አንድ አገልጋይ ያለ ትክክለኛ ፊርማ ማስመሰያዎችን የሚቀበል ከሆነ አጥቂው ልዩነቱን ከፍ ለማድረግ ወይም ማንኛውንም ተጠቃሚ ለማስመሰል ክፍያውን ማሻሻል ይችላል። በተጨማሪም የማብቂያ ጊዜውን (exp) የይገባኛል ጥያቄን አለመፈጸም አንድ አጥቂ የተጠለፈ ቶከን ላልተወሰነ ጊዜ [S1] እንዲጠቀም ያስችለዋል።
የስር መንስኤ
JSON Web Token (JWT) በዲጂታዊ የተፈረሙ ወይም ሙሉ በሙሉ የተጠበቀ [S1] የይገባኛል ጥያቄዎችን ለመወከል የሚያገለግል በJSON ላይ የተመሰረተ መዋቅር ነው። የደህንነት ውድቀቶች በተለምዶ ከሁለት ዋና የትግበራ ክፍተቶች ይመነጫሉ፡
- ደህንነታቸው ያልተጠበቀ JWTs መቀበል፡ አገልግሎቱ የፊርማ ማረጋገጫን በጥብቅ ካላስፈፀመ፣ ፊርማው በሌለበት እና አልጎሪዝም ወደ “ምንም” ወደ [S1] የተቀናበረበትን “ያልተጠበቁ JWTs” ሊያሄድ ይችላል። በዚህ ሁኔታ፣ አገልጋዩ ታማኝነታቸውን [S1] ሳያረጋግጡ የይገባኛል ጥያቄዎችን በክፍያው ላይ ያምናል።
- የጠፋ የይገባኛል ጥያቄ ማረጋገጫ፡ የ
exp(የማለቂያ ጊዜ) የይገባኛል ጥያቄ የJWTን ለማስኬድ ተቀባይነት የሌለውን ጊዜ ወይም ከዚያ በኋላ ይለያል። የaud(ተመልካቾች) የይገባኛል ጥያቄ የታሰቡትን የ [S1] ተቀባዮችን ይለያል። እነዚህ ካልተረጋገጡ አገልጋዩ ጊዜው ያለፈባቸው ወይም ለሌላ መተግበሪያ [S1] የታሰቡ ቶከኖችን ሊቀበል ይችላል።
ኮንክሪት ጥገናዎች
- የክሪፕቶግራፊክ ፊርማዎችን ያስፈጽም፡ ማንኛውንም JWT ውድቅ ለማድረግ አፕሊኬሽኑን ያዋቅሩት ቀድሞ የጸደቀ ጠንካራ የፊርማ አልጎሪዝም (እንደ RS256)።
- የማለቂያ ጊዜን ያረጋግጡ *: የአሁኑ ቀን እና ሰዓት በ
expየይገባኛል ጥያቄ [S1] ላይ ከተጠቀሰው ጊዜ በፊት መሆኑን ለማረጋገጥ የግዴታ ቼክ ተግባራዊ ያድርጉ። - ተመልካቾችን ያረጋግጡ *: የ
audየይገባኛል ጥያቄ የአካባቢ አገልግሎትን የሚለይ እሴት መያዙን ያረጋግጡ። አገልግሎቱ በaudየይገባኛል ጥያቄ ውስጥ ካልታወቀ፣ ማስመሰያው [S1] ውድቅ መደረግ አለበት። - ድጋሚ ማጫወትን ይከላከሉ *: ለእያንዳንዱ ማስመሰያ ልዩ መለያ ለመመደብ የ
jti(JWT መታወቂያ) የይገባኛል ጥያቄን ይጠቀሙ፣ ይህም አገልጋዩ በድጋሚ ጥቅም ላይ የዋሉ ቶከኖችን ለመከታተል እና ውድቅ ለማድረግ ያስችለዋል።
የማወቂያ ስልት
በJWT አያያዝ ላይ ያሉ ተጋላጭነቶች የማስመሰያ መዋቅር እና የአገልጋይ ምላሽ ባህሪን በመተንተን መለየት ይቻላል፡
- የራስጌ ፍተሻ*፡ የ
alg(algorithm) ራስጌ ወደ "ምንም" እንዳልተዋቀረ ለማረጋገጥ እና የሚጠበቁ ምስጠራ ደረጃዎችን [S1]ን በመፈተሽ ላይ። - የይገባኛል ጥያቄ ማረጋገጫ *፡ የ
exp(የማለቂያ ጊዜ) እናaud(ተመልካቾች) የይገባኛል ጥያቄዎች በJSON የመጫኛ ጭነት [S1] ውስጥ መኖር እና ትክክለኛነት ማረጋገጥ።
የማረጋገጫ ሙከራ፡ በexp የይገባኛል ጥያቄ መሰረት አገልጋዩ ጊዜው ያለፈባቸውን ቶከኖች በትክክል ውድቅ ካደረገ ወይም በaud የይገባኛል ጥያቄ aud በተገለጸው መሰረት ለተለያዩ ታዳሚዎች የታሰቡ ከሆነ መሞከር
