Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 4.95 KB

File metadata and controls

46 lines (37 loc) · 4.95 KB

Attack Surface Analysis for pallets/click

Description: Options with multiple=True can be specified repeatedly, accumulating values. Without limits imposed by the application using click, this can lead to resource exhaustion. click Contribution: click provides the multiple=True feature without inherent limits. The vulnerability arises when the application doesn't use click's callback or custom type features to limit input. Example: A command has a --file option (multiple=True) to process multiple files. An attacker provides --file thousands of times, causing the application to run out of memory. Impact: Denial of Service (DoS) due to memory exhaustion. Risk Severity: High. Mitigation Strategies: * Developer: Implement a custom callback function for the option (a click feature) that checks the length of the accumulated list and raises a click.BadParameter exception if it exceeds a reasonable limit. Alternatively, use a custom click type that enforces a maximum length. This leverages click's own mechanisms for safe handling. * User: (No direct mitigation, as this is an application-level vulnerability).

Description: click can read option defaults from environment variables. If the application doesn't validate these values, an attacker controlling the environment can inject malicious input. click Contribution: click provides the feature to load defaults from environment variables. The vulnerability is the lack of validation after click reads the value. Example: An option --admin-mode defaults to False but can be overridden by the APP_ADMIN_MODE environment variable. An attacker sets APP_ADMIN_MODE=True to gain unauthorized access. Impact: Privilege escalation, bypassing security checks, unauthorized access. Risk Severity: Critical (if it allows privilege escalation) to High (if it bypasses important security checks). Mitigation Strategies: * Developer: Validate values loaded from environment variables after click retrieves them, using the same rigorous checks as for command-line arguments. Consider using click's callback mechanism to perform this validation. If environment variable overrides are not essential, disable them. Clearly document which environment variables are used by click. * User: (If running in a shared environment) Be aware of the environment variables that the application uses (as documented by the developer, ideally) and ensure they are not set to malicious values.

Description: Custom callback functions associated with click options can contain vulnerabilities if they don't properly handle untrusted input. click Contribution: click provides the mechanism for defining callback functions, which become entry points for potentially malicious input. Example: A callback function for a --config-file option reads and executes the configuration file without proper sanitization or sandboxing (using standard Python security practices, not click-specific). An attacker provides a malicious configuration file that executes arbitrary code. Impact: Code execution, privilege escalation, data breaches. Risk Severity: Critical. Mitigation Strategies: * Developer: Treat click callback functions as entry points for untrusted input. Apply all standard security practices within the callback (input validation, output encoding, least privilege). Avoid executing code directly from user-provided input processed by the callback. The vulnerability exists within the callback code, but click is the mechanism that invokes it. * User: (Limited direct mitigation) Be cautious about the values provided to options with associated click callbacks.

Description: click allows to define default values for options. If these defaults are too permissive, an attacker might be able to trigger unintended actions. click Contribution: click provides the feature to set default values. Example: Command has option --delete-all-files with default value set to False. However, due to bug in application logic, default value is ignored and all files are deleted. Impact: Data loss, unintended actions. Risk Severity: High Mitigation Strategies: * Developer: Carefully review all default values. Ensure that defaults are secure and do not expose sensitive functionality without explicit user interaction. Consider using click's required=True for options that must be explicitly provided by the user. * User: Always explicitly set values for all options.