Skip to main content

Open-source agent loop, validator, and payload library for Fimil's autonomous pentest engine.

Project description

fimil-pentest-core

Open-source agent core and payload library for Fimil's autonomous pentest engine.

PyPI License: Apache 2.0

What this is

This package ships the deployment-config-free subset of the Fimil pentest engine:

  • Marker allocation (fimil_pentest_core.markers) — cryptographic, run-scoped markers for deterministic exploit validation.
  • Payload library (fimil_pentest_core.payloads) — a Pydantic-validated YAML schema and ~125 curated payloads across fifteen vectors covering the OWASP Top 10 baseline plus the Aikido-superset Phase 5 vectors:
    • OWASP Top 10 baseline (v0.1.x): XSS, SQLi, SSRF, IDOR, authz, mass-assignment, prompt-injection (chat + structured)
    • Phase 5 superset (v0.3.0): SSTI (Jinja2 / Twig / Freemarker / Velocity / ERB), LDAP injection, XPath injection, XXE, command injection, path traversal, JWT attacks, insecure deserialization
  • SSTI engine fingerprint table (fimil_pentest_core.payloads.ssti.engines.yaml) — per-engine differential probes for the validator's engine-detection layer. Source-of-truth for the §13 decision 14 spec commitment.

The host application — Fimil-dev/fimil — provides everything else: the LLM agent loop, the deterministic validator, the scope guard (DNS pinning + IP allowlist + kill-switch), the redaction layer, and the persistence repositories.

Install

pip install fimil-pentest-core

Quickstart

import uuid
from fimil_pentest_core import markers, load_all_payloads

# 1) Allocate a fresh marker for a run.
run_id = uuid.uuid4()
policy_snapshot = {"oob_base_url": "https://oob.example.com"}
marker, oob_url = markers.allocate(run_id, policy_snapshot)
# marker == "<8-hex-prefix>.<128-bit-hex>"
# oob_url == "https://oob.example.com/<marker>"

# 2) Load the curated payload library.
all_payloads = load_all_payloads()
# {'xss': [...], 'sqli': [...], 'ssrf': [...], ...}

xss_payloads = all_payloads["xss"]
for entry in xss_payloads:
    print(entry.id, entry.template, entry.severity)

Schema

Each payload YAML is validated by PayloadEntry:

vector: xss
id: script-tag-injection
template: "<script>alert({{marker}})</script>"
applies_to:
  methods: [GET, POST]
  param_hints: [q, search, query, message]
expected_signal: xss_executable
severity: high
references: [CWE-79, OWASP-A03]

Five model validators enforce hard constraints at load time:

  • SSRF baked-URL guard — any SSRF template containing http://, file://, gopher://, or a numeric IPv4 literal fails to load. Only {{oob_url}} substitution is permitted.
  • XXE / insecure_deserialization OOB-only guard — mirrors the SSRF rule. Well-known XML namespace URIs (W3C, SOAP, OOXML, OASIS, OpenGIS) are scrubbed before scanning so they don't trip the no-baked-URL guard.
  • Command-injection metacharacter whitelist — payload templates may contain only the curated set ;|&`$() plus alphanumerics / spaces / ._/-\. Baked-in IPs and URL schemes outside {{oob_url}} are rejected.
  • SSTI engine field requirementvector: ssti payloads must declare which engine they target.
  • Boolean-differential pair requirementexpected_signal ending in _boolean_diff (SQLi, LDAP, XPath) requires a paired negative_template so the validator can run the differential.

Vector taxonomy

Vector OWASP CWE Validator type
xss A03:2021 CWE-79 Parse-tree executable-context match
sqli A03:2021 CWE-89 Boolean / time-based differential
ssrf A10:2021 CWE-918 OOB callback within window
idor A01:2021 CWE-639 Cross-account session three-signal
authz A01:2021 CWE-285 Cross-account PII differential
mass_assignment A08:2021 CWE-915 Read-back persistence
prompt_injection LLM01 CWE-1427 Chat refusal differential / structured schema violation
ssti A03:2021 CWE-1336 Per-engine differential math-eval (5 engines)
ldap A03:2021 CWE-90 Boolean differential row-count
xpath A03:2021 CWE-643 Boolean differential row-count
xxe A05:2021 CWE-611 OOB callback within window
command_injection A03:2021 CWE-78 OOB callback / time-delta
path_traversal A01:2021 CWE-22 File-content fingerprint regex
jwt A02:2021 CWE-347 alg-none / weak-HMAC / kid-injection
insecure_deserialization A08:2021 CWE-502 OOB callback within window

License

Apache 2.0. See LICENSE.

Contributing

This is the open-source core; the host application is closed-source. Issues and PRs welcome for:

  • New payloads (must include CWE/OWASP references and pass SSRF / SQLi schema constraints)
  • Additional vectors (coordinate with Fimil-dev/fimil maintainers — host validators must land in lockstep)
  • Schema improvements (PR with regression test)

Roadmap

  • v0.1.x — payload library + markers
  • v0.2.0 — extract agent_loop + validator from Fimil-dev/fimil (pending the AIP-4.4 PyPI cut-over per docs/operations/os-extraction-runbook.md §2.5 in the host repo)
  • v0.3.0 — Phase 5 vector expansion: SSTI (5 engines), LDAP, XPath, XXE, command injection, path traversal, JWT, insecure deserialization (this release)
  • v0.4.0+ — browser-driven testing primitives (Playwright tool wrapper)

See CHANGELOG.md for per-release detail and Fimil-dev/fimil issue tracker for upstream coordination.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fimil_pentest_core-0.21.0.tar.gz (175.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fimil_pentest_core-0.21.0-py3-none-any.whl (209.6 kB view details)

Uploaded Python 3

File details

Details for the file fimil_pentest_core-0.21.0.tar.gz.

File metadata

  • Download URL: fimil_pentest_core-0.21.0.tar.gz
  • Upload date:
  • Size: 175.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fimil_pentest_core-0.21.0.tar.gz
Algorithm Hash digest
SHA256 69038ffb7f60620d047f3c0b540ecb698988877288fea869d80c8fdf00dbac64
MD5 e07a575390aef884b494d1d603b13399
BLAKE2b-256 e4540369f356e362f5ffe6bc9b45e32fd30305c9a4e8ebcd63ce1739b19019cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for fimil_pentest_core-0.21.0.tar.gz:

Publisher: release.yml on Fimil-dev/fimil-pentest-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fimil_pentest_core-0.21.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fimil_pentest_core-0.21.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f18b011ea3c49a049e6c4af95b4cee1c8473ac351fb719150ad748edd4cc8d9b
MD5 25eeab2f50bb03595d0d92c6f2abbb92
BLAKE2b-256 d27210978e779a45e9831605c9f023162ef831d8227e95bb8a10837643d41da0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fimil_pentest_core-0.21.0-py3-none-any.whl:

Publisher: release.yml on Fimil-dev/fimil-pentest-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page