Skip to main content

assemble-lib-rules

Connect the shared untrusted-data source group to new reusable OpenTaint sink groups. Use to wire new sink tags into security joins

Informations de source

Dépôt
seqra/opentaint
Dernière activité de la source
11 septembre 2026 à 20:01
Langue détectée de SKILL.md
anglais
Étoiles
163
Forks
12

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
assemble-lib-rules
description
Connect the shared untrusted-data source group to new reusable OpenTaint sink groups. Use to wire new sink tags into security joins
license
Apache-2.0
metadata
{"author":"opentaint","version":"0.3.0"}
# Skill: Assemble Lib Rules Reusable source rules share the single `untrusted-data-source` tag. Write only the security joins that connect it to sink tags reported as uncovered by `get_status.py`. An existing join automatically includes every new library rule carrying either tag. The main scan verifies the joins. ## Inputs Provided by the caller, fall back to the default value when omitted. Ask back only when a required input is missing and has no sensible default - `project-root` (optional) — root of the target project. Opentaint keeps all analysis artifacts under the fixed `<project-root>/.opentaint/` directory, so every `.opentaint/...` path below resolves there. Default: current directory - `language` (required) — target language for this project and language-specific instructions ## Workflow ### 1. Get the missing sink tags The orchestrator dispatches this skill only when `get_status.py` reports uncovered joins. Use that output as the complete worklist: each `untrusted-data-source -> sink-tag` line under `reusable tag groups are not fully joined` names one sink tag to connect. The script has already accounted for active built-in and custom library rules and for existing joins. Do not read those rules or recompute the matrix yourself. ### 2. Write one security join per missing sink tag For each missing sink tag, write one `join` rule under `.opentaint/rules/<lang>/security/<vulnerability>.yaml`. Use the sink tag without its final `-sink` as the concise, globally unique `<vulnerability>` id — for example, `regex-dos-sink` becomes `regex-dos`. Reference the shared source tag and reported sink tag directly: ```yaml rules: - id: regex-dos severity: ERROR message: Untrusted data reaches a regular-expression denial-of-service sink metadata: cwe: - CWE-1333 short-description: Regular expression denial of service via untrusted input languages: - <language> mode: join join: refs: - tag: untrusted-data-source as: source - tag: regex-dos-sink as: sink on: - 'source.$UNTRUSTED -> sink.$UNTRUSTED' ``` Both endpoints use `$UNTRUSTED`. Sink tags and join ids name vulnerability classes, not packages, frameworks, or individual methods: a newly created rule for an existing vulnerability class reuses that class's sink tag and therefore needs no new join. Derive accurate security metadata from the sink tag. ### 3. Verify the matrix, then stop Run `get_status.py` again. If it still reports an assigned sink tag, fix that join and repeat. Finish when every reusable sink tag is connected to `untrusted-data-source`. ## Output ### Artifacts - one security join file per missing sink tag at `.opentaint/rules/<lang>/security/<vulnerability>.yaml` ### Summary - one line per join: sink tag and rule id ## Gotchas - Reference the reported sink tag directly, never re-declare or enumerate either tag group's lib-rule members - Keep produced joins comment-free
Voir sur GitHub