AMARO THAN
‹ Back to stories
Story

Security Updates SQL Injection

Amaro Than Team November 12, 2025
Scope (what we tested)

Domains & services in scope: frontend and API endpoints for Netvorko and Amalipe (web/PWA and public API endpoints used by mobile clients).

Functional areas:

Authentication: /signup, /login, /password-reset, token refresh endpoints.

Profile management: create/update profile, avatar/photo upload, profile picture delivery endpoints.

Social features: posting comments, editing/deleting comments, feed endpoints, profile viewing.

Media endpoints: direct upload endpoints, CDN/edge URLs, thumbnail generation endpoints.

Database access layer: code paths that build and execute SQL queries for the above features.

Auth contexts exercised: unauthenticated, authenticated (normal user), authenticated (privileged roles where applicable), and session/token expiry conditions.

What isn’t included (or not publicly visible) ⚠️

Internal corporate networks, CI/CD servers, or non-production staging environments (unless explicitly provided).

Third-party vendor services (isolated vendor-managed storage buckets, external OAuth providers) beyond their integration surface (we only tested how our code calls them).

Physical security, social engineering, or employee phishing tests — these were out of scope.

Any exploit PoCs that could enable weaponization are omitted from public summaries; full technical details are restricted to the security team and remediation tickets.

Test methodology & tools used

A blended methodology combining automated tooling, manual verification, and source code review:

Automated scanners: OWASP ZAP and Burp Suite active scanning to identify obvious injection and auth weaknesses.

Targeted injection tools: SQLMap (controlled, limited), manual blind/time-based testing using Burp Intruder and custom scripts (rate-limited and monitored).

Manual exploratory testing and business-logic review: authenticated flows, session fixation checks, privilege escalation attempts, and chained attack scenarios.

Code review: manual review of server-side handlers and database access code (PHP, Python), looking for concatenated SQL, unparameterized queries, and improper input validation. Static checks augmented with linters and rules (PHPStan / Psalm or equivalent checks where available).

Post-testing verification: fixed items were retested manually and via automated scan re-runs.

Detailed findings (high level)

Severity distribution (summary):

No critical remote-code execution or unauthenticated account takeover remained after remediation.

No high severity data-exfiltration vectors were present at retest.

Medium / Low issues discovered and fixed; primarily information leakage, a small number of unparameterized SQL query cases in legacy code paths, and weak error handling that could reveal stack traces in some dev builds.

Representative findings (abstracted):

Information leakage (low): Some endpoints returned verbose error messages or stack traces in non-production builds — fixed by standardized error handling and masking in production.

Unparameterized queries (medium, limited scope): A few legacy API handlers constructed SQL fragments using string concatenation for optional filter clauses. These were exploitable only under specific, authenticated request shapes and were converted to prepared statements / parameterized ORM calls during remediation. No data exfiltration was observed in production logs beyond test attempts.

Auth logic hardening (low/medium): Rate limits and brute-force protection were improved on /login and password-reset flows (CAPTCHA/rate-limiting, token reuse prevention).

Media handling (low/medium): Early design allowed some metadata leakage in image URLs or thumbnails; fixes implemented were stricter filename handling, validation, and signed short-lived URLs for private content where appropriate.

Comments & profile inputs (low): Proper output encoding was enforced to prevent reflected/stored XSS in comment/profile rendering contexts.

Not tested / not found: No meaningful NoSQL/LDAP injection vectors were present in the tested code paths. Where non-SQL persistence exists, it was verified for input sanitization patterns during code review.

Post-exploitation & chained attacks

Assessors attempted realistic chained scenarios (e.g., SQLi → data leak → authorization bypass). The majority relied on multiple preconditions (e.g., an authenticated privileged user + legacy handler). After fixes, chained attacks were not reproducible.

Privilege escalation attempts (e.g., changing role flags via tampered payloads) were mitigated by server-side authorization checks and immutable fields for role assignment.

Database privileges & data access controls

Database user accounts were reviewed and adjusted to follow least privilege:

Web application DB users restricted to SELECT, INSERT, UPDATE, DELETE on application schema tables only; no superuser usage from public app servers.

Administrative scripts run under separate, auditable credentials and are gated behind secure operator tooling.

Password storage: production passwords are stored using a secure adaptive hashing algorithm (bcrypt or Argon2) with per-user salts and recommended cost factors. Password reset tokens are single-use and time-limited.

Access logging: query-level logging for suspicious access patterns was enabled and monitored for the highest-sensitivity tables (user credentials, PII).

Remediation timeline & verification

Finding → Fix → Retest cycle:

Discovery & Triage — Findings were logged to the internal issue tracker and prioritized (days 0–3 after test completion).

Remediation — Engineering implemented fixes: parameterized queries, error masking, rate limiting, signed media URLs, and additional tests (days 3–14).

Verification / Retest — Security team reran manual tests and automated scans against the patched environment; retest confirmed fixes (days 14–18).

Number of issues: a small set of medium/low items (conservative public phrasing — specific counts and technical PoCs are stored in the internal technical report).

Evidence: Retest logs, Burp/ZAP scan exports, and updated unit/integration test cases were produced and archived. These artifacts are available to authorized security personnel.