Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update safety to 3.2.1 #401

Closed
wants to merge 1 commit into from
Closed

Conversation

pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Jun 5, 2024

This PR updates safety from 2.1.1 to 3.2.1.

Changelog

3.2.1

- fix: include all templates in the manifest (529)
- fix: use available email verification claims (528)

3.2.0

- feat: add SAFETY_DB_DIR env var to the scan command (523)
- fix: update pyinstaller target (522)
- docs: added note on hiring and added careers page link (510)

3.1.0

- fix: ensure compatibility with Pydantic version 2.0 (509)
- feat: introduce --headless flag to enable an alternative login mechanism that bypasses the need for a local web server. (508)

3.0.1

- fix: add back the license legacy cmd (498)
- perf: unpin authlib and remove jwt

3.0.0

- Safety 3.0.0 is a significant update to Safety CLI from 2.x versions, including enhancements to core features, new capabilities, and breaking changes from 2.x.
- See our [Blog article announcing Safety CLI 3](https://safetycli.com/research/safety-cli-3-vulnerability-scanning-for-secure-python-development) for more details on Safety 3 and these changes
- See [Migrating from Safety 2.x to Safety CLI 3](https://docs.safetycli.com/safety-docs/safety-cli-3/migrating-from-safety-cli-2.x-to-safety-cli-3.x) for notes and steps to migrating from Safety 2 to Safety 3

Main updates
- Added scan command, which scans a project’s directory for all Python dependencies and includes many improvements over the `check` command, including automatic Python project scanning, native support for Poetry and Pipenv files, Python virtual environment folders, and more granular configuration options.
- Added auth commands, enabling new browser-based authentication of Safety CLI. 
- An updated safety policy file schema to support new scan and system-scan commands. This policy file schema is a breaking change from the policy schema used for `safety check`. To migrate a Safety 2.x policy, see  [Migrating from Safety 2.x to Safety CLI 3](https://docs.safetycli.com/safety-docs/safety-cli-3/migrating-from-safety-cli-2.x-to-safety-cli-3.x).
- Updated screen output to modern interactive interface, with new help interfaces.
- Updated to new JSON output structure to support new scan command, other ecosystems, and other security findings. 
- Added a supporting [safety-schemas project dependency](https://pypi.org/project/safety-schemas/), also published and maintained by Safety, which defines Safety vulnerability database file, Safety CLI policy file, and Safety CLI JSON output schemas as pydantic models, formalizing these into testable and versioned schemas.

New scan command:
- New scan command: scans a Python project directory for Python dependencies and security vulnerabilities. Safety scan replaces `safety check` with a more powerful and easier to use command. The scan command:
- Finds and scans Python dependency files and virtual environments inside the target directory without needing to specify file or environment locations.
- Adds native scanning and reporting for Poetry and Pipenv manifest files, and Python virtual environment folders.
- Adds configuration of scanning rules to; 
 -  exclude files and folders from the scan using Unix shell-style wildcards only
 - Include files to be scanned
 - Max folder depth setting
- Reporting configuration rules
 -  Reporting rules defining which types and specific vulnerabilities to include or ignore stay the same as safety 2.x, although now in a slightly different structure. 
- Failing rules
 - Adds ability to configure rules for when safety should return a non-zero (failing) exit code, which can be different from reporting rules under the `report` field.
- Auto-updating rules
 - Adds ability to easily update insecure package versions in pip requirements files.

Other new commands:
- Added auth command: manages Safety CLI’s authentication in development environments, allowing easy authentication via the browser.
 - auth login - adds ability to authenticate safety cli via the browser
 - auth register - adds ability to register for a Safety account via the CLI, and get scanning within minutes
 - auth status - 
 - auth logout - 
 - `safety check` command can still be used with the API key --key argument, and scan and system-scan commands should also be 
- Added configure command: configures safety cli using a config.ini file, either saved to the user settings or system settings. This can be used to configure safety’s authentication methods and global proxy details.
- Added system-scan command (beta): Adds the system-scan command, which scans a machine for Python files and environments, reporting these to screen output. system-scan is an experimental beta feature that can scan an entire drive or machine for Python dependency files and Python virtual environments, reporting on packages found and their associated security vulnerabilities.
- Added check-updates command: Check for version updates to Safety CLI, and supports screen and JSON format outputs. Can be used in organizations to test and rollout new version updates as recommended by Safety Cybersecurity.

New policy file schema for scan and system-scan commands
- New policy file schema to support safety scan and safety system-scan.
Adds scanning-settings root property, which contains settings to configure rules and settings for how safety traverses the directory and subdirectories being scanned, including “exclude” rules, “include” rules, the max directory depth to scan and which root directories safety system-scan should start from.
- Adds report root property, which defines which vulnerability findings safety should auto-ignore (exclude) in its reporting. Supports excluding vulnerability IDs manually, as well as vulnerability groups to ignore based on CVSS severity score. 
- Adds new fail-scan-with-exit-code root property, which defines when safety should exit with a failing exit code. This separates safety’s reporting rules from its failing exit code rules, which is a departure from Safety 2.x which had combined rulesets for these. Failing exit codes can be configured based on CVSS severity score.
- Note that the old `safety check` command still supports and relies on the policy schema from safety 2.3.5 and below, meaning no changes are required when migrating to safety 2.x to Safety 3.0.0 when only using the `safety check` command.

New global options and configurations
- Added global --stage option, to set the development lifecycle stage for the `scan` and `system-scan` commands. 
- Added global --key option, to set a Safety API key for any command, including scan, system-scan and check. 

Other
- Safety now requires Python>=3.7. Python 3.7 doesn't have active security support from the Python foundation, and we recommend upgrading to at least Python >= 3.8 whenever possible. Safety’s 3.0.0 Docker image can still be used to scan and secure all Python projects, regardless of Python version. Refer to our [Documentation](https://docs.safetycli.com) for details.
- Dropped support for the license command. This legacy command is being replaced by the scan command. Users relying on the license command should continue to use Safety 2.3.5 or 2.4.0b2 until Safety 3 adds license support in an upcoming 3.0.x release.
- Add deprecation notice to `safety check` command, since this is now replaced by `safety scan`, a more comprehensive scanning command. The check command will continue receiving maintenance support until June 2024.
- Add deprecation notice to `safety alert` command, which works in tandem with the `safety check` command. Safety alert functionality is replaced by [Safety Platform](https://safetycli.com/product/safety-platform). The alert command will continue receiving maintenance support until June 2024.
- `safety validate` will assume 3.0 policy file version by default.


Small updates/ bug fixes
- Fixes [a bug](https://github.com/pyupio/safety/issues/488) related to ignoring vulnerability IDs in Safety’s policy file.
- https://github.com/pyupio/safety/issues/480
- https://github.com/pyupio/safety/issues/478
- https://github.com/pyupio/safety/issues/455
- https://github.com/pyupio/safety/issues/447

2.4.0b2

- Removed the upper clause restriction for the packaging dependency

2.4.0b1

- Added support for coma separated ignore (--ignore=123,456) on top of existing --ignore=123 --ignore=456
- Added support for requirements per package. Safety can check, report, suggest, and apply remediations for unpinned requirements.
- Added support for unpinned requirements in the Safety GitHub action. This feature doesn't support old-version reports.
- Added support for HTML5 output and the ability to save the report as an HTML5 file.
- Started to use schema 2.0 of the PyUp vulnerability database.
- Fixed packaging dependency issue and their deprecation of LegacyVersion class.
- Narrowed down the allowed versions in the Safety dependencies.
- Added local announcements.
- This version makes changes in the JSON report, these aren't breaking changes, but these may need adjustment if you are ingesting the JSON report.
- Added ability to ignore unpinned requirements.

2.3.5

- Pinned packaging dependency to a compatible range.
- Pinned the CI actions to the runner image with Python 3.6 support.

2.3.4

- Removed LegacyVersion use; this fixes the issue with packaging 22.0.
- Fixed typos in the README.
- Added Python 3.11 to the classifiers in the setup.cfg.

2.3.3

- Fixed recursive requirements issue when an unpinned package is found.

2.3.2

- Fixed 423: Bare output includes extra line in non-screen output with no vulnerabilities.
- Fixed 422: ResourceWarning (unclosed socket) in safety v.2.3.1.
- Fixed telemetry data missing when the CLI mode is used.
- Fixed wrong database fetching when the KEY and the database arguments are used at the same time.
- Added `SAFETY_PURE_YAML` env var, used for cases that require pure Python in the YAML parser.

2.3.1

- Add `safety.alerts` module to setup.cfg

2.3.0

- Safety can now create GitHub PRs and Issues for vulnerabilities directly, with the new `safety alert` subcommand.
- Support for GitHub PR and Issue alerting has been added to the GitHub Action.

2.2.1

- Fixed the use of the SAFETY_COLOR environment variable
- Fixed bug in the case of vulnerabilities without a CVE linked
- Fixed GitHub version in the README

2.2.0

- Safety starts to use dparse to parse files, now Safety supports mainly Poetry and Pipenv lock files plus other files supported by dparse.
- Added logic for custom integrations like pipenv check.
- The --db flag is compatible remote sources too.
- Added more logging
- Upgrade dparse dependency to avoid a possible ReDos security issue
- Removed Travis and Appveyor, the CI/CD was migrated to GitHub Actions
Links

@pyup-bot pyup-bot added the enhancement New feature or request label Jun 5, 2024
@pyup-bot pyup-bot mentioned this pull request Jun 5, 2024
@pyup-bot
Copy link
Collaborator Author

Closing this in favor of #403

@pyup-bot pyup-bot closed this Jun 10, 2024
@benmaddison benmaddison deleted the pyup-update-safety-2.1.1-to-3.2.1 branch June 10, 2024 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants