barrierModel arity mismatch: "Expected 4, but was 3" on documented-correct 3-column rows (python-all, javascript-all)
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 55/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 領域
- security
調査の方向性
.github/codeql/extensions/.../models/log-injection.yml の失敗を、CLI 2.26.4 と 2.27.0 の bundle を使って再現することから始めます。ApiGraphModelsExtensions.qll を読み、その barrierModel シグネチャを、文書化されている3列形式および python-all/javascript-all pack と比較します。完了の条件は、ユーザー向けに有効な引数の個数を確認し、修正が pack、CLI の検証、ドキュメントのいずれに属するのかを特定することです。
索引モデルが issue の本文から書いたものです。
説明
Summary
CodeQL fatally errors when resolving barrierModel data extensions for codeql/python-all and codeql/javascript-all, on rows that exactly match the documented, correct format (and the format used identically by sourceModel/sinkModel, per github/codeql#21004).
Repro
.github/codeql/extensions/.../models/log-injection.yml:
extensions:
- addsTo:
pack: codeql/python-all
extensible: barrierModel
data:
- ["sciemo_one_client_base.safe_log", "Member[safe_log_value].ReturnValue", "log-injection"]
This is the exact format shown in the official docs (https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-python/, "Example: Taint barrier using the 'escape' function") and matches barrierModel(type, path, kind) as formally declared in the Ruby docs' reference section.
Error
A fatal error occurred: A tuple in a data extension for the extensible predicate 'barrierModel' has an incorrect number of columns. Expected 4, but was 3.
What we tried
Assuming a genuine 4-column requirement (the trailing column being QlBuiltins::ExtensionId, per ApiGraphModelsExtensions.qll), we tried supplying a literal 4th value ourselves. None satisfy validation — all fail with:
ERROR: In extension for codeql/python-all:barrierModel, row 1 is invalid. Found '"...", "...", "log-injection", <value>', which does not match the signature 'barrierModel(string type, string path, string kind, [int origin])'.
Tried for <value>:
"manual"(string, matching theprovenanceconvention used elsewhere in MaD, e.g. sourceModel/sinkModel)0(int, repeated across rows)- unique sequential ints per row (
1000,1001,1002)
All fail identically. Per github/codeql#21004, barrierModel's trailing param is QlBuiltins::ExtensionId madId, described as "the data extension row number" — auto-populated internally, never meant to be user-supplied (same as sinkModel/sourceModel, which only ever take 3 user columns). So there appears to be no valid literal a user can write to satisfy the 4-column requirement the arity check enforces.
Versions tried (same failure on both)
- CLI 2.27.0 (codeql-bundle-v2.27.0,
python-all7.2.5 /javascript-all2.10.1, via floatingcodeql-action@v4) - CLI 2.26.4 (codeql-bundle-v2.26.4,
javascript-all/javascript-queries2.4.4, viatools:pinned explicitly to the 2.26.4 bundle asset)
Both hit the identical Expected 4, but was 3 fatal error, and identical rejection of every literal 4th-column value tried.
Why this looks like a real bug, not user error
This is the same failure class as github/codeql-action#2706 (sourceModel arity mismatch, C#, "Expected 10, but was 9"), which was triaged as a genuine bug and fixed upstream, not a documentation/config issue on the reporter's side.
Impact
We currently work around this with continue-on-error: true on the analyze job, which means our repo has had no functioning CodeQL security scanning at all (all languages, not just the one with the custom model) since the analyze step fatally errors before any queries run.
Ask
- Confirm whether
barrierModelgenuinely requires a 4th user-supplied column at these CLI versions, and if so, document the correct literal value for it. - If it should only take 3 columns (matching the documented examples and
sourceModel/sinkModel's pattern), this looks like a packaging/version-skew bug between the compiled query pack and thepython-all/javascript-alllibrary pack.
- 主要言語
- CodeQL
- スター
- 10.1k
- フォーク
- 2.1k
- 平均マージ
- 2日 11時間
- マージ済み PR(30日)
- 129
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
github/codeql のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
-
C#: cs/simplifiable-boolean-expression false positive on Nullable<bool> compared with a literal オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
false-positive
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
false-positive
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
似ている issue
-
documentation help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
AXERA-TECH/ax-llm#75 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
gitbutlerapp/gitbutler#15998 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
sympozium-ai/sympozium#627 ·
-
clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:security impact:ux-friction issue-rating: 🦞 diamond lobster P2
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100