Hardcoded secrets
id: security.hardcoded-secrets🔗
KritischKostenlos
Gescannte Sprachen:All
Was sie findet
API keys, tokens, passwords, connection strings in source
Warum das wichtig ist
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
Was zu tun ist
Move this value to an environment variable and reference it via process.env.
Missing authentication
id: security.auth-missing-endpoints🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Route handler lacks authentication middleware, leaving endpoints unprotected.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Apply authentication middleware to this route handler. Use requireAuth, passport, JWT verification, or session-based auth.
SQL injection surface
id: security.sql-injection-surface🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaSQL
Was sie findet
Raw string concatenation in SQL queries
Warum das wichtig ist
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
Was zu tun ist
Use parameterised queries or an ORM instead of string interpolation. Never concatenate user input into SQL strings.
OS command injection surface
id: security.os-command-injection🔗
KritischKostenlos
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects OS command execution with potentially unsafe arguments
Warum das wichtig ist
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
Was zu tun ist
Avoid shell execution with interpolated strings. Use parameterised APIs (e.g. execFile with args array, subprocess.run with list args).
Dynamic file inclusion
id: security.file-inclusion🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects include/require with user-controlled or dynamic paths
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Avoid dynamic include/require paths from user input. Use an allow-list of permitted files and resolve paths against a trusted base directory.
Unsafe deserialization
id: security.unsafe-deserialization🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects deserialization of untrusted data with pickle, yaml.load, or marshal
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Never deserialize untrusted data. Use yaml.safe_load, JSON, or signed formats. Avoid pickle and marshal on external input.
Hardcoded passwords
id: security.hardcoded-passwords🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects password values assigned directly in source code
Warum das wichtig ist
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
Was zu tun ist
Store passwords in environment variables or a secrets manager. Never commit credentials to source code.
id: security.html-css-comments-secrets🔗
KritischPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Hardcoded secrets inside HTML or CSS comments and commented JSON/config snippets
Warum das wichtig ist
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
Was zu tun ist
Remove secrets from comments and sample config blocks. Move credentials to runtime environment variables or a secure secret manager.
Committed .env file
id: security.committed-env🔗
HochKostenlos
Gescannte Sprachen:All
Was sie findet
A .env file is tracked by Git, exposing configuration and potential secrets in version history.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Add .env to .gitignore. If the file is already tracked, use git rm --cached to untrack it without deleting, or rotate any exposed secrets.
Overly permissive CORS
id: security.cors-too-permissive🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJava
Was sie findet
CORS configuration uses a wildcard origin, allowing requests from any domain.
Warum das wichtig ist
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
Was zu tun ist
Restrict Access-Control-Allow-Origin to your specific frontend domains rather than using a wildcard.
Sensitive data in logs
id: security.sensitive-data-in-logs🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Logging statements may leak sensitive data such as credentials or PII.
Warum das wichtig ist
Improper logging and monitoring configurations can expose sensitive debugging details to attackers or fail to provide alert visibility during active service outages.
Was zu tun ist
Redact sensitive fields before logging. Use a logging library with automatic PII scrubbing or log only non-sensitive summary data.
XSS surface
id: security.xss-surface🔗
HochKostenlos
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects XSS-prone APIs such as innerHTML and document.write()
Warum das wichtig ist
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
Was zu tun ist
Use textContent, React children, or a sanitization library like DOMPurify instead of innerHTML or document.write().
Shell arbitrary evaluation
id: security.shell-arbitrary-evaluation🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Shell eval or source command uses an unquoted dynamic argument.
Warum das wichtig ist
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
Was zu tun ist
Avoid eval and source for dynamic input. If a shell command is required, validate against an allow-list and pass quoted, fixed arguments.
Unescaped shell path deletion
id: security.shell-unescaped-path-deletion🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
rm command uses an unquoted variable path that may expand unexpectedly.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Quote shell path variables and validate them before deletion. Prefer rm -rf -- "$TARGET_DIR" after checking the path is non-empty and under an expected base directory.
Open redirect
id: security.open-redirect🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects redirects that may use user-controlled URLs
Warum das wichtig ist
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
Was zu tun ist
Validate redirect targets against an allow-list of trusted domains. Never pass raw user input into Location headers.
Unsafe file upload
id: security.unsafe-file-upload🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects file uploads that use user-controlled destination paths
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Validate file type and extension server-side, generate random filenames, and store uploads outside the web root.
HTML inline unsafe script
id: security.html-inline-unsafe-script🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Inline HTML scripts and event handlers should not perform unsafe DOM writes or execute dynamic code
Warum das wichtig ist
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
Was zu tun ist
Replace unsafe inline DOM writes and dynamic code with safe DOM APIs, escaped text nodes, and validated event handling.
Weak key/token entropy
id: security.weak-key-entropy🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects low-entropy random generation (under 16 bytes / 128 bits) used for keys, tokens, or identifiers
Warum das wichtig ist
Low-entropy keys or tokens can be predicted or brute-forced by attackers, leading to bypass of authentication or cryptographic controls (CWE-326).
Was zu tun ist
Use at least randomBytes(16) (128 bits) for keys, tokens, and identifiers. For license keys, prefer randomBytes(16) or crypto.getRandomValues() with 16+ bytes.
Insecure API URL default
id: security.insecure-api-url-default🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects HTTP (non-HTTPS) default URLs for API endpoints in configuration code
Warum das wichtig ist
Using cleartext HTTP defaults for API endpoints exposes communication to man-in-the-middle (MITM) attacks, potentially leaking sensitive data or allowing traffic interception (CWE-319).
Was zu tun ist
Default all API URLs to HTTPS. Override via environment variable if needed for local development, but never default to cleartext HTTP for production endpoints.
Command injection via tainted data
id: security.taint-command-injection🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to a command execution sink without sanitisation.
Warum das wichtig ist
Command injection lets attackers execute arbitrary operating-system commands on your server. This can lead to full server compromise, data exfiltration, or ransomware deployment (CWE-78).
Was zu tun ist
Avoid shell execution with interpolated strings. Use parameterised APIs (e.g. execFile with args array).
Path traversal via tainted data
id: security.taint-path-traversal🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to a filesystem sink without path validation.
Warum das wichtig ist
Path traversal allows attackers to read or write files outside the intended directory, potentially exposing source code, configuration files, or secrets (CWE-22).
Was zu tun ist
Resolve paths against a trusted base directory, reject parent-segment sequences, and avoid passing raw user strings into fs APIs.
XXE-vulnerable XML parsing
id: security.xxe-surface🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
XML parser invoked with external entity expansion enabled (e.g. libxml noent: true), enabling XXE attacks.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Disable external entity expansion in the XML parser. Use a library that is XXE-safe by default.
Permissive grants
id: security.permissive-grants🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Granting extensive privileges (like GRANT ALL) to public or anonymous roles is insecure.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Restrict privileges by granting only necessary permissions (e.g. SELECT, INSERT) to specific, authorized roles rather than PUBLIC or anonymous roles.
Missing or weak row-level security
id: security.sql-rls-static🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
PostgreSQL tables containing private tenant data must enable and enforce Row-Level Security (RLS).
Warum das wichtig ist
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
Was zu tun ist
Enable Row-Level Security via ALTER TABLE ... ENABLE ROW LEVEL SECURITY and FORCE ROW LEVEL SECURITY, and define restrictive policies with user boundary checks.
Security definer function search path
id: security.sql-security-definer-search-path🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Functions defined as SECURITY DEFINER execute with privileges of the owner and must lock the search_path to prevent hijacking.
Warum das wichtig ist
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
Was zu tun ist
Add an explicit "SET search_path = public" or trusted schema when creating SECURITY DEFINER functions to lock execution context.
Missing RLS on sensitive tables (Pro)
id: security.sql-missing-rls🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
PostgreSQL tables containing private tenant data must enable and enforce Row-Level Security (RLS).
Warum das wichtig ist
Unsafe database interactions and weak permissions allow SQL injection or unauthorized data exposure, compromising data confidentiality and integrity.
Was zu tun ist
Define a policy with CREATE POLICY ... ON ... USING (...) to restrict data access to authorized users.
JWT allows algorithm "none"
id: security.jwt-alg-none🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
JWT verification does not restrict algorithms, allowing forged unsigned tokens via the "none" algorithm
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Always pass an explicit algorithms allowlist to jwt.verify() (e.g. { algorithms: ["HS256"] }). Never accept "none" as a valid algorithm.
Refresh token in localStorage
id: security.refresh-token-in-localstorage🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Refresh tokens or long-lived credentials stored in localStorage are vulnerable to theft via XSS
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Store refresh tokens in httpOnly, Secure, SameSite=Strict cookies — not localStorage or sessionStorage. XSS cannot read httpOnly cookies.
Path traversal surface
id: security.path-traversal🔗
HochKostenlos
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
File path constructed by concatenating user input, enabling directory traversal attacks.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Resolve and validate file paths against a base directory. Reject paths containing ../ or absolute paths from user input.
Unsafe innerHTML assignment
id: security.unsafe-innerhtml🔗
HochKostenlos
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Assignment to innerHTML can lead to XSS if user input is included.
Warum das wichtig ist
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
Was zu tun ist
Use textContent or sanitize HTML before assigning to innerHTML. Use a library like DOMPurify.
Untrusted deserialization
id: security.untrusted-deserialization🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Deserialization of user-controlled data without validation, enabling code execution attacks.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Validate and sanitise deserialized data. Prefer safe parsers with type schemas. Avoid pickle.loads on untrusted input.
XML external entity parsing
id: security.xxe-parsing🔗
HochPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
XML parser called without disabling external entity expansion, enabling XXE attacks.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Disable external entity expansion in the XML parser. Use a library that is XXE-safe by default.
Dangerous eval usage
id: security.dangerous-eval🔗
HochKostenlos
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects dangerous dynamic code execution such as eval(), exec(), and new Function()
Warum das wichtig ist
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
Was zu tun ist
Avoid eval(), exec(), and new Function(). Use safer alternatives like JSON.parse for data parsing, or refactor to eliminate dynamic code execution.
HTML missing CSP
id: security.html-missing-csp🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Full HTML pages should include a robust Content Security Policy or receive one from static-host headers
Warum das wichtig ist
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
Was zu tun ist
Add a strong Content Security Policy via the HTML head or static-host headers. Avoid unsafe wildcards and inline execution where possible.
id: security.html-static-host-headers🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Static site host config should supply route-wide security headers for browser pages
Warum das wichtig ist
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
Was zu tun ist
Configure route-wide security headers in the static host config, including CSP, Referrer-Policy, X-Content-Type-Options, frame protection, and Permissions-Policy.
HTML referrer leak
id: security.html-referrer-leak🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
target="_blank" anchors or forms without rel protection can leak the referrer and enable tabnabbing
Warum das wichtig ist
Weak HTTP headers, CORS policies, or referrer configurations expose the site to clickjacking, data exfiltration, and sensitive data leakage to third parties.
Was zu tun ist
Add rel="noopener noreferrer" to target="_blank" anchors and forms. Avoid opening untrusted destinations in a new tab without rel protection.
CSS insecure import
id: security.css-insecure-import🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
External CSS imports or URL loads over HTTP can leak content and enable network interception
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Load CSS and fonts over HTTPS only. Remove cleartext HTTP imports and URL loads from stylesheets.
HTML mixed content
id: security.html-mixed-content🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Page resources or embedded styles load over unencrypted HTTP instead of HTTPS
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Upgrade all embedded resource URLs to HTTPS. Avoid loading page assets or embedded styles over cleartext HTTP.
HTML external asset integrity
id: security.html-external-asset-integrity🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Third-party scripts and stylesheets should include subresource integrity and compatible crossorigin attributes
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Add integrity and crossorigin to third-party scripts and stylesheets, or self-host the asset.
id: security.html-insecure-form-action🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Forms submitting over cleartext or scheme-relative URLs can leak user input and bypass transport security
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Submit forms over HTTPS or to a same-origin relative endpoint. Avoid cleartext HTTP and scheme-relative action URLs for sensitive submissions.
HTML iframe sandbox
id: security.html-iframe-sandbox🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
External iframes should use restrictive sandboxing to limit script and origin access
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Add a restrictive sandbox attribute to third-party iframes. Avoid combining allow-scripts and allow-same-origin unless the content is fully trusted.
HTML unsafe embed
id: security.html-unsafe-embed🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
External object and embed elements should not load active plugin content without tight type restrictions
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Prefer sandboxed iframes or self-hosted assets. Avoid loading third-party plugin content with object or embed, and restrict MIME types to safe passive content where possible.
id: security.html-meta-redirect🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Short-delay meta refresh redirects can be used for phishing, open redirects, or policy bypasses
Warum das wichtig ist
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
Was zu tun ist
Replace meta refresh redirects with server-side redirects or validated client navigation. Avoid short-delay refreshes that point to external URLs or internal paths.
HTML base tag hijack
id: security.html-base-tag-hijack🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
External or mispositioned base tags can rewrite relative URLs and alter page navigation
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Remove external base tags or place a same-origin base URL inside <head>. Avoid base target="_blank" on untrusted pages.
HTML import map integrity
id: security.html-import-map-integrity🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Import maps should not redirect module specifiers to external origins without trust controls
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Keep import map entries on same-origin or relative URLs. Avoid mapping module specifiers to external CDNs unless you can trust and verify the source.
CSS data exfiltration
id: security.css-data-exfiltration🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Attribute selectors combined with external HTTP URLs can exfiltrate sensitive values from forms
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Remove attribute-selector rules that fetch external URLs. Keep sensitive form value matching and URL loads out of untrusted CSS.
CSS external font integrity
id: security.css-external-font-integrity🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
External CDN fonts loaded from @font-face can be supply-chain risks when self-hosting is not used
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Self-host font files or use a trusted local font source. Avoid loading fonts from public CDNs in production stylesheets.
Insecure random number generator
id: security.insecure-random🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects use of non-cryptographic random in security-sensitive contexts
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use a cryptographically secure random generator (e.g. crypto.getRandomValues() in JS, secrets module in Python, SecureRandom in Java, crypto/rand in Go).
Dynamic SQL column names
id: security.dynamic-sql-columns🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects template literal or string interpolation used to build SQL column names, which can allow injection if values come from user input
Warum das wichtig ist
Interpolating dynamic column names in SQL queries bypasses parameterized query protection, introducing SQL injection risks where attackers can manipulate database structures (CWE-89).
Was zu tun ist
Use a whitelist mapping from input keys to allowed column names. Never interpolate user-supplied strings into SQL column positions.
Weak email validation regex
id: security.weak-email-validation🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects overly permissive email validation regexes that accept invalid or unsafe inputs
Warum das wichtig ist
Overly permissive email validation patterns allow malformed, spoofed, or malicious inputs to bypass business rules, leading to account validation issues or data corruption (CWE-20).
Was zu tun ist
Use a stricter regex pattern (e.g. RFC 5322 subset) or a dedicated email validation library (e.g. Zod .email(), validator.js isEmail). At minimum, require a domain with a TLD of 2+ characters.
Structured idempotency key
id: security.idempotency-key-leak🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects idempotency keys containing structured identifiers (subscription IDs, license IDs) that leak business data to external providers
Warum das wichtig ist
Embedding structured internal identifiers in idempotency keys leaks business-sensitive data (such as subscription or license IDs) to payment providers or third-party log systems (CWE-200).
Was zu tun ist
Generate idempotency keys using randomUUID() or an HMAC derived from the operation key. Never embed subscription IDs, license IDs, or other business identifiers that external providers could log.
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to an XSS sink without sanitisation.
Warum das wichtig ist
An attacker who can control data sent to an XSS sink can inject malicious scripts that execute in victims' browsers. This can lead to session hijacking, credential theft, or defacement.
Was zu tun ist
Sanitise user input before rendering. Use encodeURIComponent for URLs, or a library like DOMPurify for HTML.
SQL injection via tainted data
id: security.taint-sql-injection🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to a SQL query sink without parameterisation.
Warum das wichtig ist
SQL injection allows attackers to read, modify, or delete database records. It is consistently one of the most common and damaging web vulnerabilities (CWE-89).
Was zu tun ist
Use parameterised queries or an ORM. Never concatenate user input into SQL strings.
Open redirect via tainted data
id: security.taint-open-redirect🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to a redirect sink without URL validation.
Warum das wichtig ist
Unvalidated redirects allow attackers to redirect users to malicious websites, facilitating phishing campaigns and social engineering attacks.
Was zu tun ist
Validate redirect targets against an allow-list of trusted domains. Never pass raw user input into redirect helpers or Location headers.
Prototype pollution via tainted data
id: security.taint-prototype-pollution🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to an object merge or assignment sink without sanitisation.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Validate and block __proto__, constructor, and prototype keys before merging objects. Use Object.create(null) for dictionaries.
Code execution via tainted data
id: security.taint-code-execution🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
User-controlled data flows to a dynamic code execution sink without sanitisation.
Warum das wichtig ist
Unsafe execution of dynamic strings as code or shell commands can lead to arbitrary code execution, letting attackers take complete control of the host machine (CWE-94).
Was zu tun ist
Avoid eval(), exec(), and new Function() with user input. Use safer alternatives like JSON.parse for data parsing.
Missing CSRF protection
id: security.missing-csrf-protection🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
State-changing route handler without visible CSRF token verification.
Warum das wichtig ist
Cross-Site Request Forgery (CSRF) allows malicious sites to perform actions on behalf of authenticated users without their consent, potentially leading to unauthorized state modifications.
Was zu tun ist
Add CSRF token verification to all state-changing endpoints. Use a CSRF middleware for your framework.
Weak session identifier
id: security.weak-session-id🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Session identifier derived from user-controlled or predictable input.
Warum das wichtig ist
Weak session identifiers or insecure cookies can be intercepted or predicted by attackers, leading to session hijacking and unauthorized account access.
Was zu tun ist
Generate session identifiers server-side with a cryptographically secure random source. Never accept client-supplied session IDs.
Rails mass assignment
id: security.rails-mass-assignment🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Active Record model created or updated with raw params hash, bypassing strong parameters.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use strong parameters with params.require(:model).permit(:attr1, :attr2) to whitelist allowed attributes.
Rails insecure session config
id: security.rails-insecure-session-config🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Session cookie is missing secure flags (secure, httponly, same_site).
Warum das wichtig ist
Weak session identifiers or insecure cookies can be intercepted or predicted by attackers, leading to session hijacking and unauthorized account access.
Was zu tun ist
Set secure: true, httponly: true, and same_site: :strict on session cookies in config/initializers/session_store.rb.
Unhedged unsafe blocks
id: security.rust-unsafe-blocks🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Usage of unsafe blocks without a preceding safety documentation comment.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Document every unsafe block with a preceding "// SAFETY: <explanation>" comment explaining why the invariants are satisfied.
id: security.missing-security-headers🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Application does not set HTTP security response headers (HSTS, X-Content-Type-Options, X-Frame-Options, Permissions-Policy)
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Add helmet() (Node.js) or equivalent security-header middleware. At minimum set Strict-Transport-Security, X-Content-Type-Options: nosniff, X-Frame-Options, and Permissions-Policy.
Unpinned GitHub Actions
id: security.gh-actions-unpinned🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
GitHub Actions workflow steps reference third-party actions by mutable tag rather than a full commit SHA
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Pin every third-party action to a full 40-character commit SHA, e.g. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683. Use a tool like Renovate or pin-github-action to automate this.
GraphQL introspection in production
id: security.graphql-introspection-prod🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
GraphQL server exposes introspection without disabling it for production environments
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Disable GraphQL introspection in production: set introspection: process.env.NODE_ENV !== "production" in Apollo Server, or use a validationRules plugin that blocks introspection queries.
GraphQL missing depth limit
id: security.graphql-no-depth-limit🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
GraphQL server has no query depth or complexity limiting, enabling denial-of-service via deeply nested queries
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Add query depth limiting with graphql-depth-limit or complexity analysis with graphql-query-complexity. Wire the validation rule into ApolloServer validationRules or the equivalent for your framework.
JWT issued without expiry
id: security.jwt-no-expiry🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
JWT tokens are signed without an expiry claim (exp / expiresIn), making them valid indefinitely
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Set a short expiry on all issued JWTs using expiresIn (jsonwebtoken), .setExpirationTime() (jose), or an "exp" claim in the payload (PyJWT). Use refresh tokens to extend sessions.
Broken cryptographic algorithm
id: security.broken-crypto-algorithm🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Use of a deprecated or broken encryption algorithm such as DES or RC4.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use AES-256-GCM or ChaCha20-Poly1305. Never use DES, RC4, or ECB mode.
HTTP method override
id: security.http-method-override🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
methodOverride middleware enabled, allowing clients to override HTTP methods via query parameters or headers.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Disable methodOverride or restrict it to trusted clients. Prefer standard HTTP methods.
HTTP URL without TLS
id: security.http-no-tls🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Hardcoded HTTP URL that should use HTTPS for transport security.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use HTTPS URLs. Configure HSTS and redirect HTTP to HTTPS at the server level.
Weak encryption mode
id: security.weak-encryption-mode🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Use of a raw cipher initialisation that may lack authentication (AEAD).
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use authenticated encryption (AES-256-GCM, ChaCha20-Poly1305). Avoid raw CBC/CTR without a MAC.
Weak hash algorithm
id: security.weak-hash-algorithm🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Use of a cryptographically weak hash function such as MD5 or SHA1.
Warum das wichtig ist
Failing to address this issue can lead to security vulnerabilities, operational failures, or data exposure, compromising the safety and reliability of your application.
Was zu tun ist
Use SHA-256 or stronger. For password hashing use bcrypt, scrypt, or Argon2.
Unsafe document.write usage
id: security.no-document-write🔗
MittelPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
Detects the use of document.write which can lead to XSS vulnerabilities
Warum das wichtig ist
Cross-site scripting (XSS) allows attackers to inject malicious client-side scripts. This can lead to session hijacking, cookie theft, or unauthorized actions on behalf of users (CWE-79).
Was zu tun ist
Avoid document.write(). Use DOM APIs like appendChild(), innerHTML with sanitization, or a templating system instead.
HTML javascript URI
id: security.html-javascript-uri🔗
NiedrigPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
javascript: URLs execute code directly from HTML attributes and can enable XSS-style execution
Warum das wichtig ist
Exposing secrets or environment configuration details in source code makes them accessible to unauthorized users and increases the threat surface of the infrastructure.
Was zu tun ist
Replace javascript: URLs with normal links or buttons and event handlers. Avoid direct script execution in HTML attributes.
Excessive GitHub Actions permissions
id: security.gh-actions-excessive-permissions🔗
NiedrigPro
Gescannte Sprachen:JSTSTSXPythonGoPHPRubyJavaRustBash
Was sie findet
GitHub Actions workflow grants overly broad or undeclared default permissions
Warum das wichtig ist
Demnächst - wir schreiben detaillierte Erklärungen für jede Prüfung.
Was zu tun ist
Add a top-level "permissions: {}" block and grant only the minimum scopes needed per job, e.g. "permissions: { contents: read }".