Skip to content

Release 1.3.1: offline Kerberos evidence audit - #54

Open
netanelcyber wants to merge 1 commit into
claude/lua-nmap-cve-checker-fabcqmfrom
release/kerberos-evidence-1.3.1
Open

netanelcyber wants to merge 1 commit into
claude/lua-nmap-cve-checker-fabcqmfrom
release/kerberos-evidence-1.3.1

Conversation

@netanelcyber

@netanelcyber netanelcyber commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Scan logs can report successful execution despite application errors, and unreachable Kerberos services cannot support a non-vulnerable verdict. This release adds an offline review route that makes those limits explicit.

Changes:

  • Add adpentest kerberos-audit for supplied scan logs/JSON, directory exports, and Windows Security event XML/JSON.
  • Evaluate 14 distinct predicates with PASS, FAIL, REVIEW, and NOT_EVALUATED statuses, explicit evaluation counts, and no raw credentials or ticket material in the output.
  • Restore the installed console entry point through lazy routing; the audit uses the standard library and does not import the scanning core, contact targets, authenticate, or request tickets.
  • Require evidence and a known predicate before assigning a Kerberos catalog verdict.
  • Include synthetic examples, documentation, and 35 regression tests; package the example and guide in the source distribution.
  • Prepare version 1.3.1 on the exact package source published as 1.3.0, preserving its existing modules and Lua/NSE resources.
  • Gate publication on offline regression tests, distribution checks, and an installed-wheel smoke test. Trigger this release from the dedicated release/kerberos-evidence-1.3.1 branch, using the existing PyPI secret names or configured Trusted Publisher.

Validation:

  • 35/35 new regression tests pass, including network/subprocess guards and a dependency-free installed-wheel audit.
  • Wheel and source archive build successfully and pass twine check; installed legacy CLI help works.
  • Full suite: 68 passed, 2 failed. Both failures reproduce on unchanged base commit 054311b: TestExecuteAdTool.test_execute_ad_tool_timeout and TestLuaNmapChecker.test_run_cve_check_timeout.
  • The baseline's 16 packaged source/resource files match the published 1.3.0 source archive byte for byte.

The generated scanning core is unchanged. User-supplied logs are not included.

Publication completed:

  • adpentest 1.3.1 on PyPI was published by workflow run 34861896374.
  • The downloaded PyPI wheel's SHA-256 is acf542926b4a6e51141b430639f1d037b06d49760cd9235aa083a2c2c5fbfb09; all 18 packaged source/resource files match commit d6ec1be008462731b63a4f5b6d54c2dc4b773768.
  • Push CI passed on Ubuntu and Windows, including the new regression suite and the existing dry-run check.

Add 14 evidence checks, conservative verdicts, lazy CLI routing, documentation, and 35 regression tests. Preserve the published 1.3.0 package sources and resources. Verify built distributions before publishing.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T15:34:05.755885Z d6ec1be PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6ec1be008

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


- name: Publish to PyPI
if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.pypi_environment == 'pypi')
if: github.event_name == 'push' || github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.pypi_environment == 'pypi')

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Limit the fixed-version upload to one trigger

A push to release/kerberos-evidence-1.3.1 already runs this production upload with version 1.3.1, but publishing the corresponding GitHub release—or pushing another commit to that branch—runs the same upload again. Because PyPI distribution filenames cannot be replaced and skip-existing is not enabled, the later workflow fails with the repository guide's documented “Filename already exists” error. Use a single publication trigger or explicitly make duplicate uploads idempotent.

Useful? React with 👍 / 👎.

checks = [
_check(
"KERB-SCAN-RESULT-INTEGRITY",
"FAIL" if contradictions else "PASS",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep empty scan checks unevaluated

When execution.results is empty—which the accepted schema permits—this unconditional fallback marks scan integrity as PASS, and the negative-evidence check immediately below also becomes PASS. The resulting summary therefore reports two evaluated, passing checks despite having no tool-result evidence, contradicting the audit's stated rule that missing evidence is not a pass and making an incomplete report appear partially validated. Return NOT_EVALUATED for these checks when rows is empty.

Useful? React with 👍 / 👎.

Comment thread adpentest/__init__.py
@@ -1 +1,8 @@
__version__ = "1.3.0"
__version__ = "1.3.1"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Synchronize the core version constant

This release updates the package's public version to 1.3.1, but adpentest/core.py still exports __version__ = "1.3.0". Consumers that historically import the scanner module and inspect adpentest.core.__version__ therefore receive a version that disagrees with both adpentest.__version__ and the installed distribution metadata. Update the remaining constant or derive it from the package-level version so all public version checks agree.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant