• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IBM / unitxt / 41817116053
78%

Build:
DEFAULT BRANCH: main
Ran 04 Nov 2026 10:57AM UTC
Jobs 1
Files 64
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Nov 2026 10:52AM UTC coverage: 78.369% (+0.04%) from 78.334%
41817116053

push

github

web-flow
Security: Pass the validated name onward in metrics service (#cs-12, #cs-13, #cs-14, #cs-18) (#1995)

Remediates the 4 py/path-injection CodeQL alerts (HIGH, CWE-22) still open after
the previous fix, reported in the IBM OSPO security notification (#1994):
cs-12, cs-13, cs-14 (src/unitxt/artifact.py:238,240) and cs-18
(src/unitxt/utils.py:222).

The earlier fix (#1993) blocked the attack at runtime but left the alerts open,
and the alerts were right to stay open. It validated a derived value and then
passed the original one on:

    requested_name, _ = separate_inside_and_outside_square_brackets(metric_name)
    if not is_name_legal_for_catalog(requested_name):
        raise HTTPException(status_code=400, ...)
    ...
    metric = ArtifactFetcherMixin.get_artifact(metric_name)   # <- raw value

Checking requested_name says nothing about metric_name, so nothing about the
value that actually reached the loader. It happened to be safe only because the
two strings agreed on the part that mattered -- a property no check enforced and
any later edit could break. CodeQL reported it as unsanitized because, as
dataflow, it is. The taint path in the current SARIF is unchanged from before
the fix:

  service/metrics/main.py:69,100  metric_name (FastAPI path parameter)
  operators.py:1190-1192          fetch_artifact(artifact_identifier)
  artifact.py:546,562-563         fetch_artifact(artifact_rep)
  artifact.py:238,240             open(path)            <- cs-12, cs-13, cs-14
  utils.py:203-204,221-222        open(path)            <- cs-18

cs-18 is a fresh alert raised against the fix commit itself, replacing cs-15 and
cs-16 at the same sink: the flow survived, only its line numbers moved.

The fix makes the sanitization real rather than incidental:

1. artifact.py -- new sanitize_catalog_identifier().

   Validates a reference as a catalog name and returns the name it validated,
   rebuilt from its checked segments, plus the bracketed overrides already
   parse... (continued)

2793 of 4026 branches covered (69.37%)

Branch coverage included in aggregate %.

10996 of 13569 relevant lines covered (81.04%)

0.81 hits per line

Coverage Regressions

Lines Coverage ∆ File
94
84.43
0.06% unitxt/operators.py
30
90.64
0.03% unitxt/artifact.py
Jobs
ID Job ID Ran Files Coverage
1 41817116053.1 04 Nov 2026 10:57AM UTC 64
78.37
GitHub Action Run
Source Files on build 41817116053
  • Tree
  • List 64
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #41817116053
  • 603f1c5c on github
  • Prev Build on main (#41446132797)
  • Next Build on main (#42386153629)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc