Skip to content

[demo] Inline CodeQL annotation on a changed line - #3

Open
owaldron wants to merge 14 commits into
mainfrom
demo/codeql-inline-annotation
Open

owaldron wants to merge 14 commits into
mainfrom
demo/codeql-inline-annotation

Conversation

@owaldron

Copy link
Copy Markdown
Owner

Demo, not for merge. Shows how a CodeQL custom-query finding appears inline on a pull request.

The branch is the CodeQL workflow rework with the EVP_* fixes, plus:

  • a TEST ONLY commit that trims pr.yml to just the CodeQL job (and skips push.yml for this branch), so no other CI runs;
  • a DEMO commit that removes one OQS_OPENSSL_GUARD in src/common/sha3/ossl_sha3.c.

Expected outcome: CodeQL custom queries fails with exactly one result, ossl_sha3.c:20, shown as an error annotation on that line under "Files changed".

🤖 Generated with Claude Code

Vishnu2707 and others added 14 commits October 16, 2026 12:42
Adds a custom CodeQL query (.github/codeql/openssl-return-check.ql)
that detects calls to OpenSSL EVP_* functions whose return value is
not guarded by the OQS_OPENSSL_GUARD macro. Integrates the query into
a new CodeQL workflow (.github/workflows/codeql.yml) that runs on
every PR and push to main.

The query was originally written by Trail of Bits during their audit
of liboqs and reported in issue open-quantum-safe#1867.

Closes open-quantum-safe#1867
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Addresses Scorecard Token-Permissions finding: security-events write
permission scoped to codeql job only, not workflow level.
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Replace inline queries: path with a codeql-config.yml config file.
The CodeQL init action requires local queries to be referenced via
a config file rather than a direct relative path in the queries field.
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
The CodeQL cpp extractor pre-finalize script crashes with exit code 134
when the trapCaches/cpp/tarballs directory does not exist on the runner.
Disabling TRAP caching avoids the crash.
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Replace config-file approach with inline queries field combining
security-and-quality suite with the custom EVP return check query,
as suggested by @baentsch. Remove codeql-config.yml.
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Adding upload: false to the analyze step prevents the SARIF conflict
with GitHub's default CodeQL setup which is enabled on this repo.
The query still runs and catches issues but does not upload results.
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Add bad example at .github/codeql/test/openssl-return-check-bad.c
to confirm the query catches unchecked EVP_* calls. Document
verification steps in CONTRIBUTING.md.

Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Signed-off-by: Vishnu Ajith <27vishnu07@gmail.com>
Address the review concerns from open-quantum-safe#2415:
- Do not upload results to code scanning, which rejects CodeQL results
  from other workflows while default setup is enabled. Instead, print
  each result as an error annotation and fail the job if there are any
- Run only liboqs's own queries, since the standard suite already runs
  via default setup.
- Add CodeQL unit tests for each query which run in a seperate job
- Analyse a full default build with OpenSSL used for AES, SHA2 and SHA3
- Flag only EVP_* calls whose return value is discarded, since there are
  other safe ways beyond OQS_OPENSSL_GUARD to check this.
- In pr.yml, depend on check-push-result rather than basic-checks and
  drop `security-events: write`, so the job can be run in forks.

The workflow currently reports 119 unchecked EVP_* calls in src/common.
These will be fixed separately.

Assisted-by: Claude:claude-opus-5.5
Signed-off-by: Owen Waldron <owen.waldron@uwaterloo.ca>
Assited-by: Claude:claude-opus-5.5
Signed-off-by: Owen Waldron <owen.waldron@uwaterloo.ca>
These were detected using the codeql workflow.

Signed-off-by: Owen Waldron <owen.waldron@uwaterloo.ca>
Temporary commit for the fork test run; to be dropped before review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Owen Waldron <owen.waldron@uwaterloo.ca>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Owen Waldron <owen.waldron@uwaterloo.ca>
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.

2 participants