Install
$ agentstack add skill-shieldnet-360-secure-vibe-database-security Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Destructive filesystem operation.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Database Security
Prevent SQL injection, ORM misuse, credential leaks; enforce least-privilege DB users and safe migrations
ALWAYS
- Use parameterized queries / prepared statements for any SQL that touches user-controlled values. Pass values as parameters, never via string concatenation or formatting (
%s,+, template literals). - Use the ORM's safe query API. In SQLAlchemy:
session.execute(text(":id"), {"id": user_id}). In Django: ORM methods,Model.objects.filter(...). In Sequelize / Prisma / SQLAlchemy core:.where({ ... })builders. In Go:db.QueryContext(ctx, "select ... where id = $1", id). - Validate that identifier columns / table names — which can't be parameterized — come from a hard-coded allowlist, not from user input.
- Use a dedicated database user per application with the minimum grants needed. Web apps that only read shouldn't have
INSERT/UPDATE/DELETE. Migration jobs run as a separateDDL-capable user. - Enable Row-Level Security (Postgres
CREATE POLICY/ Supabase RLS / Azure SQL RLS) for multi-tenant tables and set the tenant context per session. - Pull DB credentials from a secret manager or env var injected at start — never from a committed
database.yml/.env. Rotate on schedule. - Use TLS to the database (
sslmode=requirefor Postgres,requireSSL=truefor MySQL, encrypted connection for MSSQL). Pin the CA where the driver supports it. - Connection pooling has a max size that fits within the DB's
max_connections, with healthy back-pressure on the application.
NEVER
- Concatenate user input into SQL:
"SELECT * FROM users WHERE name='" + name + "'". Even if you "escape" it yourself — drivers escape correctly only when binding through the parameter API. - Use ORM raw query methods (
.raw(),.objects.raw(),.query(text(...))) with f-string interpolation of user input. - Run application workloads as the database superuser /
root/postgres/sa. Create a service user. - Disable TLS to the database (
sslmode=disable,useSSL=false). - Store secrets, PII, or large blobs in JSON columns without encryption-at-rest and a key rotation plan.
- Run destructive migrations (DROP TABLE, DROP COLUMN, ALTER COLUMN type changes on populated tables) inline with deploys without an expand–contract plan and a backup verified to be restorable.
- Bind an internet-exposed database listener with no allowlist; databases stay in a private network and are reached via a bastion / VPN / private link.
- Log entire SQL statements with bound values at INFO level — bound values are almost always sensitive.
KNOWN FALSE POSITIVES
- Reporting tools that run analyst-authored ad-hoc SQL legitimately interpolate identifiers; they should run against a read-only replica with a separate user whose grants prevent damage.
- Some ORMs (Django, SQLAlchemy 1.x) use
%splaceholders as parameter markers, not Python format-string placeholders — that's safe. - Health-check queries (
SELECT 1) are intentionally trivial.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ShieldNet-360
- Source: ShieldNet-360/secure-vibe
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.