New user with nothing assigned can see every record
A new user with no access assigned saw everything because the system read an empty list as unrestricted. How to check yours, and what the fix was.
Topic
Permissions, isolation, credentials, and failures that stay quiet.
24 articles
The security writing here is shaped by having cleaned up after a real compromise rather than by a framework. The lesson that keeps recurring is that the failures which matter are the quiet ones: a backup that has been failing for four days, a permission model that a CSV export walks straight past, an audit log with a bucket of events nobody has ever looked in.
Detection by pattern matching is treated with suspicion throughout, for a specific reason — signature scanning found nothing on a site that turned out to hold two hundred and eleven malicious files, and file-integrity comparison against the official distribution found them all. Attackers write code to defeat patterns. They do not rewrite the upstream release.
A new user with no access assigned saw everything because the system read an empty list as unrestricted. How to check yours, and what the fix was.
A manager who should see 33 people could export 15,452 rows because the limit covered only part of the report. How to check yours and how we closed it.
An audit trail held nothing for ID, bank and odometer changes, and none for 1,231 vehicle documents. Two silent faults, and how to test your own log.
A WordPress login that says cookies are blocked at random often means a cache keeping the wrong page. Ours also showed an admin's page to the public.
Field staff could read what every client was charged because removing a permission from a role revoked nothing. How to restrict pricing, and the fix.
A WordPress site keeps getting hacked when attackers can still write to the server. What stopped it for us, and how to decide what will stop it for you.
Any signed-in rep could write any target, and 866 of 877 were in the wrong units. How to set and lock sales targets, and the checks an owner can make this week.
If staff can ask an AI about company data, what stops it answering the wrong person? Not a sentence telling it to behave. Where the refusal has to live.
A pairing code is a credential, not an ID: short-lived, single-use, revocable, stored hashed. What that meant for pairing a child's tablet, and what to ask.
A portal asked for one customer's prices and got everyone's, because the server ignored the request. How to check yours, and how we closed it.
Python can strip every assert from a production build, and the guard with it. How we caught a login endpoint fenced off by one, and what to ask your team.
Staff certificate portals often check what a user may do, not whose records. How to test your own software, and what we found in one system we audited.
A no-login quote link can show costs the PDF never would if it is built separately. The cause, the check to run before you send one, and what happened to ours.
In PostgreSQL a view runs as its owner, so it can ignore row-level security and sum every customer's data. How we caught it before launch, and what to ask.
A clerk who could only upload spreadsheets created customers and products she could not add by hand. How to check yours, and why one bad row stops uploads.
Yes: a client generated from a schema copies what the schema states and guesses the rest. Ours guessed one credential pair backwards. How to catch it.
If signing out only clears the screen, a copied login stays valid for hours. A real case, eight hours, plus what to check and what has to change on the server.
An audit log hid the request but stored old and new passwords in clear, then showed a password change as no change. How to check your own log.
A POS rule skipped for account owners let a sale be booked from a store with no till. How POS stock rules go wrong, and how to test yours.
Hacked again after cleanup while the scanner says clean? Scanners match appearance. Comparing every file with the official release found 211 files they missed.
One site was hacked and every site on the server fell because they shared a database password. How to check yours, and the order to fix it in.
Several websites ran as one user on one server, so one hack reached all. How to check your hosting, and what separating the sites changed.
Every screen limited a branch manager to one branch, but the export did not. How to check what your staff can download, and what closing the gap took.
Staff saw a record in the list, then got not found on opening it, because a branch check compared two different kinds of value. How to find and fix yours.