Incident Briefing: CraveCart Technologies
CraveCart is a fast-growing online food ordering platform that connects hungry customers with local restaurants for delivery and pickup. In the past year, CraveCart has grown from 15 restaurant partners to over 200, processing thousands of orders and customer payments every day. Rapid growth has put pressure on CraveCart's engineering team — and, as you'll see across the case files below, that pressure has led to real security gaps.
You have just joined CraveCart's IT Security team as a student intern. Over the next seven case files, you'll investigate incidents, review evidence, and make security recommendations covering Unit 5: Securing Applications and Data (Topics 5.1–5.6), ending with a capstone security improvement plan.
Each case includes background information, evidence (logs, tables, and records), and questions for you to answer in the response boxes provided. Your answers save automatically to this browser as you type. When you're finished, use Export PDF to submit your work, or Copy as Text as a backup.
AP Topic 5.1 — Application and Data Vulnerabilities and Attacks
The Order Search Incident
CraveCart's website lets customers search past orders by typing a restaurant name into a search box. Last Tuesday, a QA tester was experimenting with the search field and typed in some unusual characters just to see what would happen. Instead of an error message, the search returned thousands of customer records that had nothing to do with the search term.
The security team pulled the application error log to figure out what happened. It turns out the search box passes whatever a user types directly into a database query without checking it first — a textbook application vulnerability. An attacker who understands how the search box is built could use the same trick — a SQL Injection — to pull sensitive data like customer emails, phone numbers, and payment tokens straight out of the database. If the search box also had a way to modify records, the same flaw could let an attacker perform privilege escalation and gain far more access than a normal customer should ever have.
| Timestamp | Source IP | Search Input Submitted | System Response | Flag |
|---|---|---|---|---|
| 09:14:02 | 73.14.201.9 | Bella Napoli | 200 OK — 1 restaurant matched | |
| 09:14:47 | 73.14.201.9 | Golden Wok | 200 OK — 1 restaurant matched | |
| 10:02:15 | 198.51.100.42 | ' OR '1'='1 | 200 OK — Returned 4,812 customer records (expected 0–1) | |
| 10:03:51 | 198.51.100.42 | '; DROP TABLE orders; -- | 500 Internal Server Error — malformed SQL query | |
| 10:05:20 | 198.51.100.42 | ' UNION SELECT card_token,cvv FROM payments -- | 200 OK — Returned 4,812 rows including payment token column | |
| 11:47:33 | 73.14.201.9 | Pho Lantern | 200 OK — 1 restaurant matched |
| Customer ID | Email (masked) | Phone (masked) | Saved Payment Token |
|---|---|---|---|
| CC-10432 | m***.h***@gmail.com | (256) ***-0142 | tok_9f3a...b21c |
| CC-10433 | j***.o***@yahoo.com | (256) ***-9981 | tok_7ee1...44da |
| CC-10434 | t***.w***@outlook.com | (931) ***-7720 | tok_1cb0...ff9e |
Your Investigation
AP Topic 5.2 — Protecting Applications and Data: Managerial Controls and Access Controls
The Access Control Audit
Following the search-box incident, CraveCart's new IT Security Manager ordered a full access control audit. The goal: make sure every employee's account permissions match what their job role actually requires — a system called Role-Based Access Control (RBAC). Employees should only ever have the permissions needed to do their specific job, following the principle of least privilege.
The audit uncovered a problem. Several accounts had been granted far more access than their role required, often because it was "easier" when the account was first set up, and no one ever revoked the extra access. This is exactly the kind of gap that managerial controls — clear policies about who approves and reviews access — are supposed to catch. CraveCart also classifies its data by data classification level (Public, Internal, Sensitive, Restricted) so employees know how carefully each type of sensitive information must be handled.
| Role | System / Resource | Access Required by Job | Currently Granted | Audit Note |
|---|---|---|---|---|
| Customer Support Rep | Order System | Read only | Read, Write, Admin | Over-privileged — flagged |
| Restaurant Partner Manager | Menu Management System | Read, Write | Read, Write | Matches role — OK |
| Driver Dispatch Coordinator | Delivery Routing System | Read, Write | Read, Write | Matches role — OK |
| Database Administrator | Customer Database | Read, Write, Admin | Read, Write, Admin | Matches role — requires MFA |
| Marketing Intern | Customer Email List | Read only (for campaign planning) | Read, Write, Export | Severely over-privileged — flagged |
| IT Security Analyst | Audit & Security Logs | Read, Write | Read, Write | Matches role — OK |
Your Investigation
AP Topic 5.3 — Protecting Stored Data with Cryptography
The Debug Log Discovery
While reviewing server storage to free up space, an engineer found an old debug log file from CraveCart's payment processing service. It had been sitting untouched on a storage drive for months — a clear example of data at rest. The problem: the file was never supposed to exist in the first place, and it was written entirely in plaintext, with no cryptography applied at all.
Whenever a customer's payment failed, the payment service logged the entire transaction — including full card numbers and CVV codes — so engineers could "debug" the issue later. No one had ever encrypted this file or set it to automatically delete. If this file had been stolen, an attacker wouldn't need to break any encryption key at all; the confidentiality of every customer's payment information would already be gone, because there was no ciphertext protecting it.
Full card numbers and CVV codes appear in plaintext across multiple log entries.
Your Investigation
AP Topic 5.4 — Asymmetric Cryptography
The Lookalike Checkout Page
A customer emailed CraveCart support with a strange complaint: they had tried to log in at "cravecart-secure-login.net" after clicking a link in a text message, and their browser flashed a security warning. CraveCart doesn't own that domain. The security team suspects an attacker built a lookalike checkout page to steal customer logins and payment details.
Every legitimate website that accepts payments uses asymmetric cryptography — a key pair made up of a public key anyone can use to start a secure connection, and a private key that only CraveCart's real server holds. A trusted Certificate Authority (CA) issues a digital certificate that proves a public key really belongs to CraveCart, and a valid digital signature on that certificate is what lets a browser confirm it's genuine — or warn the user when it isn't.
| Domain | Issued To | Issued By (CA) | Key Type | Valid Through | Browser Status | Flag |
|---|---|---|---|---|---|---|
| cravecart.com | CraveCart Technologies, Inc. | DigiTrust Global CA | RSA 2048-bit key pair | Nov 2027 | Trusted — valid chain | |
| cravecart-secure-login.net | "CraveCart Support Team" | Self-signed (no CA) | RSA 2048-bit key pair | Expired — Jan 2027 | Not trusted — warning shown | |
| partners.cravecart.com | CraveCart Technologies, Inc. | DigiTrust Global CA | RSA 2048-bit key pair | Nov 2027 | Trusted — valid chain |
Your Investigation
AP Topic 5.5 — Protecting Applications
The Pre-Launch Code Review
CraveCart is about to launch a new feature: letting restaurant partners upload their own menu photos directly. Before launch, the application security team requires a code review of the new feature as a standard step in CraveCart's Software Development Life Cycle (SDLC). The review is meant to catch secure coding mistakes before the feature ever reaches customers.
The findings were not good. The reviewer found multiple issues, ranging from missing input sanitization on user-submitted text to a forgotten software update that left the team without a working patch management process for a key library. Each of these findings represents a different point where the development team skipped a step that secure coding practices are supposed to catch.
| Finding ID | File / Module | Description | Risk Level |
|---|---|---|---|
| CR-101 | upload_handler.py | Uploaded image files are not checked for file type before being saved — a malicious file disguised as a photo could be uploaded. | High |
| CR-102 | menu_form.js | Menu description text field has no input sanitization; special characters are passed directly to the database. | High |
| CR-103 | config/secrets.py | API key for the image storage service is hardcoded directly in the source file instead of a secure vault. | High |
| CR-104 | image-resize-lib v2.3 | Third-party image resizing library has a publicly known vulnerability (CVE) fixed in v2.9; no update has been applied. | Medium |
| CR-105 | deploy_pipeline.yml | No automated process exists to check for and apply security patches to third-party libraries. | Medium |
Your Investigation
AP Topic 5.6 — Detecting Attacks on Data and Applications
The 3 AM Admin Login
CraveCart's audit log records every login to the admin dashboard, along with the account used, the time, and the location the login came from. This kind of continuous monitoring exists specifically to catch suspicious activity before it turns into a full-blown incident.
This morning, the on-call security analyst reviewing the overnight application log noticed something odd: an admin account that normally logs in during business hours from CraveCart's office network had logged in at 3:14 AM from an unfamiliar location, and moments later had exported a large batch of customer records. Individually, a late-night login or a data export might have an innocent explanation — but together, they're a strong indicator of attack, and a threat to the data integrity of CraveCart's systems if the exported records are altered or resold.
| Timestamp | User Account | Action | IP / Location | Flag |
|---|---|---|---|---|
| 08:52:10 | j.alvarez (Admin) | Logged in; viewed weekly sales report | 10.0.4.12 — CraveCart HQ | |
| 13:20:44 | j.alvarez (Admin) | Updated restaurant partner listing | 10.0.4.12 — CraveCart HQ | |
| 03:14:02 | j.alvarez (Admin) | Logged in to admin dashboard | 203.0.113.77 — unrecognized, overseas | |
| 03:16:55 | j.alvarez (Admin) | Exported 12,340 customer records to CSV | 203.0.113.77 — unrecognized, overseas | |
| 03:19:31 | j.alvarez (Admin) | Logged out | 203.0.113.77 — unrecognized, overseas | |
| 09:05:00 | j.alvarez (Admin) | Logged in; reported unable to recall overnight activity | 10.0.4.12 — CraveCart HQ |
Your Investigation
Unit 5 Capstone — Applying Defense in Depth
Building CraveCart's Security Improvement Plan
CraveCart's leadership has seen the case files above and called an emergency meeting. Six separate incidents in one unit — an injection attack, an access control failure, unencrypted payment data, a fake certificate, unsafe code shipped toward launch, and a middle-of-the-night data export — are more than bad luck. They're a pattern, and the executive team wants a plan.
No single security control fixes every problem CraveCart has faced. That's why security professionals rely on defense in depth: layering multiple controls so that if one fails, another is still standing between an attacker and CraveCart's assets. Every control still leaves some residual risk behind, and when the ideal control isn't possible right away, a compensating control can reduce risk in the meantime. Your job in this final case is to pull together everything you've learned across Cases 5A–5F into one prioritized plan.
| Case | Asset at Risk | Threat / Vulnerability | Current Status |
|---|---|---|---|
| 5A | Customer database | SQL injection via unvalidated search input | Needs improvement |
| 5B | Internal systems & customer data | Over-privileged employee accounts | Needs improvement |
| 5C | Customer payment data | Plaintext card data left in an unencrypted debug log | Needs improvement |
| 5D | Customer trust / login credentials | Fraudulent lookalike domain with a fake certificate | Partially addressed — domain reported |
| 5E | New menu-photo upload feature | Missing input sanitization, hardcoded API key, outdated library | Caught before launch — not yet fixed |
| 5F | Customer records | Compromised admin account used for after-hours data export | Under active investigation |