Skip to content

Spectacle: Update dependencies to remediate trim vulnerability #1328

Description

@Burnett2k

This is a complicated topic, so I will do my best to summarize all of the issues at play here. Primarily, this is on our radar because dependabot alerted us that sub dependencies reference a vulnerable package of trim. Unfortunately, there is not a clear or easy upgrade path to make this happen. Additionally, it's somewhat debatable whether or not this vulnerability should be considered as high priority as dependabot claims as it's a simple DoS regex. Since this is a presentation library, there's not much Denial of Service things you can do other than mess up your own decks which you can already do anyways ;)

Anyways, to get us off of trim completely, here's what I think we need to do. I might have missed a few things.

upgrade mxs-js

  1. dependabot warned of an issue within trim
  2. We don’t directly use trim, but sub dependencies do. All instances of the vulnerable trim version come from remark-parse@8.0.3
    1. mdx-js/mdx (used in spectacle mdx loader) ⇒ Remark-parse ⇒ trim
      1. will need to upgrade to v2 to get away from the trim dependency
      2. new version is ESM and will potentially require some re-work
      3. Recommended that we release this as a major version upgrade
    2. docusaurus/core (used for the documentation website) ⇒ remark-parse ⇒ trim
    3. remark-parse(from package.json within spectacle) ⇒ trim
      1. This can be fixed relatively easily by going to v9
      2. The notes make it seem as if this is not a big change ,no changes to the actual api from what I can tell
  3. to fix the trim issue, mdx-js and remark-parse need major upgrades. Upgrading mdx-js will likely give us access to newer and better markdown parsing, so we would get some benefit from doing that anyways.

relevant docs:

output of pnpm why (excluding the dev-dependency docusaurus)

❯ pnpm why trim --filter '!@docusaurus' -P

../packages/create-spectacle             |  WARN  The field "resolutions" was found in /Users/sawyerburnett/git-repos/formidable/spectacle/packages/create-spectacle/package.json. This will not take effect. You should configure "resolutions" at the root of the workspace instead.
No projects matched the filters "@docusaurus" in "/Users/sawyerburnett/git-repos/formidable/spectacle"
Legend: production dependency, optional only, dev only

spectacle-example-js /Users/sawyerburnett/git-repos/formidable/spectacle/examples/js

dependencies:
spectacle link:../../packages/spectacle
└─┬ remark-parse 8.0.3
  └── trim 0.0.1

spectacle-example-md /Users/sawyerburnett/git-repos/formidable/spectacle/examples/md

dependencies:
spectacle link:../../packages/spectacle
└─┬ remark-parse 8.0.3
  └── trim 0.0.1

spectacle-example-mdx /Users/sawyerburnett/git-repos/formidable/spectacle/examples/mdx

dependencies:
spectacle link:../../packages/spectacle
└─┬ remark-parse 8.0.3
  └── trim 0.0.1

spectacle-example-ts /Users/sawyerburnett/git-repos/formidable/spectacle/examples/typescript

dependencies:
spectacle link:../../packages/spectacle
└─┬ remark-parse 8.0.3
  └── trim 0.0.1

spectacle@10.1.7 /Users/sawyerburnett/git-repos/formidable/spectacle/packages/spectacle

dependencies:
remark-parse 8.0.3
└── trim 0.0.1

spectacle-mdx-loader@0.1.1 /Users/sawyerburnett/git-repos/formidable/spectacle/packages/spectacle-mdx-loader

dependencies:
@mdx-js/mdx 1.6.22
├─┬ remark-mdx 1.6.22
│ └─┬ remark-parse 8.0.3
│   └── trim 0.0.1
└─┬ remark-parse 8.0.3
  └── trim 0.0.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions