安全研究
node-serialize 反序列化 RCE:被低估的 Node.js 库信任链
Thinking
2024-01-15
2 分钟阅读
研究档案
#漏洞分析#代码审计#恶意软件
node-serialize 这个只维护到 0.0.4 版本的微型序列化库,在 unserialize() 函数里留了一手——只要传入的 JSON 字段值以 _$$ND_FUNC$$_ 开头,库就会把它送进 eval(),结果是任意 Node.js 代码执行。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e6a6d33d092b89e6532d493d3603d0c16e8341488e88de49795360f8f85225987b4e86de09ae788c9a2ab00ea25cbaf67bf353e4e7c90025feda758ba2c9f8621468712a1b0a16f937700111d8282530d6b4ca163ed8c7ca88e85d5f2fc6baa71d9df0a816b0c644ec18f331e8b1ee7d593ffe4c69afe7fd5fef61eecbeeaf94cd4dc271549cfcc6e4f2a82f748af637d479a2a28b8f6e86f0e82e28bcbd14e12b9f822ed003b53cc7e35ff9115885700eb2d00765142635c7fa6b4dacffd74f990c116288a83f11120479f59fcd212823d1bd09f12e4effc08f212de6a70458ca5208d0e6fec83b12532d6cc24ed9707a96fe531cf20a26094c35d9c4daf3953261220a5b3ebcbaaf3a7060f1813968db65e4ca6f98107c5e531727bf2c62eeb72fbd1e761197775e3e9721ac2dbce5dc3304ff1e5990b440c62c48a22c1b8e62962ffa50785691e19290220b082fafef7ad9b730763296463c983b5070cf379d6a6e55935734714be6236d3d779b64ec73d5d8b59bea30dc6ae53859bac1c6b0602f8c4a362162a69d9adf3f68ddce151c0379614ab852615f3a32a68bf782e014e4040b9b2f61e9c159c85b223ea0fd8a9198f1f8bf6d3489c8e9587955c8b91f1c9c72f182ac71fba7498fc42d68a49c459a11a8bd8f44495297933bbf0b1eb39bfb9f722497ef57c058655063ff246547630d0d900f62c7e64320c4f372d641aacc0c734dee45539bf7e3ae73092fcaba24c938b748137b641303e7b73bc619f8cf66fb3fc54694429cd3239475b833977579cbb48d9d722e83306ee3ef6e89371442c4d38c26335121c78e39db4bf5d64bebec92cb5dfa3cfa2deae6b121eba542290d06b6a15f829afeaed864c9c37d38ab0fefccb52d0f1733ceb3b0dc96bc79234295c39d28da5e146976199de42af730b55d06d76d3fef2ae980d442c69afc0f86876506b21aa554d731d1c2a4fa9153b6bcfb9c49d06b6b54c29835bd591637c85d7901ac8f3a52fc631f0d844a3eaa80fb2ed0afe480ff3cf88d46347543c02fffe1eb75479c29a821f67a12fb19b9b4c734715353434ef7a9b0c91f1a7f42387f1796f5096745908d4eb1a0cf19fc94c357eba9534343866a4ed58cbc975b4165a732801dd1d939e020193a680c941498fe25c60293557b19fc42325dff79502274947eadd5b583e0137362975024c07bedcc703c87d178ce9c7f18d5fba35ac5938931068dc0c88f287fcaf045e72d4e3eb45958568571e8e201d2ee4579f2b6f3752403938d8e1550246b12fe3c7ff9bed417714f51f37df438b1a1ad12375ad355b5623668f86dd70cd5f7f56fec191fe1b3d51dc939423f8b942eb57b34aa59a668af2edad6e7dd0e9311dcd37073d5a0b1a10c171ab9713ca1c760ea6a61a34c9ccc6e28ba271061eb88d01cecb7a448ecc780d69da62f90fdcaa03308cca56a9e5c705c3c1ba4bafb8614cad8552a581c6373dfc81630bc13f9acae410c04a17fcfc9f2bc6606e6128c03796af361b033a3e88c868b6a4827b487861110658bf600b9f9b518590d34f402ddd2fc1e02996af6dcdbf07f838aea51fcf5c8854749bcfbc4f9aa6a85c0fca9236a7f3bab58653bb563d92e42aa561f5d7d19b1e0cf4631cece83c569657e264929e14b351b60fa53b5d108c98577b436c0a6b75ac3128e309e562c27a8bbab5bfd16643077187bd88fdf9ec194f32fda13f9af3150cab93aef9a3df84dcc2dd17cdc4ac6209eaeb2e90ed33167fc53395dd5905e2159d4574ee4aa428823ca0cc94cc3f02598e42e1ad9f5a615964c7ec102379b74e2911626474264bc2d4b5a3dd1cdb57988451d63645e1516e20c24fccccc8419f8375ec2a785167c99148a71e531b152c510e1fd7259ac860ce70658963b19ef795e4186a0b588e02b143e9fcba25f8cd67080c0bd8171a81cdc4701f1a2f7078f34cee1ec982cd890373dd0a76a37395a314b284caa53fded791c9cbdf43192cf09eaafb84c0cfa14e5eec89363fa9acff0fb41d5305b070ebf67038d9e778a2bbd880578ec8acb7141e1ea1711044c4041c85af377017495e0efb378880068102e03250b33ae98e8270608e18c6bd5e090d365d1ba5b29af14a925c23ae466c6ad1586d3ca30214c7dbf78f1f73ddb689b7acbb8c15ad7b94d584f6dd6ec825a9c8bfb51ead73211e9c0969c6c0081a222e68c841aa2e1ab2f37f28a38d91a247512e47cc4cb5c0682f772a3d608afc3ea43601bb132565c6637e05121cef04fbf520e65fcc39e9a3ab6dec3695e73e1a606810c6947f2bc7eaf063df9eea1176b2a4c1ec3f4a632c8e1c466c0f9d235137e367f1203f2166db80fa6414c2d8dcd2e710352f6a67bb137eb652c7410718be52db4ef1e0f31d9b2b11b3ddc173294bbb34d78d83bcb466f96dcfede464a5abd0881b9506838e83351a75fb358deed16b98ec89e71033f1821ff6d11e8aeee02c54474309bab1428e04ed7099741176da3bb53aa4fab59b4691fc0918bd102af83dc9dda4691ef0a1b617175b37a2cede1790538ffb0c9fcbd3f7aea10d541a1e38f4bb677adce862125ab6de2d53e66a9bd559463eb892083b68621c16916fe3b9dcbf4549dcf8617eee4ce24ea0c871d7437ac60b0f0a4b29f2a6681b9eb0577b8b8de2f976e3d1da38eef40e33778ce8d6f39764449b4a988c15af09ba1ef95c0b5a7154e709b87f50d0540892b00d1279929dc7d651f1e216446c7ba14d43eb5acc05ab809dded193aaa8b8f40ddffe1dad8bda5eeaa936c8f186f6243a89f6fd6595af03ed644780028657f37b9a3b6e961381b83591cc936651e1a9b21e8c48c3e30ffcbf692d0420c85bdb11c777ab56f73aa3cc1b15d0591d63fadef36ef6f96fa2846f38ad7275e84c4ff0c3c20e433a3a501cfb0dc7b13057c2cd4f9ad6d8d0e87b2c6e5092b1ecc12eb9fb74ca00ae5f035ea8d3a71de2807450ad59d9cbcba9a8c7948297ed1b7a4d823219f74452bf0cc819d37ad43e07bf7942475083b4b1ccaf6194939b236549d7d04f75cfa2140e1e4d812fc446959d0c598694691a4bdba010c663e6cabf46c7a4f1a9cf630324bcd1598afc304c8b06b214632f7e612ded0bd6571d1a08d4e74813e3b5e996831768238fe16a30f6885280d082f35d44225392f0d05aad753956a83e48af8fd3144284c64572cd5af8e5d99524ce2e97b1a7a57131d5f41fe485e3c95dc2bd004e5df103e630f44a0e37f2db4cdcc750f0c5044ff787c48773aee8d24bda073bcad45171e850d4d9d615d9bdf3acdfaef77464800fbc9e445e8cee4e2d003c281c6032c7d6f38197e1521162a7d28653af7d1966b20183e8a80befb9e7bfab2653496f4d994b90204e669502400eb34180eb6b578e8d19398d6879f414a3cce5d279be59da15b1ac0175ad74a4fb25b9901e5f1e34ac89f28618f3e1ff4b00d07b054ab5bbbfa235a3b47ca666c29f420ad36ff4b4cae0532489b8e54621580ec296d997645724df6c107168597b63e266fb85f65d11be2c9ca713aaac84dbe945a5f81fc6ed614199e29bf7cdde9fa1866fb4b16de0562f69e5ea41f1b72553f7abd19e6b7d3a9a9b87b665c2fab471b0b1878b977c975fad251e5c26d6e88ea0a5d75a1fbbd268623423771820d629704303316e2fa86aa37a7254765c5dd9e2c4ce99216a51503124ab9e37d8e28c2996bdfbe20fa821bace163c51b7459d1d7e6b4861543e7165222c92132d3c4c8045e5a12c2cdbec573a0db77da55f0b6329d7198f33940866c14a28fea9c9b9a98c9302ef55cd50e9e8c670df250b70481e6688ed73c34fedcc1f3025d32ab88b6e1bef2562c2e7167048861a7b6ef66a447f566d846ecc9f9c1387d28453ec5edfa12442b163ba119befb94bf82c6c7c17d6c819212fc6c5e340c1de427c672e6bc8c3aa797477e2459571372d099627f598947204ee7527831b5507a0f2696a500bbab7ffcdedc38103197309deeb08854f477eb8e50c820d9d07e37ce7bc95c446274a2eddeee2e1a2c23235de7266ae4c0406b95aca9d80966c642c7d6d07c79bd172ca9bf05f01fe0e764fd9450f53cb17f2e5216609a8abb7e9fcb878cebac6d50f853fe721b0f9ad1137433590a007f5d5b927d08454b32a11db54f82040da1fbaf44f8823c8c2820990f1f75cd5b69f6e82675e3c28797854f9b03e062ef35c1b05422518c01c7f05950d0b6f988bc900047ede77a48676fa73a57b8096560786518fd239fcd1cb8a8ee9d15bc80946d1fe52cb1bf2f3d7c0259a1b1393dae6d05b66dee241ba5ab2403457ea29f922ddf489954840f7948c5f32dbb3f5ed2d6cf8b8e90cc5edc2cfdc3ee4af3d4ff84b0a90c307481bff6b6f04a444f590e2b3b9acf80f58c0031bbc17fc9695cf38004313412cdf58a43a2ced2b18f622d931d76c255d4577b011fb85d8aa8deee649f9abf0d3b246891d13a395deebefd69832a914dbd3c1505531e3e8d5622c26c5ff1dbfb54d570038944a768239a2880a9d62134c8f037ee8bdc8a8195b3e19eee69153c94826e53f39b2d3dbaa3df0ffeb1f218fe05a4ddf23558705fec96691cefe24a79a1c76b0de680ef5c797207827c269579a1b1443ab8f7f3b8ce561dc015206833a4a71e9c966b23817cc130a6e0dfae41dcd83b5f48ec43a3946d616606f64057f0115e3977a0fd82185bdd826618f1506a92a56967fef288d5e54211159291043562bb4734dfbfd08dfae15c485d2d4b55e0b5fa142619d6d4b4e3cb1ae5391a07a9903f36c167976f384357c5e2927be69dead48bd574d9fd09c90234ea7888e258ecd4878c693c59552656d2881f0f7c80af59b3b0b53c0f2fd9ff36b882912c9b3cb415f107d6bf2c621da2f511105d37ad7664d2aa84aca059c3bc51fc48d88e9d14164d843ea2591e5065e92615e4f9dd9ad78881b3f07ca39c29d9b4884c83b4bc9ebf519d206dc3632f3e075780622de04d87d3c103791e8a0e46c213f4ed5e67f9d57649375cb666bda3aa434b31048a4080681520f9fb609bc79e1b584e6990356cb2dfd4668c0a053e65b7c31c859aba8404d17fffe259fc22a56065174486131727f06e7cf9e86e023ffb21304a70d3d0d3f8b5414f55223933c15aee71d76b374103d90bf5413a1c388481e5f7d74594e38da49631ec683f543f43d1e3d36fff643900e70d757e1a146ad47e364fdf5ee3e3beb33e1c1a45c72884a216d5a5c9ced2362fa2001436c0575527d532330d00910d34e8ce7550592f69a8ca71dff476fc15d99c2e8bfa1adccc268d5a40b17fdcff16748c799829747d6282676ef920648c212444a70f408a0716d634488a4162fb1464c7ab02690e886d6543008b3bf11214be3d6f97a79725d51540a656f0ef6ad80b8947340dc11532bd615abae816e60c491827bb2fb90eb68474613fa45f98f40d395220befffeddd706039f17937785b114b059b71c1e5b9712ea32140327d923c4ed608c1f54cd30c5035d7e2730060f090e4d90a5468ba5eae8c04dabcd8e0312c964b2d4ebd45e27dc80a4c52bc2d7b5cd784586dee3cc2ab723f67345bb41ac5c741360c1ddcd974ceab3df18052c34f7a4415c6a97b0bee80c8204f8289c81f1a7065b7d0378422847fbb51f63fccb2490f407a52275e5cde27c670cda607758f85b7aad665d441fa61242e45379db62bea66ac2202d65d78716e494af526bcdbacd7f6e7fce722f6c8710866d31a59f353393943a963ffc5daa3d05e6e30038684482c769273216b20f969fe03d48c6df95ea3f773d05bd21820da233b7d563f5cb6008f8d1be19fe5e9cdde7c7b53ab3077f007c776e921dbf1c750804c5a52e19eeddc4d5480773ff8c3d80e6705978f2aa4877e82eec79d35d7a23fd84d30bc9e7f7a85b5c29216ab18776599fd996fa51eec58529dfba794205aecd5c4962e68293924a2c72abb82ff7415f321ced69314fd5cf3d7bccb3d91004e722d638aeb45995d08ad3f98fc6c87a87e8787e2a0cda280f728f611b2ffabf0bd2115c9ed8dc7dad59070d1c6905fc82fc7f8412752adb7a43c3520e7971fe35aeaa19ceb96e013d2d75981625da2ee0a73afff935da8441fc71dd338d3edbc6774f3e2fc553a48b7370105715134fde8673daf97483db55f7952bbf1bb8e41d0564152ed7a33f499dd11521a0f58f1c69a3ef59ffeef12d8c888d20faf56264717919ede0919571f3a9547c92a53c0e8294de86f7846199753b6b60c8f25bbfd45aee2fbcca41366b7f9c23049f3c5818f294fe3622ad26c8615d617824658a670a124af0d21a0f8ad47dd32eb03d69f977473aad587ec5444333e9387a3019668ab4269f0f5b9bdf769e17ecfd926c1b4bd86308b9e069617fd32bfc1908845d29e99419fdd1488255cae3b31b9f03b276e50e784957272999530fe949a87411a6d2b60ec1228d682f729d6ff4227345ed4d647c8f6eb5b3835514559941d1cdacda2df694334e0a78ba9e4f5a57a36337ff078664c43ab2b8f2a1b17bb01ff7218b88a28398d1bea7f886c784ec8d9e380c610fce62ca9b2f7ad744e058ec64e4dd209a3caab2b95de11084138d2d5774a14096e12d88c5b2ee92be889bf14e03d181eb4c3f61118548e70e66e75d01abd0d1aba66c03b788ff211694087f829d1cb1e1053335e0ef0ed6fdd060c5ec9667a9a3c4097547eb87ba1dba600da9ede6297f3e33890826f23b2adcfbf7ebb0a93a640fe5b4617ca752eecba0ecfaa3e93a9974a366ebeac87f136c81784830edb3b8f378f0a1cf4b2d517a5069371aad1bb55def129795f714bb6ba95a2937602520d658b6a0baf037dcead944d4512308233e76f06759d2841b537653be1951de2993727e83642903f048a1d6c4170536421472be0e2ed237e7abf72f9fc609a2717c40c7b17cfe39056423e2321124a7af02a577eb322e23e645c54a3a7c50c96a140e1e5745f3b3f7a3e69053b7cf7a2d45667f10cf33ee06089b5672f02e826650a441a737a96eb9a36ffb23d6d07451f9053f6577674ae0dbf535f86e15b91fc75c12e5fca9b60dc549b1b1e0ecdd84103ff2301026ff25448d31f983da26eb1efa3190f322b448ac985aea9d5c75380db8a8ec3d66c822c209b4d9e140c398b0f84f51d9926ccffd215a860fb22698308bef6fc53cfe9463b449b18f33c297a867ff4af68de94792d69f5a9de7bfc09d8fe8bb819258703b0758ddc47f23ecc664dd2e574479beb9bf4043a51258d5cf590fc5bd62447d3d739806be293eb5d0af0ebb8ac87ef6a031ce7c0de772b51edef7e7e9504aaef6ebede5e948c1fc44cfbe0bca7051ca47c278bc69fa7c362198eaa170812ad1cc17fffffe68a336161a73d688b96373f54a9a3dad692c87fd336ad3a7d77e97906464d98b7947d34c89cb3cf49872a6f942143f61a6546c146c271198d12c0a270a8f509d080b4f20bc8b9883b73a949dd6f212e38fbc08a126b22ec9af7e50d86ba297b8608c2eeba4d4a20d4cc9eb7da51ecb0df7c2b50ad26490fa03b70d34991b43ed21d0d3905eaf9d11808ba0e59d39a4e9eb65926c3b80327a495ede28928685b5edb58a423e8b600db7501865c51a6f9d689d1e44b02a09f3f621325dd0c01c393babeb44e1cb35f668004b34ae47d2bcd253f1d0c64ffe5f80b8a886792036e3e7eb89121b4bb915e90e8286cfd272764e12b07c7f022afeacdc8a84b2b739284dff09d87c6a44824afdd2853b71f4a7e47fb3014d97e8f85c6e1b64fee6f3f1eddc58480fefe22a87af1beebcc08674e357de3879439c5defa08e6b662c9ef94e54d5313de55673840aeaba5c1fca16166fb980f21ea7af852e1b89fa797e23d93ab2cc75ca12a848e223acbf7fd12835c1d0418884fc3a822366acad3d00eebee6b863250f95cf8219c9e47700a73b33be334d24b874899bef5b898e6dafece855f7475e462056508a0c5fcdb324820d402f21a34d2093d7f1a445671382ba619d1bc834041660383838e866b997c7e5c7a4867a049b3f4d935d6b55a9c2c4decb11d9ba06e2e4db2748d6c7d241bdd1bedc7de82af0f866f0df552ece27b3d1f823bfa7978fd33e7352bdf14313b5b023f3059c8f3dc5c14006156db70c4b345f8f82e65440842ba5cc024b96f6a017495598f1c2f1573fa7e6b18f36123a6207bacc4b3d4ca18f2b900415acf296fc6bc3d58fc6c8752cae438fd3cfaa08b477570f75e8cbc8ef4d27ae06336eee7df41f2c9e0bd7f9ec3e2eeab9b1a8713079f62b400348c4971f26806939b701b62de2fe68f42aec3d13837b0ed051617cf2cb4375c6c7c7de704e1a829fb18cee6a5f7e965cb9d0df4444c9d33a001c13754504cd55df976a4ea0053a8271470b41138f476054052b7d66e264d360ec46021dc2ca8a6f91c2f569f1742688d1c36ab7b65946f7eb288d457b8756027fd0c2f7350a9c445ce33c4437ec6d5b07bf64ad478020559175f6f8b58a6c8a4e4cacce8354905aca62d1995e8273964afe00925976bba366413dbd69276fe33b90820bad1d70a812cfa615fb6c37d37ef9fcc12392d9e19d3a7c4f80831152557a41a0cb00d4c1caf1e50af8feceb797931af04b7aaa2819d21effb5e4852a76368973be10190137af783d891fa689a2c132f82c7e033debdff977e68f00a117d938a35672330e52e1b2f2669e0c7ee170913e6ecca81ee2ab727c07a56216a6f952bf7cc32b0ac88e72163100d960ec05c024126f8db3e321a84e762752310a45855f3873710110af74ee593baca820cf04ecd9b7e907ecba176146d602578dbe01b0e9afd55ed4ecb339d979fbbd76b385f308d16aa8e01a744f8c0fb86ed47f3b7fae54984581dfa1cb1e7863d06fc8259b68da35baa84911ca98f0e0168b307282a9846a631077a8d0aa1dad18480b17e1a85edcbe093c9aa2878fefd9913b4e5c6b2c65d38a6ea29005e44b7fff8b0c6cbcc31477c665ce55ae00297e24f0d698e4c03b3ed9ef18880f607976d5873812a522de11e6f7f2aad9bd7c91506994bd725f130a93363af9966b62077114b46824814051cfdcf492e0975208057285eaad489ac408ebf3050aa38f6c94f37ece04183736ac00d06cf976ed731dc194f451c5add5aadaebcab9c5b93768fc38de23addf2f1d186503dd63288d67038e328f34bb99fc92177d90ee1961b6948a3c8fd73f447c314213c2f24c997638e16708f8fd1787bd25f56db31d79e0cddda37b3239630c317525210e7b7a75819071095e8f1a21d29f260f40e5b1ba05402389343ff3455fe82b61f683c12b91a880a30df9c9091fc8157d8454c17dc7f3b9c8179f5f3335d3ee83adc2b1d3f9ac9b211d330d151aaa50a0e9e81a02b0abf9991ec2d2a8438c53b6669f1d9c3fce296aba38e331db4acf0513240fab1b41480be2a842e9884be4af3a098556a4489cd4281b3c8e14d43709d52bfa257c18676b399ebe1e16e2e80ff843d43ed5717fc5ecfff7ab7761400175ba793cf14ff0fe1612b51e2a1bec5c8f7e14fd8566bb5f385960dc3216891eb3d969adba5a2401a7d6c9a3a2b0695b57c2b788b0bb345de856b4e6ba77371cbb398717ceaa6b7acd60e97acb1f01307482d76cd4a0f39049c31e716e0484e2eafca1a4283936c664c5bb974694f4d53e8fb00ee6374d1043637a77d38899304edfaad1f9ffce7335e9ed281c0e9dd549dc8903242f3a88750a5b44e70a907505d71d5f661ef08a2153f6a21ba04213573d07347534b47a8ea9a92d1678844edd2312de1c591736ba44bc269cb1450cc69f41589abc6541ac1b0d637f78794010b250bc50757fb8b20839ba51c1cc088918afbf1c0b104ef6636d038b11d76fdef145cd5dc2c721d4258616e8c4bf4ce4b673aba7e7a28cf0268d023589b074c6666660973c240a3afaabc24467cda1737d0f191d03235c271dde7cd8f3ce4f8d28a300fc84c05374902bca64c1796d6a795cc154296486a5df408d21ea1af3dda8f77f3aa936dca8836ab4654eb7721316c7eed863ca02a992f67a3ccbe3f9c2d449004cd9c08cb83e71b65563a41ba86cc787ffb4672e9acda6fd8c26560ac60bea50055f0bde68ae449b12a302c0faea54cb4f80adb0fb5f9caed05040167dfd812279654407fbac1603a0b6a3b803ebabe11c228774823f47c018b28679658afeb5b753d6d62f7666fe68e2e9988f800d6a3f331de20cb252fbe1ff1ea64d0b21bb12d22c93d1514153278c3dda3865eb36779b8e9d68f24aeaeac5d930a3616438e09b00a71db55c6dc5670bf207debbe73b3d186d9fedcf7b13e8214566142203cba9219a89799b160d4bbe70059fd419e5cea7f48bdd74fccc2d2297b63ac9d813b5a88d9d088462dc154c9a7f553a47e9a74906b5fe202f9b23a4a1f6bdcbcde459ab53da588e99f28cbe0c533e7a18f8edcde4ca12fa9ffa16636a8f8607024942daa6528431710f7cd2eb385ebea613a8aab9f467269dcafe9a886517fed1c35481bdd4704d55e9f5bd71877f33d9350f6ed5a082931b3ffb643f4b86b13a740187154