Sanchaga/bottestzscaler46 - #47
Conversation
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.
|
Merging this PR will release 3.0.5 (2026-08-04)Connector release changes
|
|
Issue: pre-commit pipeline job failed Pipeline: failed job Code reference: 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. |
| 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) |
There was a problem hiding this comment.
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.
Features
List any features you're adding to this app (e.g. new actions, parameters, auth methods, etc.)
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:Other information
Please refer to our Contribution Guide for any questions on submitting a pull request.
Thanks for contributing!