FixVibe
Covered by FixVibehigh

JWT Diogelwch: Risgiau Tocynnau Heb eu Gwarantu a Dilysu Hawliadau Coll

Mae JSON Web Tokens (JWTs) yn darparu safon ar gyfer trosglwyddo hawliadau, ond mae diogelwch yn dibynnu ar ddilysu trylwyr. Mae methu â dilysu llofnodion, amseroedd dod i ben, neu gynulleidfaoedd arfaethedig yn caniatáu i ymosodwyr osgoi dilysu neu ailchwarae tocynnau.

CWE-347CWE-287CWE-613

Effaith Ymosodwr

Mae dilysiad amhriodol JWT yn caniatáu i ymosodwyr osgoi mecanweithiau dilysu trwy ffugio hawliadau neu ailddefnyddio tocynnau sydd wedi dod i ben [S1]. Os yw gweinydd yn derbyn tocynnau heb lofnod dilys, gall ymosodwr addasu'r llwyth tâl i gynyddu breintiau neu ddynwared unrhyw ddefnyddiwr [S1]. At hynny, mae methu â gorfodi'r hawliad dod i ben (exp) yn caniatáu i ymosodwr ddefnyddio tocyn cyfaddawd am gyfnod amhenodol [S1].

Achos Gwraidd

Mae Tocyn Gwe JSON (JWT) yn strwythur sy'n seiliedig ar JSON a ddefnyddir i gynrychioli hawliadau sydd wedi'u llofnodi'n ddigidol neu wedi'u diogelu gan gywirdeb [S1]. Mae methiannau diogelwch fel arfer yn deillio o ddau fwlch gweithredu sylfaenol:

  • Derbyn JWTs Anwarantedig: Os nad yw gwasanaeth yn gorfodi dilysu llofnod yn llym, gall brosesu "JWTs Ansicredig" lle nad yw'r llofnod a'r algorithm wedi'i osod i "dim" [S1]. Yn y senario hwn, mae'r gweinydd yn ymddiried yn yr hawliadau yn y llwyth tâl heb wirio eu cywirdeb [S1].
  • Dilysu Hawliad Coll: Mae'r hawliad exp (amser dod i ben) yn nodi'r amser y mae'n rhaid peidio â derbyn y JWT i'w brosesu neu wedi hynny. Mae hawliad aud (cynulleidfa) yn nodi derbynwyr arfaethedig y tocyn [S1]. Os na chaiff y rhain eu gwirio, gall y gweinydd dderbyn tocynnau sydd wedi dod i ben neu a fwriadwyd ar gyfer cymhwysiad gwahanol [S1].

Atgyweiriadau Concrit

  • Gorfodi Llofnodion Cryptograffig: Ffurfweddwch y rhaglen i wrthod unrhyw JWT nad yw'n defnyddio algorithm arwyddo cryf a gymeradwyir ymlaen llaw (fel RS256).
  • Dilysu Terfyniad: Gweithredu gwiriad gorfodol i sicrhau bod y dyddiad a'r amser cyfredol cyn yr amser a nodir yn yr hawliad exp [S1].
  • Gwirio Cynulleidfa: Sicrhau bod yr hawliad aud yn cynnwys gwerth sy'n nodi'r gwasanaeth lleol; os nad yw'r gwasanaeth wedi'i nodi yn yr hawliad aud, rhaid gwrthod y tocyn [S1].
  • Atal Ailchwarae: Defnyddiwch yr hawliad jti (JWT ID) i aseinio dynodwr unigryw i bob tocyn, gan ganiatáu i'r gweinydd olrhain a gwrthod tocynnau wedi'u hailddefnyddio [S1].

Strategaeth Ddarganfod

Gellir nodi gwendidau wrth drin JWT trwy ddadansoddi strwythur y tocyn ac ymddygiad ymateb y gweinydd:

  • Archwiliad Pennawd: Gwirio'r pennawd alg (algorithm) i sicrhau nad yw wedi'i osod i "dim" ac yn defnyddio safonau cryptograffig disgwyliedig [S1].
  • Dilysu Hawliad: Cadarnhau presenoldeb a dilysrwydd yr hawliadau exp (dod i ben) a aud (cynulleidfa) o fewn llwyth tâl JSON [S1].
  • Profi Dilysu: Profi a yw'r gweinydd yn gwrthod yn gywir docynnau sydd wedi dod i ben yn unol â'r honiad exp neu a fwriedir ar gyfer cynulleidfa wahanol fel y'i diffinnir gan yr hawliad aud [S1].