Open-source security posture of the data/ML stack (weekly)
Weekly security-health snapshot of a curated ~138-repository data/ML open-source universe (ML frameworks, LLM tooling, data processing, viz, orchestration, MLOps, serving, vector DBs, ...), from the official keyless OpenSSF Scorecard REST API (CDLA-Permissive-2.0, attribution required). Each repo is deduplicated on its canonical owner/name identity and carries its curated category + criticality tier (1 foundational .. 3 niche), the upstream 0-10 overall score, the scan date, and a 12-check security panel (Code-Review, Maintained, Branch-Protection, Token-Permissions, Signed-Releases, Binary-Artifacts, Dependency-Update-Tool, Vulnerabilities, Dangerous-Workflow, Pinned-Dependencies, Packaging, Fuzzing) where upstream -1 (inconclusive) becomes an honest null. A documented 0-100 security_score = 100 * mean(conclusive checks) / 10 is ranked as security_rank (ties: upstream overall desc, missing last, then repo asc) and bucketed into security_grade A (>= 80), B (>= 65), C (>= 50), D (>= 35), F (< 35). weakest_check names the lowest conclusive check (the highest-leverage fix); repos that 404, are unscanned, or have fewer than 4 conclusive checks are excluded. Week-granular as-of stamping makes same-week re-runs hash-identical. Columns: snapshot week, fetch timestamp, repo, source URL, category, criticality, overall score, scan date, 12 check scores, conclusive-check count, security score/grade/rank, weakest check + score. Primary key: (snapshot_week, repo). Cadence: weekly. Nullability: individual check columns null when Scorecard reports inconclusive (-1); weakest_check_score null only when no conclusive check exists (row excluded). Caveats: only projects scanned by Scorecard appear — the universe is curated, not an exhaustive registry; a Scorecard rescan later in the week can change snapshot content; the composite is an unweighted mean of conclusive checks, a comparison heuristic, not a risk model. Security scores, grades and the ranking are derived signals computed by this connector. Sample use: filter criticality = 1 for the foundational stack, order by security_rank, read weakest_check for the first fix to make.
Les titres et les descriptions proviennent des sources de données, en anglais.
- Lignes
- 108
- Colonnes
- 26
- Cadence de la source
- Hebdomadaire
- Dernière actualisation
- 25 sept. 2026
- Thème
- technology
| Colonne | Type | Description |
|---|---|---|
| snapshot_week | string | ISO week of the fetch day (YYYY-Www); the logical snapshot identity together with repo. (unit: ISO week) |
| fetched_at | string | Fetch timestamp, day-granular: the fetch day at 00:00 UTC. Same-week re-runs produce identical snapshots. (unit: ISO datetime) |
| repo | string | Canonical GitHub repo identity (owner/name); the primary row identity. Deduplicated, never repaired. (unit: id) |
| source_url | string | Canonical repo URL (github.com/owner/name); per-row provenance. (unit: url) |
| category | string | Deterministic data/ML category from the curated taxonomy (ml-frameworks, llm-tooling, data-processing, ...). (unit: category) |
| criticality | integer | Curated criticality tier: 1 foundational (a compromise hits the whole stack), 2 widely deployed, 3 niche/specialized. (unit: tier) |
| score_10 | float | Upstream OpenSSF Scorecard overall score, 0-10; null when the scan is inconclusive. (unit: score) |
| scan_date | string | Date Scorecard scanned the repo (YYYY-MM-DD); scores reflect this commit, not the fetch day. (unit: date) |
| check_code_review | float | OpenSSF Scorecard 'Code-Review' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_maintained | float | OpenSSF Scorecard 'Maintained' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_branch_protection | float | OpenSSF Scorecard 'Branch-Protection' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_token_permissions | float | OpenSSF Scorecard 'Token-Permissions' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_signed_releases | float | OpenSSF Scorecard 'Signed-Releases' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_binary_artifacts | float | OpenSSF Scorecard 'Binary-Artifacts' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_dependency_update_tool | float | OpenSSF Scorecard 'Dependency-Update-Tool' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_vulnerabilities | float | OpenSSF Scorecard 'Vulnerabilities' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_dangerous_workflow | float | OpenSSF Scorecard 'Dangerous-Workflow' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_pinned_dependencies | float | OpenSSF Scorecard 'Pinned-Dependencies' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_packaging | float | OpenSSF Scorecard 'Packaging' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| check_fuzzing | float | OpenSSF Scorecard 'Fuzzing' check, 0-10; null when Scorecard reports inconclusive (-1). CDLA-Permissive-2.0. (unit: score) |
| n_checks_conclusive | integer | Number of panel checks with a conclusive score (>= 0). Rows below 4 are excluded. (unit: count) |
| security_score | float | Documented composite, 0-100: 100 * mean(conclusive check scores) / 10. A comparison heuristic — not a quantified risk measure. (unit: score) |
| security_grade | string | security_score buckets: A (>= 80), B (>= 65), C (>= 50), D (>= 35), F (< 35). (unit: grade) |
| weakest_check | string | Lowest conclusive check (the highest-leverage fix for this project); alphabetical tie-break. (unit: check) |
| weakest_check_score | float | 0-10 score of weakest_check. (unit: score) |
| security_rank | integer | Rank by security_score descending (1 = best posture); ties broken by upstream overall score desc (missing last), then repo. (unit: rank) |
10 premières lignes d’exemple — un aperçu, pas le jeu de données complet.
| snapshot_week | fetched_at | repo | source_url | category | criticality | score_10 | scan_date | check_code_review | check_maintained | check_branch_protection | check_token_permissions | check_signed_releases | check_binary_artifacts | check_dependency_update_tool | check_vulnerabilities | check_dangerous_workflow | check_pinned_dependencies | check_packaging | check_fuzzing | n_checks_conclusive | security_score | security_grade | weakest_check | weakest_check_score | security_rank |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-W39 | 2026-09-25T00:00:00+00:00 | scikit-learn/scikit-learn | https://github.com/scikit-learn/scikit-learn | ml-frameworks | 1 | 9,4 | 2026-09-21 | 10 | 10 | — | — | — | 10 | — | — | — | — | — | 10 | 4 | 100 | A | binary_artifacts | 10 | 1 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | deepset-ai/haystack | https://github.com/deepset-ai/haystack | llm-tooling | 3 | 9,4 | 2026-09-21 | 10 | 10 | 8 | 10 | — | 10 | 10 | 10 | 10 | 5 | 10 | 10 | 11 | 93,64 | A | pinned_dependencies | 5 | 2 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | matplotlib/matplotlib | https://github.com/matplotlib/matplotlib | viz | 2 | 9,1 | 2026-09-21 | 10 | 10 | 8 | 10 | — | 10 | — | — | 10 | 6 | — | 10 | 8 | 92,5 | A | pinned_dependencies | 6 | 3 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | optuna/optuna | https://github.com/optuna/optuna | mlops | 3 | 8,1 | 2026-09-21 | 10 | 10 | — | 9 | — | 10 | — | — | 10 | 10 | 10 | 0 | 8 | 86,25 | A | fuzzing | 0 | 4 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | pymc-devs/pymc | https://github.com/pymc-devs/pymc | probabilistic | 3 | 8 | 2026-09-21 | 10 | 10 | — | 10 | — | 10 | — | — | 10 | 8 | 10 | 0 | 8 | 85 | A | fuzzing | 0 | 5 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | onnx/onnx | https://github.com/onnx/onnx | serving | 2 | 8,7 | 2026-09-25 | 10 | 10 | 8 | 10 | — | 10 | 10 | 0 | 10 | 5 | 10 | 10 | 11 | 84,55 | A | vulnerabilities | 0 | 6 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | keras-team/keras | https://github.com/keras-team/keras | ml-frameworks | 2 | 7,7 | 2026-09-25 | 10 | 10 | 0 | 9 | — | 10 | 10 | 5 | 10 | 5 | 10 | 10 | 11 | 80,91 | A | branch_protection | 0 | 7 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | numpy/numpy | https://github.com/numpy/numpy | ml-frameworks | 1 | 7,9 | 2026-09-25 | 9 | 10 | 3 | 10 | 0 | 10 | 10 | 10 | 10 | 3 | — | 10 | 11 | 77,27 | B | signed_releases | 0 | 8 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | apache/airflow | https://github.com/apache/airflow | orchestration | 2 | 7,3 | 2026-09-21 | 10 | 10 | 6 | — | 8 | 10 | — | — | — | 0 | — | 10 | 7 | 77,14 | B | pinned_dependencies | 0 | 9 |
| 2026-W39 | 2026-09-25T00:00:00+00:00 | openai/openai-python | https://github.com/openai/openai-python | llm-tooling | 2 | 7,9 | 2026-09-21 | 10 | 10 | 1 | 8 | — | 10 | — | — | 10 | 9 | 10 | 0 | 9 | 75,56 | B | fuzzing | 0 | 10 |
Profilé le 25 sept. 2026 à partir de l’instantané 20260925T162310Z-a3e7d215db4f
Mesuré- Complétude
- 86,4 %
- Lignes
- 108
- Colonnes
- 26
- Colonnes incomplètes
- 8
| Colonne | Manquant | Distinctes | Plage | Distribution |
|---|---|---|---|---|
| snapshot_weekvarchar | 0 % | 1 | — |
|
| fetched_atvarchar | 0 % | 1 | — |
|
| repovarchar | 0 % | 109 | — |
|
| source_urlvarchar | 0 % | 116 | — |
|
| categoryvarchar | 0 % | 20 | — |
|
| criticalitybigint | 0 % | 3 | 1 → 3médiane 3 | |
| score_10double | 0 % | 43 | 2,6 → 9,4médiane 5,7 | 4 hors du 1er–99e centile |
| scan_datevarchar | 0 % | 6 | — |
|
| check_code_reviewdouble | 0 % | 12 | 0 → 10médiane 8 | |
| check_maintaineddouble | 0 % | 10 | 0 → 10médiane 10 | |
| check_branch_protectiondouble | 50,9 % | 7 | 0 → 8médiane 3 | |
| check_token_permissionsdouble | 4,6 % | 6 | 0 → 10médiane 0 | |
| check_signed_releasesdouble | 63 % | 2 | 0 → 8médiane 0 | |
| check_binary_artifactsdouble | 0 % | 6 | 0 → 10médiane 10 | 2 hors du 1er–99e centile |
| check_dependency_update_tooldouble | 89,8 % | 2 | 0 → 10médiane 10 | |
| check_vulnerabilitiesdouble | 88,9 % | 3 | 0 → 10médiane 10 | |
| check_dangerous_workflowdouble | 3,7 % | 2 | 0 → 10médiane 10 | |
| check_pinned_dependenciesdouble | 4,6 % | 11 | 0 → 10médiane 0 | |
| check_packagingdouble | 49,1 % | 1 | 10 → 10médiane 10 | |
| check_fuzzingdouble | 0 % | 2 | 0 → 10médiane 0 | |
| n_checks_conclusivebigint | 0 % | 7 | 4 → 11médiane 8 | 2 hors du 1er–99e centile |
| security_scoredouble | 0 % | 85 | 23,33 → 100médiane 54,72 | 4 hors du 1er–99e centile |
| security_gradevarchar | 0 % | 5 | — |
|
| weakest_checkvarchar | 0 % | 9 | — |
|
| weakest_check_scoredouble | 0 % | 4 | 0 → 10médiane 0 | 2 hors du 1er–99e centile |
| security_rankbigint | 0 % | 105 | 1 → 108médiane 54,5 | 4 hors du 1er–99e centile |
- Actuelle
20260925T162310Z-a3e7d215db4f · sha256 a3e7d215db4f…
108 lignes · premier instantané
Dirigez n’importe quel LLM vers le point d’accès des métadonnées — la documentation ci-dessus est aussi lisible par machine (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/ossf_stack_security/ossf_stack_security_weekly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/ossf_stack_security/ossf_stack_security_weekly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)Point d’accès API : https://datazimuts.com/v1/datasets/ossf_stack_security/ossf_stack_security_weekly
Astuce : récupérez /llms.txt pour le catalogue complet lisible par machine.
D’où viennent ces données et ce qui en a été fait. Le travail des autres apparaît sous forme de décomptes ; seuls les projets partagés sont nommés.
Citer cet instantané
Épinglé à l’instantané 20260925T162310Z-a3e7d215db4f et à son empreinte, pour que vos lecteurs obtiennent exactement les données utilisées.
OpenSSF Scorecard, data/ML stack posture (agent-curated). (2026). Open-source security posture of the data/ML stack (weekly) [Data set, snapshot 20260925T162310Z-a3e7d215db4f, sha256 a3e7d215db4f]. Datazimuts. Retrieved 2026-09-25, from https://datazimuts.com/fr/datasets/ossf_stack_security/ossf_stack_security_weekly?snapshot=20260925T162310Z-a3e7d215db4f
@misc{dz_ossf_stack_security_ossf_stack_security__a3e7d215,
title = {{Open-source security posture of the data/ML stack (weekly)}},
author = {{OpenSSF Scorecard, data/ML stack posture (agent-curated)}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/fr/datasets/ossf_stack_security/ossf_stack_security_weekly?snapshot=20260925T162310Z-a3e7d215db4f}},
note = {Snapshot 20260925T162310Z-a3e7d215db4f, sha256 a3e7d215db4fa6341b9b4e09b9cd6c866918d990e36cb541138776328fddab0d; accessed 2026-09-25}
}Intégrer un tableau ou un graphique
Collez ce code dans n’importe quelle page. L’intégration est épinglée au même instantané, suit le thème clair ou sombre du lecteur et affiche toujours la source, la licence et un lien de retour.
<iframe src="https://datazimuts.com/embed/chart?dataset=ossf_stack_security%2Fossf_stack_security_weekly&lang=fr&theme=auto&snapshot=20260925T162310Z-a3e7d215db4f&x=scan_date&y=criticality&agg=avg" title="Open-source security posture of the data/ML stack (weekly)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Posez une question sur ce jeu de données. Les réponses viennent uniquement de sa fiche, de son profil mesuré et de son historique, et citent les faits utilisés.