Skip to content

Sanchaga/bottestzscaler46 - #47

Open
sanchaga-splunk wants to merge 12 commits into
mainfrom
sanchaga/bottestzscaler46
Open

Sanchaga/bottestzscaler46#47
sanchaga-splunk wants to merge 12 commits into
mainfrom
sanchaga/bottestzscaler46

Conversation

@sanchaga-splunk

Copy link
Copy Markdown

Features

List any features you're adding to this app (e.g. new actions, parameters, auth methods, etc.)

  • THIS IS A BOT TEST

Bug Fixes

Describe any bugs you've fixed in this app, and how they were fixed

Manual Documentation

Have you made any changes that should be documented in manual_readme_content.md?

The following changes require documentation in manual_readme_content.md:

  • New, updated, or removed REST handlers
  • New, updated, or removed authentication methods, especially complex methods like OAuth
  • Compatibility considerations with respect to deployment types (e.g. actions that cannot be run on cloud or an automation broker)
  • I have verified that manual documentation has been updated where appropriate

Other information


Please refer to our Contribution Guide for any questions on submitting a pull request.

Thanks for contributing!

phantom-jacob and others added 12 commits August 4, 2026 07:52
Update Ruff, djLint, and dev-cicd-tools to the current configured versions.

The Docker-backed baseline passed every hook except the release-notes hook, which rejects the intentionally empty unreleased file before functional work is added. Tracks PAPP-38310.

Written by Codex.
Refuse denylist additions that the ZIA allowlist would override and report lookup entries as blocked only when they are effectively denied.

Tracks PSAAS-32519 (VULN-95242, FS-4082). Source: https://help.zscaler.com/zia/adding-urls-denylist

Written by Codex.
Fetch the user after the group lookup and compare embedded memberships by ID before sending the full user update required by the ZIA API.

Tracks PSAAS-33768 (VULN-100507, FS-6813). Source: https://help.zscaler.com/zia/user-management

Written by Codex.
Convert non-ASCII hostname labels with IDNA2008 and UTS-46 before block, unblock, allow, unallow, and lookup requests reach ZIA.

Tracks PSAAS-33816 (VULN-100556, FS-6861). Sources: https://help.zscaler.com/legacy-apis/configuring-url-categories-using-api and https://github.com/kjd/idna

Written by Codex.
Send only requested URL and IP list deltas while retaining the custom-category identity, super-category, and keyword fields required by the ZIA API.

Tracks PSAAS-33898 and PSAAS-35091 (VULN-100638, VULN-103712; FS-6943, FS-8645). Source: https://help.zscaler.com/legacy-apis/configuring-url-categories-using-api

Written by Codex.
Pass search and pagination values through the Requests query-parameter API so reserved characters cannot alter the authenticated departments request.

Tracks PSAAS-33954 (VULN-100696, FS-6999). Source: https://requests.readthedocs.io/en/latest/user/quickstart/

Written by Codex.
Handle a successful authentication response without Set-Cookie as a controlled action error instead of indexing the optional header and raising.

Tracks PSAAS-34202 (VULN-101726, FS-7710). Source: https://requests.readthedocs.io/en/latest/user/quickstart/

Written by Codex.
Record entries added by the current connector asset and refuse unblock or unallow requests that would remove only entries created by another tenant writer.

Tracks PSAAS-34297 and PSAAS-34786 (VULN-101821, VULN-102310; FS-7805, FS-8293). Source: https://help.zscaler.com/zia/security-policy-settings

Written by Codex.
Reject scalar success bodies before handlers consume them and handle missing or malformed Retry-After JSON without raising from the shared REST helper.

Tracks PSAAS-34869 (VULN-102393, FS-8376). Source: https://requests.readthedocs.io/en/latest/user/quickstart/

Written by Codex.
Return the original failed status whenever the ZIA Retry-After value cannot be parsed so arbitrary response text cannot become a truthy connector status.

Tracks PSAAS-35035 (VULN-103656, FS-8589). Source: https://help.zscaler.com/legacy-apis/understanding-rate-limiting

Written by Codex.
Let URL-category updates and user pagination inherit the shared 30-second timeout instead of explicitly disabling client-side recovery.

Tracks PSAAS-35134 (VULN-104261, FS-9011). Source: https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts

Written by Codex.
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Merging this PR will release 3.0.5 with the following release notes:

3.0.5 (2026-08-04)

Connector release changes

  • Block and lookup actions now account for ZIA allowlist entries that override the advanced-threat denylist.
  • Group membership updates now fetch the user immediately before writing and compare existing memberships by group ID.
  • URL list actions now convert internationalized hostnames to IDNA2008 A-labels before sending them to ZIA.
  • URL category actions now use incremental list updates that preserve concurrent entries and existing keyword configuration.
  • The get departments action now encodes its search and pagination query parameters through the HTTP client.
  • Authentication now returns a controlled error when the ZIA response omits its required session cookie.
  • Unblock and unallow actions now remove only shared-list entries recorded as added by the current connector asset.
  • Unexpected scalar JSON and malformed rate-limit response bodies now return controlled action errors.
  • Unparseable Retry-After values now preserve the original rate-limit failure instead of being treated as success.
  • URL category updates and user listing now inherit the connector's finite request timeout.

@soar-connectors-pr-review-bot

Copy link
Copy Markdown

Issue: pre-commit pipeline job failed pre-commit concluded failure. Failed step(s): Pre-commit. Log excerpt: 2026-08-04T19:16:09.1474127Z [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. / 2026-08-04T19:16:09.6462018Z [INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit. / 2026-08-04T19:16:11.4801993Z [INFO] Initializing environment for https://github.com/hukkin/mdformat. / 2026-08-04T19:16:12.1132660Z [INFO] Initializing environment for https://github.com/returntocorp/semgrep.

Pipeline: failed job

Code reference: GitHub Actions job pre-commit``

Impact: This review job runs after the connector pipeline, so a failed required pipeline job blocks a clean merge signal even if the code review also finds issues.

How to fix: Apply the reported ruff lint or formatting fix at the named file/line, then rerun pre-commit.

Comment thread zscaler_connector.py
f"Endpoint(s) {allowlisted} are on the ZIA allowlist, which overrides the denylist. Remove them from the allowlist first.",
)

filtered_endpoints, skipped_foreign = self._filter_owned_removals(action_result, "blocklist", filtered_endpoints, action)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue: New skipped_foreign summary field emitted by list-mutation actions is not declared in zscaler.json The diff adds _filter_owned_removals which returns a skipped_foreign count that is then passed into the action summary for allow_ip, allow_url, block_ip, block_url, unallow_ip, unallow_url, unblock_ip, and unblock_url. The sdk_review_inventory confirms those actions only declare action_result.summary.ignored and action_result.summary.updated as output paths in zscaler.json. skipped_foreign is absent from all eight action output sections.

Code reference: _filter_owned_removals / _amend_allowlist / _amend_denylist

Current line: filtered_endpoints, skipped_foreign = self._filter_owned_removals(action_result, "blocklist", filtered_endpoints, action)

Changed behavior: + summary["skipped_foreign"] = foreign (new summary key set via _filter_owned_removals result)

Failure scenario: trigger: Any REMOVE_FROM_LIST call where at least one entry was added by a different asset; path: allow_ip/block_ip/unallow_ip/unblock_ip/allow_url/block_url/unallow_url/unblock_url → _amend_allowlist/_amend_denylist → _filter_owned_removals → set_summary({'skipped_foreign': N}); failure: SOAR result view and playbook editor do not expose action_result.summary.skipped_foreign; downstream playbooks cannot reference it by name in conditions or downstream actions.

Impact: Undeclared summary fields are invisible to the SOAR playbook editor schema and cannot be used in playbook conditions; operators will not know the field exists.

How to fix: Add { "data_path": "action_result.summary.skipped_foreign", "data_type": "numeric", "example_values": [0] } to the output sections of the allow ip, allow url, block ip, block url, unallow ip, unallow url, unblock ip, and unblock url actions in zscaler.json.

@soar-connectors-pr-review-bot soar-connectors-pr-review-bot Bot added the ai-reviewed Reviewed by the agentic PR review bot label Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-reviewed Reviewed by the agentic PR review bot splunk-supported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants