Security Research
CVE-2022-48110 CKEditor 5 XSS: Sanitizer Gaps in data: URL Schemes
Thinking
2022-12-10
2 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Web Security
After CKEditor 5 switched to the model + view two-layer architecture, the XSS risk should have been eliminated — but the sanitizer still missed URL forms like the data: protocol header during model→view deserialization.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd88376c1417f7341ad5bb4a1f33e6370e8e853410be8bd237ecdceeeb6748768c26ec99c907d1060a6b52a502ce0b0ac9359956288b9306a5247f61fb6da7c6fdc1446ad488a3b3f26ff58a30245a6c500d67e143ea4537ea488ff7f8907c8f2f05817bb45346386c1f357f85087204d1295c08789337db2910da2a3ffef1e20e13993b81a3ce7be0699edcc2e2a0209fd0dbd95b47d6aa71ed54691a973634e4c742c0130be42d00755e42641328b7a5c0c4fb26bc94984326de8eae162a159853aa8d22d6784384905ab0a2ac5ba353ce632702d3be6a9a0770e092f8603d8f9965a5dd4eac78b95e8322bca6026a843ca321f4e9fecdffefbce094f58af41b0d4a56c5c8f7104ba7a2cf0bdde16f632abfd720ba299083a42914393ab7ac63119e95d954cc371ef2a9840a524470d39b238dbae02762f2f948d722461bf2fbdc324e0ee3f7b1866157253b3272b6cde6425eba389aefa3587c44373e3dbfdee6bf15876df8197bd9df500b8a2a72d0087f2bdcaf4350e98ba305792149ef9fc9caeecde54b8326c00a770c9344abf27d683ab0ec81adfcdf43696e8266049784b733d01cdeb3088f57d890e27db5cd126663018491fdcc9c57516b8b56e031d6e806db9d039907e839f9f7b8568532217cacaee2ec39bebfa93b0a74ef7a47805c0d7cd130273030809859ba633f2020585373277e45d593da368ca10660f16830f923c0f7b6b1419c86779728a95da7debbff49bddcad9442e0a75977184f8271724545a939774bd8f21ed99472e17355b070e5fe9329072c4b238a6c28051178ee9daeae1566abfe92a4297c001f4dde894b3508ab082fd18700265ca26cafeca1d24bd86e8b9afda6bd5fbb69f34f36fc3b42d17b8f59c6cbcdd65e01761478a140a3dc9941b2a8d657b8c35b3448268900117a77ad88c2174836561d8c17542b530d264baf98f390447c124298632ecb928254c187317c8a9bba2be8bfe57b41fd4308e165637ceb311edb2defc1b2f3bda06635f0e0957021bcfb5878d994850e6837c145186adcf2beb7687f3def628569c3f1e2b06ad3a2242b4c932f171f93a1150bf4888435287ce8d06771653ba3ec039b9a65b84d187c2b03c54c90b65044c0e3c19b02019ee400342f7454ae839a6a75848ed043750a0fe7931410331f7b3427711d1d04791313953e918c7223d6b08a18e112e0187ad65c6ac265d9e68fe9fb5b1d7b94aedc47c7c03b125fdc634967e34ecb2d2e354e5d707fc4f00459cf61e76d7e2a111e9fbded1e510dd5499a164ee56ff270cfd092d1a0736b4dc92adda7d17a394a74fbf9d809761ff6632ab50ddc45d7026a870127112ba7c50d7cb5ab34eb93c4b3cec8e27ae56809fe1e8f9fe83c1fe3b55531413b303597ca922865800e05bfb7784eb7bbfc52ab73f1392afee15265962934318f281526f5512e98926b7a9231390a7817ef98744ec624df4b3db5c05e21cc9a59fa28ef83bfa634d49aec381a0c7337c6c97ea1b7ce32566d7a0052cf5199874a7a9a312852aaa0f0578dddef6ddff96fe8fb4eae26b2e14a9618824e2bd4d8e81bc8a0b7581dcbcc7cf8f8a6a4820cba527f9fe07cfe46b79b9ed8550eea4900a4fb3c15da16b12bc78f46b54eb21da465174f8784467f1c6303247eaf67738f06f069c87895ab38286b8bde89b41c27407377ec524e77e3c873dba04611a9c1ebb6a2d7809fc99c18d1c3f46d18e0f63f94f1245c6cfe2c86ca1502e85b9d4f3ad923dfa966cf2804131f97e28f07ef321707542f736ec3a30f232b9d64001c7175f4e8e711677f643ac04c907215f413bebb0051421cff21aae8e47fcc95346bc681dd8d200da66296d39294f2b0423fc13d8fca7355e5c3d34aba0f157de1527545d34ae53bdf137074d76032e29bdaef11f5f235500cfeffdae0add4658426922240cd890373dd0a76a37395add1527c4262fe563c0c640f1feab4ca7057547f473209638a9b0f43601c98c2df269628714b23c4533cb9c64977c76d276345d817120a539bf4a9bd60174696120390b9206d5c554b08ea761c7ecb4ad61fa3b404b03b58068ece56b1667be18cce96ff07b6bec0a717f41d70fd5b6e3888046c34a75f408edceedb1932d0a498efe2ebd732a97183d79bbaca3d9328b794d9fa5de6713f349c097582895e1a617e618812f46009a4f3276ba38b8aea484c394acc41b5da7967753f7d3ba5954528f9f433e3bc6cce786d567758aa48f6a369a308d03cf2b6e367f43285e0764a772d17cb90623acab3f76fca97ab0b39b8a2c5ef2a1c34a750e9cc8d800afcbaa70895678cf1978f681835ae941f59d9c8f7d7ecd5fbc26e958364d7bd767ad24dd126e476050e9e60e5987e385892d2ca7bf7135d7979619074f2377c0d9e2a5d0102b64891667146f4c5b045f90f1a32afc1d1ff7ac1993323dd6c3f9566596cc6e2d6acd17c409718c71dff66849e9810af1ec8610a6014a744bf86fd70d6f60b32f0ee852b09f2e934cbc9cd89405853e9189e5579c07f4b17236a27e2d4f19679f3ac6e7cdaa9318299525af28c70c24c4cb0b3ba420acaef94e5bce70787263307604574f99d19c832c663b35300b933d1a734cfd4c8cfea0225a2945b748efb0f7069369e64302a7de1ff01656ee2a982b29725178706938106b615f80fe35e15311700a5502de3bd53c0e21354e9808c44b7a5d353faa84f467b77a51a28a7139640eb8047691adab2e6e9fb8d0e02c71f011dc56015e11a357633a2e8677d1c811d299f4b98a701ee45d73dd74a94961ddf7030d86c496ab951b0a7ef5fdcc213429d2846f68df577c71ace14db7eb51675c84241dce252a0edf3052d2ee64532d7274da2db2194a42d9aa16c2e27c1e5963a6e0fe809b4b6234ad3991c0b23105509bebd8bfd14540b40dc4471a23d8212834671b991acd83960e7b66cdf1534474d160e0808543be0fa8204b6d902c5982fc168bd729a20f6c26cfab0d1c16a63205c49e0466d19c5be8d1b32c9d520c77a8fcafd6fcd11f3214693a56e128fcbc137309a1f8f76305b832a463e782ce2dcdbbbcb63dce63049c203bb0e7c3837e6d632960cba91f2db12907862437d64790393b6c41f38d0811c6edb0d34160086cec8b1196c381fac4e7800c61364c9aef53246c1ed51fc12bd3d1c3113ea2eb93f47360993bf2b31d73877672693093fbac682088f2af77dc9bfb16e33db09104db2c4135afa9599822b3c4e1dd716e7e32837cb83708d5a117bc71b3a244e4776296b2607c767029a920e1e929cfbdcac8581ad142f572d4e60f2afa900010cb46bf3adff3c83056e7aca032f213665fd96bb83d85cdc4da7a6ec4ae1c2d9768b3c0bfbcc570cc7c3c07a62bd00fad3efd364e40707f45fc379e53efe697a9f2270d1d0e0e77761688633ceca911f8d18cc9697652c186df25a5cf351b6077797c22782727b6669b5e00a3e02c9d9b7984f684b17dbb8e543faf59aebb48530ea56ab81d77f6e8c11b7c474c5b686c7f349a3b14588a02c53c3a3c7aa96828d285b803421b566f5f3ac0f2b02e5ab2600f0abd788747132d393d9bf31427d63ff4b010d707ff26a9a2bc7d99acd556c2678f7e07f677a368b1c5f3a7a16eb7cbef7f7c7b193fa6e9340fcb1920e331adaa097dfd621e3aea4b4e2649e3ed3f8842b93bd7011e5268c6542f7e17bc964d20d7320026101a8bba77722930c22370cd4c4214fea44d19ddadb8368ae208bd5ffb42c9e75ce1cd6b655c6897940157c7c701aef0bdf17ec6f124efc2ed684978adbb4677c9a31dc76259be7ca58f35c4fb4d4a72c6ad3a9016c44c9103233ec6a63486b36e7168a949b249dd28f50d65c8d9e2653aa1a97099baa9546fe242a7f0bd8ca1f2d7acf95ff1b9cdbdee086aab7104758aee4b951e97bb29e91c810ec015f7fb2a40c99b477dd93bc0f26ceedfbe173f3e5d1e7ddcd539d90c75f238c12a7a054fa901aab5b1eed51b5215c08389db3cee0530f4dd1e59666749b6866bb040465f91fc4ba86942b4e543b204082db963cc4d9b44e11d4483b0b9d5316d33ef1f6e52a76092b5440642977fc2d425530c64dee035fca6a63f2f083881807e3a7d0aa74818547ae2a479c00b3625e52b22d3cf14cad026d10d859a5f5548cf5149d652c5b7d30647854734ee682b29d3e35bfd3cce708c1948e5ad48b951c0130cc8fb16409c68336fe78b06cdbc56027a301195ec2ba85918c8be4ef42de506f97f21ccd1ff9d987dc4eab3033baf2c2f3520eb79230ba881df26f2ea97bff30c38f8788547ea2ddc5552ab0d59cef6321b4ffa6148af2e984ca24cbe42b54e95011968a1a475cce574f20c27cdcb2ecb6b2aef61555c9430cef56a7ddcc800c1d69034035b93d21e6a86cebd770d21eb12da5e2b692b878e394888ea387f4eb41a697b699867cb02d309df4eda3adcbc469fd41c9d357b8a431622436e5b8b3752ded7a66a1d0caa3d713b25af0e1c1419859178a41d301cf84e399495f0510af6f42b40c83e0cf6671b796c8ba24b1aba25164cab4095bd23e529a00f58e29cf9aac78f19f5c35332e885b612a59e697da0794b21887f9c95664f7da186eba6f9ca0ee0ce2b423a2b50dfdf48b029fd6f2e26646ae3648221a5d45a5d0c159d4ce848384a9c5827e31b2d843fc153713aace4fc0c023d1a70aa60202b50e2046722b5d713321629ebbd5067aee3227c05503220f3d9fcfcd7d94ea57ab0b0e6d9af81ebc9005b239d94a087d4db897b790b04c5abf47d9a259ac476d8b99c9d5341ba48f8e258ec15a2c4b474c04bc93f986163623263eaf8b7e4f4ec6b6dbb4cc37853a14c8b2d64342536937e188618040375401d07d8a2703af44d901a3023ce366aaa8a1d7f26f0af2cd1ffd1e05c69b7daa0c4683c2c317f4557025d63bc682947283c32b01d2faf47ab929fe0933b5e77f784f76951e82757d1e219de5303799b1bfae4e029b1193b0188203f39271ab44e133deb7da6b44bb500c82f340bd7dfebd91e393185f87b267a4ea0454d43b85bbf31f2acd8d6f7a39c09f80427e3a075e4321526a323e730eaed99d1114d2ecf5061de040527464d9d2c911d3e66badcc706fa5aa23a9daf9595addcb404b73f99bc4b2e0b081b9169ce798370f1ca168b2cabdac487582658cd0b833f315e0629e28fd55592c846fb332a0dce1cbaf77c6dca9d6ab7677aabf33d0e5c5a4ecfc8bbfc29ff75291c565ba06718cfe10017b1a00d469ea87479f7a49224323792807cf3833fff471181d1f31c4dcc8d917d8695670f78e4709f25ac7f4916efb651504e3ec4e25a2dfc25c255494ba0c0eaacd5c274cb9b6042a40ff928a347b7553145245567404f4ab90f79535258305403ac446a3b2cfe2b329120dfa3a326c7dc8b2c8e40fd90d12c42305b3cc12732038ecd0df73bed8b3dca89d9556f92128a33145c104c6db9d1fcefa069f033da30f9da9efd7e1780176eb96ebc643466cecdc146b8c2a645819f0af7bccb18011c52e93ab6d4548b9676e42d3d7487ae439c4c86529292849b407cbda4835400f95812395c578a29245c87d7e4803cbe73246df88cc0c7ea9efe9393c74239dc52b84248365f44cb772d2f14f12136f1e3c4508cf7ec27ccfb60a279ec2b0e88870c811b223346b016499f737ea2ae63913cf0852505b410cee30f0b4d1a1d9a8e1f538bfcc6b4f75c20243f4013a7e16ea6ff3cfdb92d349213a08d5930a753992295f118a084b54f0310a643e21a48fee664f00