Back to skill

Security audit

Bootstrap 5.3.8 Documentation Reference

Security checks for vulnerabilities and agentic risk

Overview

This is a read-only Bootstrap documentation lookup skill with no install scripts, credentials, persistence, or privileged actions.

Install only if you want a local Bootstrap 5.3.8 reference. Treat code snippets and CDN/npm examples as documentation to review before using in your own project, not commands the skill should run automatically.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (16)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 25)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 26)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 27)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 28)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 29)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 31)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 33)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 38)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 76)May include surrounding context.

md
| Component docs (button, card, modal, etc.) | Search `scripts/bootstrap-reference.json` by component name |

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · scripts/bootstrap-reference.json (reported line 125)May include surrounding context.

json
"slug": "components-modal",
    "title": "Modal",
    "category": "components",
    "content": "## How it works\n\nBefore getting started with Bootstrap’s modal component, be sure to read the following as our menu options have recently changed.\n\n- Modals are built with HTML, CSS, and JavaScript. They’re positioned over everything else in the document and remove scroll from the `<body>` so that modal content scrolls instead.\n- Clicking on the modal “backdrop” will automatically close the modal.\n- Bootstrap only supports one modal window at a time. Nested modals aren’t supported as we believe them to be poor user experiences.\n- Modals use `position: fixed`, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You’ll likely run into issues when nesting a `.modal` within another fixed element.\n- Once again, due to `position: fixed`, there are some caveats with using modals on mobile devices. [See our browser support docs]([[docsref:/getting-started/browsers-devices#modals-and-dropdowns-on-mobile]]) for details.\n- Due to how HTML5 defines its semantics, [the `autofocus` HTML attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autofocus) has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:\n\n```js\nconst myModal = document.getElementById('myModal')\nconst myInput = document.getElementById('myInput')\n\nmyModal.addEventListener('shown.bs.modal', () => {\n  myInput.focus()\n})\n```\n\n<Callout name=\"info-prefersreducedmotion\" />\n\nKeep reading for demos and usage guidelines.\n\n## Examples\n\n### Modal components\n\nBelow is a _static_ modal example (meaning its `position` and `display` have been overridden). Included are the modal header, modal body (required for `padding`), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever pos
...[truncated 27 chars]

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · scripts/bootstrap-reference.json (reported line 202)May include surrounding context.

json
"slug": "components-tooltips",
    "title": "Tooltips",
    "category": "components",
    "content": "## Overview\n\nThings to know when using the tooltip plugin:\n\n- Tooltips rely on the third party library [Popper](https://popper.js.org/docs/v2/) for positioning. You must include [popper.min.js]([[config:cdn.popper]]) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper.\n- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**.\n- Tooltips with zero-length titles are never displayed.\n- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc).\n- Triggering tooltips on hidden elements will not work.\n- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element.\n- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior.\n- Tooltips must be hidden before their corresponding elements have been removed from the DOM.\n- Tooltips can be triggered thanks to an element inside a shadow DOM.\n\nGot all that? Great, let’s see how they work with some examples.\n\n<Callout name=\"info-sanitizer\" />\n\n<Callout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Enable tooltips\n\nAs mentioned above, you must initialize tooltips before they can be used. One way to initialize all tooltips on a page would be to select them by their `data-bs-toggle` attribute, like so:\n\n```js\nconst tooltipTriggerList = document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\nconst tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))\n```\n\n### Tooltips on links\n\nHover over the links below to see tooltips:\n\n<Example addStackblitzJs class=\"tooltip-demo\" code={`<p class=\"muted\">Placeholder text to demonstrate some <a href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Default t
...[truncated 27 chars]

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · scripts/bootstrap-reference.json (reported line 272)May include surrounding context.

json
"slug": "customize-optimize",
    "title": "Optimize",
    "category": "customize",
    "content": "## Lean Sass imports\n\nWhen using Sass in your asset pipeline, make sure you optimize Bootstrap by only `@import`ing the components you need. Your largest optimizations will likely come from the `Layout & Components` section of our `bootstrap.scss`.\n\n<ScssDocs name=\"import-stack\" file=\"scss/bootstrap.scss\" />\n\n\nIf you’re not using a component, comment it out or delete it entirely. For example, if you’re not using the carousel, remove that import to save some file size in your compiled CSS. Keep in mind there are some dependencies across Sass imports that may make it more difficult to omit a file.\n\n## Lean JavaScript\n\nBootstrap’s JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Popper) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you’re customizing via Sass, be sure to remove related JavaScript.\n\nFor instance, assuming you’re using your own JavaScript bundler like Webpack, Parcel, or Vite, you’d only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript:\n\n```js\n// Import just what we need\n\n// import 'bootstrap/js/dist/alert';\n// import 'bootstrap/js/dist/button';\n// import 'bootstrap/js/dist/carousel';\n// import 'bootstrap/js/dist/collapse';\n// import 'bootstrap/js/dist/dropdown';\nimport 'bootstrap/js/dist/modal';\n// import 'bootstrap/js/dist/offcanvas';\n// import 'bootstrap/js/dist/popover';\n// import 'bootstrap/js/dist/scrollspy';\n// import 'bootstrap/js/dist/tab';\n// import 'bootstrap/js/dist/toast';\n// import 'bootstrap/js/dist/tooltip';\n```\n\nThis way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing dropdowns, tooltips or popovers, be sure to list the Popper dependen
...[truncated 26 chars]

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest describes a Bootstrap documentation reference skill for syntax/class lookup, which suggests a passive reference corpus. However, multiple entries in this JSON include MDX imports and executable expressions such as import { getData } from '@libs/data' and mapped rendering logic, meaning the dataset carries code-capable content instead of being strictly static reference text.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · scripts/bootstrap-reference.json (reported line 181)May include surrounding context.

json
"slug": "components-scrollspy",
    "title": "Scrollspy",
    "category": "components",
    "content": "## How it works\n\nScrollspy toggles the `.active` class on anchor (`<a>`) elements when the element with the `id` referenced by the anchor’s `href` is scrolled into view. Scrollspy is best used in conjunction with a Bootstrap [nav component]([[docsref:/components/navs-tabs]]) or [list group]([[docsref:/components/list-group]]), but it will also work with any anchor elements in the current page. Here’s how it works.\n\n- To start, scrollspy requires two things: a navigation, list group, or a simple set of links, plus a scrollable container. The scrollable container can be the `<body>` or a custom element with a set `height` and `overflow-y: scroll`.\n\n- On the scrollable container, add `data-bs-spy=\"scroll\"` and `data-bs-target=\"#navId\"` where `navId` is the unique `id` of the associated navigation. If there is no focusable element inside the element, be sure to also include a `tabindex=\"0\"` to ensure keyboard access.\n\n- As you scroll the “spied” container, an `.active` class is added and removed from anchor links within the associated navigation. Links must have resolvable `id` targets, otherwise they’re ignored. For example, a `<a href=\"#home\">home</a>` must correspond to something in the DOM like `<div id=\"home\"></div>`\n\n- Target elements that are not visible will be ignored. See the [Non-visible elements](#non-visible-elements) section below.\n\n## Examples\n\n### Navbar\n\nScroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.\n\n<Example showMarkup={false} code={`<nav id=\"navbar-example2\" class=\"navbar bg-body-tertiary px-3 mb-3 rounded-2\">\n    <a class=\"navbar-brand\" href=\"#\">Navbar</a>\n    <ul class=\"nav nav-pills\">\n      <li class=\"nav-item\">\n        <a class=\"nav-link\" href=\"#scrollspyHeading1\">First</a>\n      </li>\n      <li clas
...[truncated 27 chars]

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The manifest says the skill is 'not a coding tutor — only a reference lookup', but this dataset includes full inline <script> examples within documentation content. While examples are normal in Bootstrap docs, packaging executable script blocks inside the reference corpus gives the skill code-oriented capability that is not strictly necessary for a lookup-only reference implementation.

Content

No source excerpt is available for this finding.