Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency marked to v4 [security] #8037

Merged
merged 16 commits into from
Jan 28, 2022

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 14, 2022

WhiteSource Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
marked (source) ^2.0.0 -> ^4.0.0 age adoption passing confidence

GitHub Vulnerability Alerts

CVE-2022-21680

Impact

What kind of vulnerability is it?

Denial of service.

The regular expression block.def may cause catastrophic backtracking against some strings.
PoC is the following.

import * as marked from "marked";

marked.parse(`[x]:${' '.repeat(1500)}x ${' '.repeat(1500)} x`);

Who is impacted?

Anyone who runs untrusted markdown through marked and does not use a worker with a time limit.

Patches

Has the problem been patched?

Yes

What versions should users upgrade to?

4.0.10

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

Do not run untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.

References

Are there any links users can visit to find out more?

For more information

If you have any questions or comments about this advisory:

CVE-2022-21681

Impact

What kind of vulnerability is it?

Denial of service.

The regular expression inline.reflinkSearch may cause catastrophic backtracking against some strings.
PoC is the following.

import * as marked from 'marked';

console.log(marked.parse(`[x]: x

\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](\\[\\](`));

Who is impacted?

Anyone who runs untrusted markdown through marked and does not use a worker with a time limit.

Patches

Has the problem been patched?

Yes

What versions should users upgrade to?

4.0.10

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

Do not run untrusted markdown through marked or run marked on a worker thread and set a reasonable time limit to prevent draining resources.

References

Are there any links users can visit to find out more?

For more information

If you have any questions or comments about this advisory:


Release Notes

markedjs/marked

v4.0.10

Compare Source

Bug Fixes
  • security: fix redos vulnerabilities (8f80657)

v4.0.9

Compare Source

Bug Fixes

v4.0.8

Compare Source

Bug Fixes

v4.0.7

Compare Source

Bug Fixes

v4.0.6

Compare Source

Bug Fixes

v4.0.5

Compare Source

Bug Fixes

v4.0.4

Compare Source

Bug Fixes

v4.0.3

Compare Source

Bug Fixes

v4.0.2

Compare Source

Bug Fixes

v4.0.1

Compare Source

Bug Fixes

v4.0.0

Compare Source

Bug Fixes
BREAKING CHANGES
  • Default export removed. Use import { marked } from 'marked' or const { marked } = require('marked') instead.
  • /lib/marked.js removed. Use /marked.min.js in script tag instead.
  • When using marked in a script tag use marked.parse(...) instead of marked(...)

v3.0.8

Compare Source

Bug Fixes

v3.0.7

Compare Source

Bug Fixes
  • use named exports only for ESM build (#​2226)

v3.0.6

Compare Source

Bug Fixes

v3.0.5

Compare Source

Bug Fixes

v3.0.4

Compare Source

Bug Fixes

v3.0.3

Compare Source

Bug Fixes

v3.0.2

Compare Source

Bug Fixes

v3.0.1

Compare Source

Bug Fixes

v3.0.0

Compare Source

Bug Fixes
BREAKING CHANGES
  • Drop support for node 10.
  • Add module field to package.json

  • Tokenizers will create their own tokens with this.lexer.inline(text, tokens). The inline function will queue the token creation until after all block tokens are created.
  • Extensions tokenizer this object will include the lexer as a property. this.inlineTokens becomes this.lexer.inline.
  • Extensions renderer this object will include the parser as a property. this.parseInline becomes this.parser.parseInline.
  • tag and inlineText tokenizer function signatures have changed.

  • nptable tokenizer is removed and merged with table tokenizer.
  • table tokens header property changed to contain an array of objects for each header cell with text and tokens properties.
  • table tokens cells property changed to rows and is an array of rows where each row contains an array of objects for each cell with text and tokens properties.

v2 table token:

{
  "type": "table",
  "align": [null, null],
  "raw": "| a | b |\n|---|---|\n| 1 | 2 |\n",
  "header": ["a", "b"],
  "cells": [["1", "2"]],
  "tokens": {
    "header": [
      [{ "type": "text", "raw": "a", "text": "a" }],
      [{ "type": "text", "raw": "b", "text": "b" }]
    ],
    "cells": [[
      [{ "type": "text", "raw": "1", "text": "1" }],
      [{ "type": "text", "raw": "2", "text": "2" }]
    ]]
  }
}

v3 table token:

{
  "type": "table",
  "align": [null, null],
  "raw": "| a | b |\n|---|---|\n| 1 | 2 |\n",
  "header": [
    {
      "text": "a",
      "tokens": [{ "type": "text", "raw": "a", "text": "a" }]
    },
    {
      "text": "b",
      "tokens": [{ "type": "text", "raw": "b", "text": "b" }]
    }
  ],
  "rows": [
    {
      "text": "1",
      "tokens": [{ "type": "text", "raw": "1", "text": "1" }]
    },
    {
      "text": "2",
      "tokens": [{ "type": "text", "raw": "2", "text": "2" }]
    }
  ]
}

v2.1.3

Compare Source

Bug Fixes

v2.1.2

Compare Source

Bug Fixes

v2.1.1

Compare Source

Bug Fixes

v2.1.0

Compare Source

Features

v2.0.7

Compare Source

Bug Fixes

v2.0.6

Compare Source

Bug Fixes

v2.0.5

Compare Source

Bug Fixes

v2.0.4

Compare Source

Bug Fixes

v2.0.3

Compare Source

Bug Fixes

v2.0.2

Compare Source

Bug Fixes

v2.0.1

Compare Source

Bug Fixes

Configuration

📅 Schedule: "" (UTC).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Renovate will not automatically rebase this PR, because other commits have been found.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by WhiteSource Renovate. View repository job log here.

@renovate renovate bot requested a review from a team as a code owner January 14, 2022 23:30
@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 14, 2022

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 14, 2022

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 14, 2022

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 14, 2022

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 14, 2022

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 15, 2022

Deploy preview created for package "Web Components (Codesandbox Examples)":
https://webcomponents-codesandbox.s3-web.us-east.cloud-object-storage.appdomain.cloud/deploy-previews/8037/index.html

Built with commit: fa8868aa0deb436df06a59e2cadea82f63d8e511

@ibmdotcom-bot
Copy link
Contributor

ibmdotcom-bot commented Jan 15, 2022

Deploy preview created for package "React (Codesandbox Examples)":
https://react-codesandbox.s3-web.us-east.cloud-object-storage.appdomain.cloud/deploy-previews/8037/index.html

Built with commit: fa8868aa0deb436df06a59e2cadea82f63d8e511

@emyarod
Copy link
Member

emyarod commented Jan 18, 2022

it looks like the react unit tests are failing because it cannot find the marked package when importing. I think the reason why is because our files in @carbon/ibmdotcom-react are importing from the published @carbon/ibmdotcom-utilities, so the imports won't resolve properly until this is merged and published in a new release

@jeffchew
Copy link
Member

it looks like the react unit tests are failing because it cannot find the marked package when importing. I think the reason why is because our files in @carbon/ibmdotcom-react are importing from the published @carbon/ibmdotcom-utilities, so the imports won't resolve properly until this is merged and published in a new release

One way I can think of to get around this is to set a resolution in package.json in the root to resolve to v4. We can move the resolution out once everything is merged and published.

@emyarod emyarod force-pushed the renovate/npm-marked-vulnerability branch 2 times, most recently from ce48872 to 727c8ad Compare January 19, 2022 14:56
@emyarod
Copy link
Member

emyarod commented Jan 19, 2022

@jeffchew I'm not sure if setting the yarn resolutions would work here since the issue is in the currently published version of the utilities package which doesn't use the new import method for marked, unless I am misunderstanding

@emyarod emyarod force-pushed the renovate/npm-marked-vulnerability branch 6 times, most recently from 5342eb3 to 3c0be57 Compare January 21, 2022 15:48
@renovate renovate bot force-pushed the renovate/npm-marked-vulnerability branch 2 times, most recently from 2174b51 to e75bd11 Compare January 25, 2022 03:54
@emyarod emyarod force-pushed the renovate/npm-marked-vulnerability branch from e75bd11 to 2278c32 Compare January 25, 2022 15:37
@emyarod emyarod force-pushed the renovate/npm-marked-vulnerability branch from 2278c32 to 7d44d71 Compare January 26, 2022 21:32
@emyarod
Copy link
Member

emyarod commented Jan 27, 2022

snapshots should be fixed with the latest updates now, related #7935

Copy link
Member

@jeffchew jeffchew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@jeffchew jeffchew added the Ready to merge Label for the pull requests that are ready to merge label Jan 28, 2022
@kodiakhq kodiakhq bot merged commit 3f7bf20 into main Jan 28, 2022
@kodiakhq kodiakhq bot deleted the renovate/npm-marked-vulnerability branch January 28, 2022 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ready to merge Label for the pull requests that are ready to merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants