Skip to content

Bootstrap — 5.1.3 Exploit

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl, { sanitize: true, // Default value; explicitly set to be safe allowList: { ...bootstrap.Tooltip.Default.allowList, // Only add trusted tags if absolutely needed } }) }) While 5.1.3 is not inherently vulnerable, later versions (5.2.x, 5.3.x) have introduced stricter defaults for data-bs-html attributes and improved JavaScript validation. Run:

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; Avoid using 'unsafe-inline' for scripts if possible; use nonces or hashes instead. Never insert user-generated text directly into data-bs-content or title attributes without using textContent or a sanitization library like DOMPurify. bootstrap 5.1.3 exploit

<a data-bs-toggle="modal" data-bs-target="#maliciousModal" href="javascript:alert('XSS')">Click</a> This is not an exploit of the framework; it is a failure to sanitize URLs. Bootstrap does not automatically evaluate javascript: URIs—that behavior depends on the browser and other event handlers. var tooltipTriggerList = []