What is custom software?
Custom software is an application built for the way your organisation works, instead of a product you adapt yourself to. For most of our clients it is a web app that staff, customers or suppliers open in a browser and sign in to. Because Catharsis tests and secures systems for a living, we design every app on the assumption that someone will try to break it.
How do we build security into the app?
Broken access control, weak authentication, unvalidated input and exposed secrets appear year after year in the OWASP Top 10, the list of critical web application risks published by the Open Worldwide Application Security Project (OWASP). We address them in the design, not after launch:
- Threat modelling. Before building, we map what the app holds, who might attack it and how, and turn the answers into security requirements in the scope.
- Access control first. We define user roles and what each one can see and do before writing screens, so one user can’t see another’s data.
- Strong sign-in. MFA is available or required, depending on the sensitivity of the app.
- Validated input. Form fields and API requests are checked on the server, not just in the browser.
- Secrets kept out of code. Keys and passwords live in a secure store, not in the repository.
- Dependency and secret scanning. Third-party packages are checked for known vulnerabilities, and changes are scanned for accidentally committed keys.
- Logging. Important actions are recorded so you can see who did what, and when.
When the app exchanges data with other systems, we design those connections as part of the project, drawing on our integrations and automation work. Our secure development page sets out the standards behind this work.
Which weaknesses do we design against?
We design against the weaknesses in the OWASP Top 10, the most widely used list of serious web application risks:
- Broken access control: every request checks who the user is and what they are allowed to see or do. One customer can’t open another customer’s records, and a staff member can’t approve their own request.
- Weak sign-in and sessions: passwords are stored safely, multi-factor authentication is used where it fits, and sessions expire.
- Injection: user input is validated and never run as code or as a database command.
- Insecure design: business rules and misuse cases are planned at the design stage, not patched in later.
- Misconfiguration and exposed secrets: secure defaults, no keys or passwords in the code, and each component gets only the access it needs.
- Outdated components: third-party libraries are kept on supported versions.
As on our website builds, we plan for these in the design and check for them in code review.
Want an independent test? A penetration test can be scoped separately, before launch or whenever a significant change goes live. We can also look after the app day to day under a website care and hosting plan.