mirror of
https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git
synced 2026-07-24 21:40:58 +03:00
Production hardening: security fixes, code quality, 724 skills complete
- Fix 25 shell=True subprocess calls with list-based commands - Fix 49 verify=False in defensive skills (env-var override) - Add timeout to 231 HTTP/subprocess/socket calls - Fix 6 SQL injection patterns with whitelist validation - Replace 8 __import__() with standard imports - Remove 701 unused imports across 442 files - Add authorized-testing disclaimers to all offensive skills - Complete 11 incomplete skill directories - Expand 10 stub SKILL.md files with full content - Fix 2 YAML parse errors in frontmatter - Fix 5 pre-existing syntax errors - Convert 22 hardcoded paths/ports to environment variables - Back up 21 redundant skill pairs to .bak - Fix 2 global declaration errors - 724/724 skills with full folder anatomy (SKILL.md + agent.py + api-reference.md + LICENSE) - 0 compile errors across all 724 agent.py files
This commit is contained in:
@@ -28,7 +28,7 @@ class SecretServerClient:
|
||||
data = {"grant_type": "password", "username": username, "password": password}
|
||||
if domain:
|
||||
data["domain"] = domain
|
||||
resp = self.session.post(url, data=data)
|
||||
resp = self.session.post(url, data=data, timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()["access_token"]
|
||||
|
||||
@@ -41,13 +41,13 @@ class SecretServerClient:
|
||||
params["filter.folderId"] = folder_id
|
||||
if secret_template_id:
|
||||
params["filter.secretTemplateId"] = secret_template_id
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets", params=params)
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets", params=params, timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
def get_secret(self, secret_id):
|
||||
"""Retrieve a secret by ID."""
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets/{secret_id}")
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets/{secret_id}", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()
|
||||
|
||||
@@ -56,13 +56,13 @@ class SecretServerClient:
|
||||
items = [{"fieldId": fid, "itemValue": val} for fid, val in fields.items()]
|
||||
data = {"name": name, "secretTemplateId": template_id,
|
||||
"folderId": folder_id, "items": items}
|
||||
resp = self.session.post(f"{self.base_url}/api/v1/secrets", json=data)
|
||||
resp = self.session.post(f"{self.base_url}/api/v1/secrets", json=data, timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()
|
||||
|
||||
def get_secret_templates(self):
|
||||
"""List available secret templates."""
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secret-templates")
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secret-templates", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
@@ -71,46 +71,46 @@ class SecretServerClient:
|
||||
params = {}
|
||||
if parent_id:
|
||||
params["filter.parentFolderId"] = parent_id
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/folders", params=params)
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/folders", params=params, timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
def rotate_secret_password(self, secret_id):
|
||||
"""Trigger password rotation for a secret (Remote Password Changing)."""
|
||||
resp = self.session.post(
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/change-password")
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/change-password", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()
|
||||
|
||||
def get_secret_audit(self, secret_id):
|
||||
"""Get audit trail for a specific secret."""
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets/{secret_id}/audits")
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/secrets/{secret_id}/audits", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
def checkout_secret(self, secret_id):
|
||||
"""Check out a secret for exclusive access."""
|
||||
resp = self.session.post(
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/check-out")
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/check-out", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()
|
||||
|
||||
def checkin_secret(self, secret_id):
|
||||
"""Check in a previously checked-out secret."""
|
||||
resp = self.session.post(
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/check-in")
|
||||
f"{self.base_url}/api/v1/secrets/{secret_id}/check-in", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json()
|
||||
|
||||
def get_users(self):
|
||||
"""List all users."""
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/users")
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/users", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
def get_roles(self):
|
||||
"""List all roles."""
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/roles")
|
||||
resp = self.session.get(f"{self.base_url}/api/v1/roles", timeout=30)
|
||||
resp.raise_for_status()
|
||||
return resp.json().get("records", [])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user