{"id":66261,"date":"2026-06-26T12:42:48","date_gmt":"2026-06-26T12:42:48","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=66261"},"modified":"2026-06-26T12:42:48","modified_gmt":"2026-06-26T12:42:48","slug":"yeoman-environment-600-code-execution","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=66261","title":{"rendered":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-26T17:25:50&#8243;,&#8221;description&#8221;:&#8221;Yeoman Environment versions 2.9.0 through 6.0.0 have an issue where missing generators can be installed without user confirmation, turning attacker-controlled project metadata into a package-install and code-execution path&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-26T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-26T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:224376&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-42089&#8243;],&#8221;sourceData&#8221;:&#8221;# CVE-2026-42089\\n    A local package installation helper trusted caller-supplied package names too much. In yeoman-environment, missing generators could be installed without user confirmation, turning attacker-controlled project metadata into a package-install and code-execution path.\\n    \\n    ## Intro\\n    \\n    I found this issue while reviewing **generator-jhipster** with a simple security question in mind:\\n    \\n    **Can attacker-controlled project metadata make a developer tool fetch and execute third-party code before the user explicitly asked for that?**\\n    \\n    In this case, the answer was yes.\\n    \\n    What initially looked like a JHipster issue turned out to have a deeper upstream root cause in **yeoman-environment**.\\n    \\n    The vulnerable behavior was in Yeoman&#8217;s local generator installation flow, where missing packages supplied by the caller were installed automatically without user confirmation. In a downstream consumer that passed attacker-controlled package names into that path, that was enough to create a real package-installation and code-execution chain.\\n    \\n    That issue became **CVE-2026-42089**.\\n    \\n    **yeoman-environment:** [yeoman-environment on GitHub](https:\/\/github.com\/yeoman\/environment)  \\n    **Package:** `yeoman-environment` (npm)  \\n    **CVE:** CVE-2026-42089\\n    \\n    This affected **yeoman-environment**, the runtime layer behind Yeoman\u2019s generator-loading and bootstrapping flow. The official project describes it as the component that handles generator lifecycle and discovery, and as of **June 26, 2026**, the npm package page listed **1,466,426 weekly downloads**, making this a widely deployed package in the JavaScript tooling ecosystem.\\n    \\n    \\u003cimg width=\\&#8221;840\\&#8221; height=\\&#8221;560\\&#8221; alt=\\&#8221;photo0\\&#8221; src=\\&#8221;https:\/\/github.com\/user-attachments\/assets\/7bb6754e-d087-4669-833a-7466d71d4ea1\\&#8221; \/\\u003e\\n    \\n    &#8212;\\n    \\n    ## Attack Chain\\n    \\n    `attacker-controlled project config -\\u003e caller-supplied generator package names -\\u003e yeoman-environment silently installs missing packages -\\u003e downstream tool loads installed generator code -\\u003e package installation and code execution during CLI bootstrap`\\n    \\n    &#8212;\\n    \\n    ## What yeoman-environment Does\\n    \\n    **yeoman-environment** is the runtime and generator-loading layer behind Yeoman-based tooling.\\n    \\n    Among other things, it handles:\\n    &#8211; generator lookup\\n    &#8211; local repository management\\n    &#8211; package installation for missing generators\\n    &#8211; registration and loading of generators\\n    \\n    That means it sits directly on a trust boundary.\\n    \\n    The relevant question is not whether Yeoman is \\&#8221;just a local tool.\\&#8221;\\n    \\n    The relevant question is whether **untrusted input can influence package installation and code loading behavior**.\\n    \\n    In this case, it could.\\n    \\n    &#8212;\\n    \\n    ## Why This Surface Was Worth Looking At\\n    \\n    I was not looking for memory corruption or crash-only bugs here.\\n    \\n    The stronger target was the extension and package-resolution surface.\\n    \\n    Any system that:\\n    &#8211; accepts package names from another layer,\\n    &#8211; installs them automatically,\\n    &#8211; and then makes them available for loading\\n    \\n    deserves close scrutiny.\\n    \\n    That is especially true when the downstream consumer can derive those package names from project-local data.\\n    \\n    This is exactly the kind of place where ordinary configuration can quietly become a security boundary.\\n    \\n    That was the right place to look.\\n    \\n    &#8212;\\n    \\n    ## The Boundary I Focused On\\n    \\n    I first reproduced the behavior through **generator-jhipster**.\\n    \\n    The important path was:\\n    \\n    &#8211; a project-local `.yo-rc.json` declares a blueprint package\\n    &#8211; JHipster reads that blueprint entry during CLI bootstrap\\n    &#8211; missing blueprint packages are passed into Yeoman&#8217;s install path\\n    &#8211; Yeoman installs them silently\\n    &#8211; downstream logic then imports blueprint CLI modules\\n    \\n    That meant even a benign command such as:\\n    \\n    &#8220;`bash\\n    jhipster &#8211;help\\n    &#8220;`\\n    \\n    could reach package installation before the requested command completed.\\n    \\n    That is a real trust-boundary failure.\\n    \\n    The downstream trigger helped expose it, but the unsafe default behavior was in Yeoman.\\n    \\n    &#8212;\\n    \\n    ## Root Cause\\n    \\n    The bug was simple.\\n    \\n    In `yeoman-environment`, the vulnerable method was:\\n    \\n    &#8220;`js\\n    async installLocalGenerators(packages) {\\n        const entries = Object.entries(packages);\\n        const specs = entries.map(([packageName, version]) =\\u003e `${packageName}${version ? `@${version}` : &#8221;}`);\\n        const installResult = await this.repository.install(specs);\\n        const failToInstall = installResult.find(result =\\u003e !result.path);\\n        if (failToInstall) {\\n            throw new Error(`Fail to install ${failToInstall.pkgid}`);\\n        }\\n        await this.lookup({ packagePaths: installResult.map(result =\\u003e result.path) });\\n        return true;\\n    }\\n    &#8220;`\\n    \\n    That method installed caller-supplied package names directly through:\\n    \\n    &#8220;`js\\n    this.repository.install(specs)\\n    &#8220;`\\n    \\n    without prompting the user first.\\n    \\n    That is the core vulnerability.\\n    \\n    ### Why this is exploitable\\n    \\n    Because the package names do not have to come from a trusted source.\\n    \\n    If a downstream consumer derives them from attacker-controlled project metadata, then the exploit chain is straightforward:\\n    \\n    &#8211; attacker controls package names indirectly\\n    &#8211; the downstream tool passes them to Yeoman\\n    &#8211; Yeoman installs them silently\\n    &#8211; downstream code continues with the newly installed package available for loading\\n    \\n    That is not just \\&#8221;package install happened.\\&#8221;\\n    \\n    That is untrusted input crossing into a package installation sink without an explicit consent boundary.\\n    \\n    &#8212;\\n    \\n    ## What Makes This a Security Issue, Not Just Tooling Behavior\\n    \\n    The important distinction is silent installation from untrusted input.\\n    \\n    There is a real difference between:\\n    \\n    &#8211; a user explicitly deciding to install a package, and\\n    &#8211; a framework silently installing a package because project-local data caused a caller to ask for it\\n    \\n    That distinction matters even more when the package becomes loadable immediately afterward.\\n    \\n    The issue was not that third-party generators exist.\\n    \\n    The issue was that **Yeoman treated caller-supplied package names as installable by default without user confirmation**.\\n    \\n    That makes unsafe downstream trust assumptions materially worse.\\n    \\n    This is exactly why the fix added a confirmation gate.\\n    \\n    &#8212;\\n    \\n    ## PoC\\n    \\n    I used two layers of proof because they demonstrated both root cause and real downstream impact.\\n    \\n    ### PoC 1: stock downstream trigger\\n    \\n    The first proof used unmodified `generator-jhipster`.\\n    \\n    I created a project with a root `.yo-rc.json` that referenced a blueprint package which was not already installed, then ran:\\n    \\n    &#8220;`bash\\n    jhipster &#8211;help\\n    &#8220;`\\n    \\n    That caused JHipster to pass the missing blueprint into Yeoman&#8217;s local generator installation flow before help completed.\\n    \\n    The important result was:\\n    &#8211; a harmless-looking command reached package resolution and installation behavior\\n    &#8211; the project-local metadata was enough to trigger the install path\\n    \\n    That established the real trigger condition clearly.\\n    \\n    ### PoC 2: controlled package execution path\\n    \\n    The second proof used a controlled local registry and a package designed to demonstrate import-time side effects safely.\\n    \\n    That mattered because I wanted to show the stronger story:\\n    \\n    &#8211; project-local metadata influences package selection\\n    &#8211; Yeoman installs the package silently\\n    &#8211; downstream logic loads installed blueprint CLI modules\\n    &#8211; code execution becomes reachable during bootstrap\\n    \\n    This was the strongest evidence chain because it moved the issue beyond:\\n    \\n    \\u003e \\&#8221;unexpected install attempt\\&#8221;\\n    \\n    and into:\\n    \\n    \\u003e \\&#8221;install plus downstream code-loading path is actually reachable\\&#8221;\\n    \\n    That is the point where the trust-boundary failure becomes much harder to dismiss.\\n    \\n    &#8212;\\n    \\n    ## Why the PoCs Were Chosen This Way\\n    \\n    The first PoC proves the silent installation behavior.\\n    \\n    The second PoC proves why that behavior matters.\\n    \\n    That split was important.\\n    \\n    A report that stops at:\\n    \\n    \\u003e \\&#8221;a package can be installed\\&#8221;\\n    \\n    is weaker than a report that shows:\\n    \\n    &#8211; attacker-controlled input reaches the install path\\n    &#8211; the install happens without confirmation\\n    &#8211; downstream logic makes code execution reachable\\n    \\n    That is the complete story.\\n    \\n    &#8212;\\n    \\n    ## Affected Range\\n    \\n    During advisory handling and local review, the behavior was traced back to the introduction of `installLocalGenerators()` in:\\n    \\n    &#8220;`text\\n    yeoman-environment 2.9.0\\n    &#8220;`\\n    \\n    The affected range was therefore:\\n    \\n    &#8220;`text\\n    \\u003e= 2.9.0 and \\u003c 6.0.1\\n    &#8220;`\\n    \\n    The fixed version was:\\n    \\n    &#8220;`text\\n    6.0.1\\n    &#8220;`\\n    \\n    &#8212;\\n    \\n    ## Fix Analysis\\n    \\n    The fix was correct and minimal.\\n    \\n    In `6.0.1`, `installLocalGenerators()` was changed to add a confirmation step before installation unless force-install is explicitly requested.\\n    \\n    The fixed shape looked like this:\\n    \\n    &#8220;`js\\n    async installLocalGenerators(packages, forceInstall = false) {\\n    &#8220;`\\n    \\n    and then:\\n    \\n    &#8220;`js\\n    const { aproveInstall } = await this.adapter.prompt({\\n        message: `The following packages need to be installed in the local repository: ${specs.join(&#8216;, &#8216;)}. Do you want to proceed?`,\\n        type: &#8216;confirm&#8217;,\\n        name: &#8216;aproveInstall&#8217;,\\n        default: false,\\n    });\\n    &#8220;`\\n    \\n    If the user declines, installation is aborted.\\n    \\n    That is the right fix because it restores the missing trust boundary:\\n    \\n    &#8211; caller-supplied package names are no longer silently installed by default\\n    &#8211; explicit user approval is required\\n    &#8211; downstream tools can no longer rely on accidental implicit trust\\n    \\n    This fix landed in:\\n    \\n    &#8220;`text\\n    78d2af7\\n    &#8220;`\\n    \\n    through:\\n    \\n    &#8220;`text\\n    PR #753\\n    &#8220;`\\n    \\n    That is exactly the kind of remediation you want in a security issue like this:\\n    \\n    &#8211; small\\n    &#8211; direct\\n    &#8211; easy to reason about\\n    &#8211; tied to the vulnerable sink itself\\n    \\n    &#8212;\\n    \\n    ## Severity and Classification\\n    \\n    This issue was reasonably taken seriously because the impact is more than cosmetic or surprising behavior.\\n    \\n    The vulnerable behavior can lead to:\\n    &#8211; attacker-selected package installation\\n    &#8211; network access to package infrastructure from benign command paths\\n    &#8211; downstream code-loading reachability\\n    &#8211; compromise of the developer environment in affected consumers\\n    \\n    The CVSS vector associated with the issue was:\\n    \\n    &#8220;`text\\n    CVSS:3.1\/AV:L\/AC:L\/PR:N\/UI:R\/S:C\/C:H\/I:H\/A:H\\n    &#8220;`\\n    \\n    That makes sense for the downstream exploit story:\\n    &#8211; local execution context\\n    &#8211; low complexity\\n    &#8211; no prior privileges required\\n    &#8211; user interaction required\\n    &#8211; strong confidentiality, integrity, and availability impact once the package execution path is reached\\n    \\n    &#8212;\\n    \\n    ## Disclosure\\n    \\n    This issue started as a private report against **generator-jhipster**, because that was the real-world trigger path I initially validated.\\n    \\n    During triage, the JHipster maintainers pointed out that the auto-install behavior itself was in **yeoman-environment** and referenced the upstream fix.\\n    \\n    That led to the correct pivot:\\n    \\n    &#8211; narrow the root cause to Yeoman\\n    &#8211; treat JHipster as a downstream affected consumer\\n    &#8211; report the upstream issue privately\\n    \\n    The Yeoman maintainers reviewed the issue, confirmed the affected range, and tracked it through a private advisory.\\n    \\n    The report was later assigned:\\n    \\n    **CVE-2026-42089**\\n    \\n    That advisory also documented the real downstream trigger path through `generator-jhipster`.\\n    \\n    This was a good example of why coordinated disclosure sometimes needs one extra step:\\n    \\n    &#8211; first identify the practical trigger\\n    &#8211; then identify the true ownership boundary\\n    \\n    Here, the downstream reproduction was useful, but the upstream package was the right place for the CVE.\\n    \\n    &#8212;\\n    \\n    ## What This Bug Actually Teaches\\n    \\n    The key lesson here is simple:\\n    \\n    \\u003e package installation is a security boundary, even in local developer tooling\\n    \\n    A lot of people instinctively downgrade issues like this because they happen in CLI tools.\\n    \\n    That is a mistake.\\n    \\n    The real question is not whether the tool is local.\\n    \\n    The real question is:\\n    \\n    **Can untrusted input make the tool fetch and trust code without an explicit user decision?**\\n    \\n    In this case, yes.\\n    \\n    That is the real takeaway.\\n    \\n    This issue also reinforces something important about good vulnerability research:\\n    \\n    &#8211; the first product you reproduce on is not always the true root cause owner\\n    &#8211; downstream PoCs are often what make the risk obvious\\n    &#8211; upstream trust-boundary mistakes are where the actual fix belongs\\n    \\n    That was exactly the shape of this CVE.\\n    \\n    &#8212;\\n    \\n    ## Key Points\\n    \\n    &#8211; package-install helpers are security boundaries\\n    &#8211; caller-supplied package names should not be silently installed by default\\n    &#8211; local project metadata can become dangerous when it influences extension loading\\n    &#8211; the downstream reproduction in generator-jhipster exposed the issue clearly\\n    &#8211; the root cause still belonged to yeoman-environment\\n    &#8211; adding an explicit confirmation gate was the correct fix\\n    \\n    &#8212;\\n    \\n    ## Final Words\\n    \\n    This vulnerability was not about a flashy payload.\\n    \\n    It was about asking the right trust-boundary question.\\n    \\n    A downstream tool let project-local data influence package selection.\\n    Yeoman installed the missing package without confirmation.\\n    The rest of the code-loading chain did the rest.\\n    \\n    That is why this became **CVE-2026-42089**.\\n    \\n    Fixed in **yeoman-environment 6.0.1**.&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/224376&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:8.6,&#8221;severity&#8221;:&#8221;HIGH&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:L\/AC:L\/PR:N\/UI:R\/S:C\/C:H\/I:H\/A:H&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/224376\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-26T17:25:50&#8243;,&#8221;description&#8221;:&#8221;Yeoman Environment versions 2.9.0 through 6.0.0 have an issue where missing generators can be installed without user confirmation, turning attacker-controlled project metadata into a package-install&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,81,12,15,13,53,7,11,5],"class_list":["post-66261","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-86","tag-exploit","tag-high","tag-news","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=66261\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-26T17:25:50&#8243;,&#8221;description&#8221;:&#8221;Yeoman Environment versions 2.9.0 through 6.0.0 have an issue where missing generators can be installed without user confirmation, turning attacker-controlled project metadata into a package-install...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=66261\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-26T12:42:48+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376\",\"datePublished\":\"2026-06-26T12:42:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261\"},\"wordCount\":2376,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-8.6\",\"exploit\",\"HIGH\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=66261#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261\",\"name\":\"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-26T12:42:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=66261\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=66261#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=66261","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-26T17:25:50&#8243;,&#8221;description&#8221;:&#8221;Yeoman Environment versions 2.9.0 through 6.0.0 have an issue where missing generators can be installed without user confirmation, turning attacker-controlled project metadata into a package-install...","og_url":"https:\/\/zero.redgem.net\/?p=66261","og_site_name":"zero redgem","article_published_time":"2026-06-26T12:42:48+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=66261#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=66261"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376","datePublished":"2026-06-26T12:42:48+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=66261"},"wordCount":2376,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-8.6","exploit","HIGH","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=66261#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=66261","url":"https:\/\/zero.redgem.net\/?p=66261","name":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-26T12:42:48+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=66261#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=66261"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=66261#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Yeoman Environment 6.0.0 Code Execution_PACKETSTORM:224376"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/66261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=66261"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/66261\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=66261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=66261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=66261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}