Security Research
CVE-2023-46943 JWT Token Verification Bypass: from missing signature checks to identity spoofing
Thinking
2024-05-01
5 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Web Security
JWT libraries do not enforce signature checks by default — developers have to opt in. An attacker changes alg to none or swaps the key to bypass authentication directly.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd89376c1a1ff2371ad5bb4a1f33d82a129f8f3e568fbff465e4c6a7c7422d7b8b72c9bcbd128519136753f754df1643d96fcf1968cccc44a9675d42db5be3dfb1894a2ba08dafe0e373fccd7137426c521434ae5aa25431af099be6e09825ce0e3ea235b4105b2e645a743b84127218d22441066e822219e5d5f86336e0b3f40a1285699fabd67af57d9e95ddfee170bbd6c3c1184fdcb664a4476e01993f36b69442d35d08e978117f1047751334b2b8cacbe86ff596cc9ac76ac6b8163a4d905dae896ad13d5496cb57aaefa301ad5e9d6c6642d1fc679c0478eccaea662d92d623f6875ee56be932cc70ffef4c2d9867af2da2b6aeceb6fff5e694f0d9e8540f4c5bd38de6174aa3e6c244c2e13b2f6684dc2eb876eed7e56a5f7c68b7ef3718c3d2df4b8d3005aaab9703460177c89d27c4f4e63d27abfd4c950d7d6decd0d63e5a04ffb2ab9d3205653d646cd39fe6110bf86bcea6eb496157647d25b6c8b5f15e9266e2127d8bd75d5fc4316995476534d3a8551eebccef2f540d4ee79fcfd7a0d8a4038b729247345ccf03eaac273c32ffe98ab8f1dc59696b8c3b599085a879bf5f8ae65aca4cc4f7d2598fd34a637e168496f4de8a560528955ae931c5a145d7d1199749ad41c9d7f7468d787a1be9b5e2ae78edfabf334f22a17a44854a1a61bb160f0f75918b43be21302b7a01517b2f6a1eb391c455c3ec5633b06937fb6ec0bcb7f45ff5ca36c47bb45ff59bf4fe41b99fa6d54dfca0017808469e77781518cb3439048cb7139adb20fd251ba73ebac7b35b6b7e79358d2d0e091230eed2f2997e49eaabc2f9326b705a5592a7241012f24b23c29142554eb77aafe3a1a0248e32cb9ab1eab243a631f80673fc3744cd799301dac199c51610701c65a74fa397c86cc4819402e19252390c6bda5d482277e081cf0c06364d0a8a030c3b121a281fef99f1895a741610d16a61d0d89946c3c07b35cb9b9313c2b5fb6a4cfb0c56a4682c3dbf0409e5419b85bfeebef25215d5f6c6226fd6cf6336c99488152c2180722d47d2ace8f3606d6e8c2c852691f1a7e82cc3a42035058423134cdef15b1ceec3984d6d2fad9135323139a9ea01c08b63bd545b74655cbc1f8db4020193a680d5095a93e90321392a0be09e9c7232dbf6930b784440b3d619403a4e3e3b692e250b407b2839a528ccd17978c5d4c54ca41fac5938930c2c955a94f582ebfc140f31d5f5a5028692785a52922c0166a75b84203631535a6f63d7f91001c07cea6073250e1a9ff1fc18511e904e80143af557bd7acbdd9acdf2613e149d35dde5827a245f38e6f5d2187150ee2233af00d356923201b70b2a0036f5815121f39d32e18fd5f785f5c85afe2d04e81888cbe42b5ae4af1c31507e732f9fc79d6062c50118ebaa645eb1bcee52a473f82421a6f01f209b32627c95281c27a5413e89932f3c94277c076311f088311dc525ce4e21fc933d1bf0fc38da09a69cb8a8299d8ae33d1d1e6d51879d3bf3f6822e096c7d1318815484980577d86c7445fef4bc38de98ae3f9cb17ea9f053bd35ece94c8353c31c40878bf5199ae5e41d40d19c34b6faa8a3941cfa4c758fee3fb22fff96d097014be7055daead7054883eaf289bce40ec12bf4fe80c5f42c9cb123a112f5e2272b5652ea204f7739a34dbe1237e34f39dc1b9526814367ab3594975a6c56b98ed7440e793efb5b7da9b9fc0c51fd1d9e2600fe7f93fd1fb3f5e3cc428c1dd1a00e2098a453ad03fceed7cd22018525ec2e6d912b7634b5e1c665561d6a80c2830fe4e371a7175e9fbb55d6079372cc61e907c11b10ca2b00b10501ae26fd99cc857818f3b25ce96d7983417bb2d8c92d199e9ab4b1e8f6d8acb6054b8859c7ebc071270a5167d5fde03ea3d9c056075853024b79edae054c5d2450714e5e0d4aca38336922d8b20479ed05735cd066cf40ac1a3d13f330c37a55d275a126736cfe2997c4e476f517c0b7e89c81943641a94cfd2268c3939473b850c78ff913569ed6d276345d817124d04d2e1fbe0770d0d94030a82af32221d4f0315e0630b30cf06da15bbf3179334430c8a8254942e68ffa6ce96ff07aaf6d3a748fc1575ae05202b9e043477a7595bc6d3f3cc1432d2aa8eefa3aa8608bc7f88c2cee5f56ece23e18aa7b218e6307373d35b209288451a2a5a53c954ff6254e1d21138e4decee7484c390f9255b3c06e6a7a293360cfe52039e3e57cfbeb2dc76f28587758aa0cafba6ba311dc7debb0f222a0368af36c4a7b790bce863013888fcd3e9ecde02f30fca7cdf6234838bc41e9c997c90cb9aeb3199179c9dda1ae3b5374be934c17543c4383fcd5fc96238e8f649b3e9c8f8442dd34a87640149532f89177714a96c7c771eb08147836619965b774650193301e100be4528a676805facffc1ba64e033ce14a230228a5b0117dda2d3c956d0b68c1ae828ee30857dc578d0bff71d6fdc255fd199b61412719ba57edd3ea6d80b90e7ec4cfba3658e3e422c3cdccca41061def02981776dc7c4d0864780dac91a69638a7f82f23d9ba6294875548e2d42190484fa5b7a9534cc7d593f4f9af1895213808275b4ffed624fa168772ee0f48e468ade266cf97808ea4457ca2c70d2085f24e61757ed272342b61a0e2042d64e8a782b69a270bc911998b17b30bc112f50a473f1403e44a3fb6ac53c0f91c13c2a2a510a5fd840cb3b245502b2df34d51a747de01bf8098c6f0f9938cf5b88005069867625b956020fb1a354e38b2e1607655900903f16db58310eb455bcf785f567fe78b6828c8374e6aa91eb5e2aa44d7cc1a01c76148e4d4a820df5ed61dcd6eb31675d64646c7ff43abf4f55729778f2a6f837e478eda3cd1a96191af67222183a28c327313ee00e1b62b50d5990e1336585812a5aac7f3506510468e4b7ab3738c41d7c08943d0eb8f396de0e460c5102c4b5d7557445b5e1ef9fa964dbcc15bd48260cb33f151ba1fbfc276f2a6d1c5637035115ef14d7b9f37428d1f36d9866d4b9e64c89213f030806d578bbe270586c28d25758c50cc712d5cc23f573e7c37a6cbd23e389dcbfd394701e75153391e36e29ab86ce3bd8ff4c1511a99940f6c2c7d4f94bdd7022d82b9ada2340d340d1b94c0c7b255243109ed487817885a76c9a8f83413d2eb4cf316f6573d0050fb22a46c5f315d82ba6220822c2375289844509094d259d270a63ea7eaa67051894c5650b0804e01ffc69bd96f67051cd54581d2697598ac11ed560352fa183a3a283a583a0a6e4dca6234b0f13e03bbe8d8c5a4d2a1fd551e663d6a6faab2e6513114fd6bf7fcbd32d32f677ecf6751072c7fb8c2b689ce57ca1fe5b0e448fa86d57c87710deb89470784dbc87d31fc10b6d3a2814cb4396ec113ce6ae236bb2834d53433d3d8e2e73a3b4eac32c0cec50e9d09e6ab81613a5a6cf2190aba46b542389187328e7e7a662dbde2063244d4d2a2c265515e40bdddc507a9acc8fab98e63f258a6cdd7782ad851a19155a2d38bcff30af1f408d8e9685fc3af9ba3efa4962954822574ae6defb2f8112741e2ab2c4ef3adcd8d623468b7feef9565452f37c57d60407e65fe7bd30cd7cbdec81b235671fce9763b3c7be0085e605e329637e7f9b6dfad8ff46e9740e0bc9115351f8ea88b918d0b87a1b6b9f76dc623b7a5c365a5f86e0eee3f8c7942ecf032cb6e81596f2d47323e8d9dc23062d726233d5cd5d53c1bbece342989c48d75ba3592cbe3b42b8962d150fba0478ecc691b313d6d7319ea069107a57a144ee128dfcd928a8fcd3720d302c73b259becc317e5511bbe91bb2d6197fa1c634f88002635e86a557b556a8479cd97d21ecfcf80529364fa9a4d13ec30d059c1e9a90e7982d92b09dcdb1d2e618c84ea0187d08db08ab8a81c573bf4bfea3cc85c92b3c5c216b88cf9aed9930d9aa57bdbd6ed0f7480adb2a062ffe985eec38254dc8ad54970cd46e5ef04c0a125820a8902b0fc30575677d5e0cce353030ed4aa936f7fd4766eb6091b4dea5c919e9ad1270b0638275c82cdd172ea93b44e11d44837089e590858cc0bedac2672092e4547603875f833064c3ada19f31947d67a73adf090dd1e49eaa1c0be2c839743a8221bdb4dfc34095dd63974b071a914636cbb1b8ad66ef8b61e9869307575743d301e6853a58ffe10cf89efc9c3ab22a9c5c20df19b8b52082dcc89ab2814da9f36d77ca765808b5c06822bf18c38ffd1829198e2e95bc8023b9dee4cce0df9d9c2c810a6323eb4e2d2e5176695ba0ef30cf2032e29a366f860d5d6c29d5e79becfd5532addffa9a7606eb8f2a504c7a7ffcddc2bdda12754ba4c16878a23786799564426866dc6edc6d5f6e8dd0240885043bc04ef94dd985540271c4f29ff784a88e869f3c676df1ed20cb0abb895f66de7d1e2af9ede8aa20cc981f79f9161fd7e7594f6f8aea8c99f2fab6ce8c116e6e33d266736fdf2b11a5f83105d9c9cdc899e40c258e5e4cd4b99071713e33454cccabccb1f0a121cbc320fff0ccef797623be8969cf962ece8f50a399df054329d70729c0baa8e669acefc45c8f23f7e213b9f5c763b11e6d4e64281be18d5baf65a78f5c15965fe66e2d8c60df1b423acde73aab6c82fcca4d8c803039a224a22411900fe86cf15f0a7fbc7cfb3c59e3b26be8e52bd42731fa0ce45f8f21b96bb59e3460265b882543c720e3265742fb4e29a637ae03e2eaf55431a1a299ff3d969dea55efd185b7cccb057fd8541b23fd30d1e7d0bb49ca6dee60314a60b8efa15e1163bc08d9390b2bd55db993f86cd483d4a14171ffd95eee152787967778ec26e1c1a8eb6b8c7b468c82a13d2e9b539d4f88865eec1248144294b0683318d381eec529d48e34d6ff638efeeadcdf56505f246f703570ac0d86bb90a5cd3544f8ff717340ed63b8782db4182c25406daee8d7a9940f73527bde0632a5d79920cce7f7d082d85a02b7e9fa9f1a949129a1789f553a425b3c267ffce02ce8c9afd3012ec154ad1d92eaf7cf3a880f284737c99a220bfe1014d972d8fe8df2914cd887d6b2293ed31f0df2c45034774446e3e7d3e0aafc5d185f732f3fa0a09a1505e686f8281a25d9acc7fbbc97662a5b232b590f906129d870467459eb3aaf1c28cb79c3cbeabf3023958e231bf88d1862e6597708e9b3fc74156cc4cbd61bf06302bc87cfb23ef98ccebf830999da4d1b53370fea96087f9c4b5a9e097aedad6fb14daf54ed64771cfe21d093e216dfc59ea854c852f2e720f0e682c4f8a2b7dabb56951190125c68081953bab3a4321b4d2490bd24bd2f6ce3daa4a2c33a4b12b63a2d4f8683f1cd5e90c4087f6781644aaab07284ef9a9db7176311616784f427e05e7f7b9b6833f6ac5050367af6c20477da1b0241558bb253e3f7c9bb6d7b31ac81b12d63347abcc163b3f31ecd0d179a09cd59be3e0956ef32724ff7865eb35cbdd87505e5ca198007cbc1d8cbfbd15118f5364f68de4d6080e7eefda576d8620633b17e5aa15e6879641cb2d94e2704d4bb0287b4e98d76f77e26cdec470346c350ff41186df413e4f43de8a3bdbc43ffdd543d86c301b5be0c40f0bccc4cc0778fdadfc223c62759dc42ec7249e75bb5bbb728cf15209562e022e5344c17bd035d5a04e748fd9b0b6cd31c41df1293223097ecbe037fb7ef83d458b0a747b7b4357b96de9c5bcd5acb1abad2bb68322417cd34b5ff346327010bf79f389d78f8040643512d5920275398329754f66ff3bfd0bce8852bc58baf9649653c90e7182392c6b1a2200ac1085d55ce0cdf8f4c8cd622150ea286bfc41d077b86dd7a3cf13804d0f40a1c4f4894948d92922fb99c4566f0fdb9a68a2ca69c7a1ccd02ed7a473c50027be8034719fffe0f740fc111b2694b8d86ab80cec5453dbe8d4cc711afff7e7d44475665656a5a869fcc3c36f00f46a9bcc8814af41f3c9b2d42c99125b70286b85e34b951c15ef3ed1d757baf268db85f6bad5b893f621f749d9efbfe5c54ed014141d04785d7d9ad1d28c51df2886f54e2952f1e4ad213b28e5d76fb414eadfcfeec3e417c3fa448f6158f8e418733a0e51d07c9f895def5ab0137f439dfa031a3496fac528cd8acac710bc2e1ca0e7470795fe36dbe052795743d9d000afcb870ebf87292b05b991b7da9f0a625f826c59062c9a44300212f733bccaceed20487792bca8c8b266990cd9804d48fccb0ab7f1a9d851be473dac5b6ad1da6285e26a004193af653d0ff1c9207b4151d602e9636cb331cd1573f775087797049068aa4231b6f826a500b26e991b3f471b18f8fdabc8706d766e8696aa4ebd5bdfafe44d33724acf61a522878921d7aab5823086bd38a452a72df1c5d8ee23d1cdc80ede96571ad4836bfdda152daff9eafcbeeb02aa89021fd8767f46428df6f6b7897cd8c1514e31b84118c2c9f5189bc0936e836084bcc981c7b030dfd42789a683615960b9e6bca8b4eea46c2b67f0188ca3a78127f2701145238b411dd7fb3f56dab578f268d576e48783407f74291ef77c11a93e7b3429aaa45688c64c1ec11eb8c2a12b8cda4d484eb57e770928948d82852650d4e02db62b423e8808524854e7051ef498fe4fe438a3fa4ce3b10f1cb935d2696487a00c6049cef62d9c865b1053260b13ede32294480254c86b7d8d2b48824b37b676e3d2ef4585c59531d8f3f12ec29f662afbbec7e16ea70a99ba48eb524b4dda2e39fbe500f9ad3fcaf4874a2075bfa3caf676c679c58d5a51b559b9629d8d367e4ec252c77ed52232781ac8f03232417d1fbea093b3c17d155a1a78dc6605ab0f259dad8f4300423d9e38e17a0b269cb39819a183cd675bde715ad003d112415583d90ee3aeced1f66e7e7d30e0b0f62b757bb137934da30c7117c004715e442542daa2c1ecfef11d2fea3057b148f473d9a8dad6583806c8273da5938e794f373832770b05783c727c0fc487298552f88740a79e5f4029db6f487b454fe28268a5ac29f5fe6075780057b978db785752805abb625687af4b95f079c6601fd49c05d642891b141bddf70a14e83b121235e3137f9419c573d812b3e6b8454468231ecdcb92fed7b99502de90c68e88ca6cc96420974fe9010e3282149afa7ae073e69790462fca4a2b31891aa4eee65ee2b1141442971aee356a7a857dfeaa68d488646847a4f28e32e015c1fdbbf35337c616b87f9db907a17a8a0a17da79bc8a1b0a232b9e9499ab12c7074aa95edd660dd7cb7288628b9ffa4a4edae9f0f8d3bf700c13e7cec7752009f7d66e6e850bb5ac23fab37cbeaf37ea7a92af85eb45368e7d5cfb89fca705d682480ddc95df769313ddc9b2af9f36435df6253fd6c2392e1ff4b6d7c3deb655da25ac4b0d6129d9aa8ec239700fcef2376c89880bd873759a3753df5d44609f07da232ac61bea8b6eed6be5310c5d3a980f6f40e8872d8a76fdd4c8f1033c08fbaaae3668babd6ee3baeccb28cf78052fa89eab011b454577996d1c19c1889914968baf14fb8622de7d6aa213e583c4efabedca0509fd54596174b61e10f2e17730c58f33507d734f90e75948d045a920f1c9832b93ca3fd4e2693e5b214122f78e693893a5a981159887076968207dab8a6bfbb92ff579891de5b67ae1a7e89c80585f4fba4514cb5a9cd7fabb3257ac317e08e5183efb824ca8e8ab14aaf2677dea2267242323bbe3f9496a533f704863086dc86717ada9478aab8f2e836505de1dc4cfc66047a2bd4b7053c0cbea86bcfe3ea83fa1acfbc4022b447a34a6c091248cc0eb58b1da3bc1a79fe75e1d5c924771280fe9ace59e93862026af1fbeccaf49f550fbeeab22720ca87b24bb1da325cf67d62d6382ebb46c8d0a441218981688b02c2e7c99dd8314eae8348d2908bc0abb2f9e8d4d6c1725e55cb02ed230e65584cf86c2fefcda647d3abdbaab6cc6aea0b72c671d20b1b3fb5eed10f4812f8ec8849eb0839d8ebb7fb44c1466b5cb92e113237b088c30f6acb4fbd7b01088591b39fa5550ca54eedc297df81834caa49d41f63ad5b4dbdd47950d4d3c082bf055a3e700c20838eae4e3139017feb14fd173bdfd4e9586e58c8cacead6381c53c0c381abad189a3f22a22a72c6b4a8ed8b29ae2baf25f6e8c7a129ad6d94d9bfeb2de0bffc05daa10aebbf204d0d1c4ec0725ad08cd022e8e26c52bc973ae853ba4303a51f97162676b7e1a6599a1714457b26f30781a10117b15afec9eeb67cce89a3ccb381118d5d48d6629f0d25d007f90689e97578f1c49506cd061e91595009dea5241b8fcbfbda37f93d5c6ea2df0824eda76e9210a7fba1e3e9459f8c07e047db3dd0a052dd36527d4cc43b1ce90d31adce03d0d5fc50f2ae6c82899dd82217baa6f6dfbd64914e9965faeebd183806ec0b0960981337bc2001ea6c28e10b05a454a985a720faf7b6a43e598eb25c891460c459648f4f893a00614e109685d043e74c0e5e3b4d3714fa91fce4b83c0dd9e6333923a8f54b23976aba78681692d38260d526ea4272a985c71ad726a86473bf939ec8720c18edade8394cfe98f0a05f5e51611fe35018bf27543629cbb14c02402ce79db27ced385459467deba0c66d7476f40b0da72aa40ec23f7aecc8d295af34df5c331af6a453f971695a15a9fd69dab0e6453afaf193efad2f302b280d86d2ff16673cabaae780bca67fc307b782a0f2a8f175b642f61c2a497da1b8d1835ff853e5b98d88bd7be47d1e8bbe7c28679d78acd63e24a5e7d58a09c4e58bafd2dc02f0dd1e69369f78d7a13a1b6a2f7831cfeb1b1994f94eeb4b9ba3573c196415acc3b7b24ff42b45f22dcc5ba39fc6a211b73b30068e59977b9710f1a8c272814e18b5327c2e8209056ccca3cc929dca7fabe1ae62b730feaef049e0a3dcd688d9ae62489ffcc2ea80caf33822a6b68d523d351b2417a4b54d14eecb8bd05c3672782f5d538785dc93d50c81e01a8df11648fa528ac64f061928091202eb97764879c52ac8fd125f787567a9868358f0e30aaa14b009e1ab793ae4cb5bbf293e495d1c815d010c0efcd1457e1c79a853ada4ba4e5f0b3bd67364b0bd47b1511cc8d17c6d986af9f727c4e82a1cbd2463d51e4f0b397fec3cbda3b0ac8c478929c2979de2389da17e3773dd9a4ee71779ba8b6036a060a482cd773ee93cc759d185d57622729803db2afeaaa5ffb92a62a432fdc1700dc32800b43d21c77283cc1ed4dd2af66c8b3687527c65752c25368085a6c62159cab0586ca16a75db929d448d513a894fa7717ac1b4ef0772e19c0ecd1fbce2782031691b35b6758caeef5aff8c5975b0672e9ed4cd25ba37f197e7365e51f852e925d0766353598396b5294fb91e4840a4c45da960deeba428581160254c603246d68b687066a4cc89094333de6b35b67c45d3c1be00b9e2b863480596c7529aa2ce924d15358954b8ae4d88c238f692faebed582987ba973845ee4c04ed1ecbe22ab2634a411b52bf99ca51b064ef7d2158b0b5c0849cbeae019b496aaaeec6804d832b75d8f62c8bd3cea1ae1a1d326a9125271a99f47f24229a4bbf42dcd07e1720c13a328ae7d16c77bea0a0a183339cb2adb3145d4f317dc17d05637cff68f54d830c0b2eec865b11bfcc2470464bf23c69544b5fadfb41e564339645243be67b349cd35894affa169ffdbd7a49d2dd82d6ffca22dac28a784eb0a58451a4fc553da34a1c2573cb8229aa01d3484b6a4eab6a21453ac42f083d111fb6ca905a5298069a4658c7d87510177b3222933da01edec235c472ca68393eb9877a1e34a371413c8a80fdfe807752e89a208d8de695e428456f447f282274a53be6ca7424cc3d5cb96fbaf2452eecfcfc92cacaa501a664d25b603bb32cf8c42a672e97771adc3a1f2d60270765dc875a463e41e5c6853882ad1abad05afd8f57891765646bb31a2693b6360ede420e270a82507a4c169dd9e698c052c95cabf8a910c19203d02bc250538660445eec11207cf009d914dda7fbb0ac3f60bd799a52f18e23110dfb3ff1805ef05109ee4c6c039580e2b4bc60055095fc2ab6b706705983284d9db7ac4584824f913b5e6d790d8f23ade49680636eb316419008be02def9fc1511c9ff1c6bd8af4ccbefab1748b6b5ac59118122b0fa15833732492bf87545832268c29f430ecf89d9e7ac0fabf94b3fda544c2bfd46561a74c13287a8c047d73a1be5487a966bf5a616d3dbb4e8a4d83e46037ed34aeff967145c68c6685a6fc86bc9a5e2a705df1e9d9936c55d0bc3a54db794083dea4c50744d782a1479e65296af8984d5fe7c7bd4280d453cae15380d8f1aa484448f6192d27802be8f8b55b59ef431720aedb71f18241990db04a9303118a324e4eb128ec1c923a17d5fd7cdee88186a370cdb7df462045e566e866c37d87772594a0433da47cc2c1f72e2ee043bc3bfae6ad7369787cdeec16278ec306f306f87c401483b85fcb951772d351aa9e527f0a7ffc6519ebe759955d81bd5b253d31cbc549338d781feb0e47e70ff3b0d28b446487964d6c1a16606e00fd6c97d223033d2d2ce029542a8b01be4750e5b1a041799f347cd