Security Coverage

What We Protect You Against

ShipReady scans for the vulnerabilities that actually get exploited. Here's everything we check, why it matters, and how we keep your code safe.

OWASP Top 10 Coverage
Fast Scans

SQL Injection

Critical

SQL injection occurs when untrusted data is sent to a database interpreter as part of a query. Attackers can use this to read, modify, or delete data—or even take over your database server.

Code Example

Vulnerable
// Vulnerable code
const query = `SELECT * FROM users WHERE id = ${userId}`
db.execute(query)
Secure
// Secure code
const query = 'SELECT * FROM users WHERE id = ?'
db.execute(query, [userId])

What We Check

  • String concatenation in SQL queries
  • Template literals with user input in queries
  • Raw query execution without parameterization
  • ORM misuse patterns

Real World Impact

In 2024, a major e-commerce platform lost 40 million customer records due to a single SQL injection vulnerability in their search feature.

Cross-Site Scripting (XSS)

High

XSS attacks inject malicious scripts into web pages viewed by other users. This can steal session cookies, redirect users to malicious sites, or perform actions on behalf of victims.

Code Example

Vulnerable
// Vulnerable code
element.innerHTML = userInput
Secure
// Secure code
element.textContent = userInput
// Or use a framework that auto-escapes

What We Check

  • Direct DOM manipulation with user input
  • Unsafe use of innerHTML/outerHTML
  • Missing output encoding
  • dangerouslySetInnerHTML in React

Real World Impact

XSS vulnerabilities have been found in major platforms including Twitter, Facebook, and countless web applications, often leading to account takeovers.

Authentication Bypass

Critical

Authentication bypass vulnerabilities allow attackers to access protected resources without valid credentials. This includes broken authentication, session management flaws, and improper access controls.

Code Example

Vulnerable
// Vulnerable code
if (req.query.admin === 'true') {
  grantAdminAccess()
}
Secure
// Secure code
if (await verifyAdminRole(session.userId)) {
  grantAdminAccess()
}

What We Check

  • Missing authentication checks on routes
  • Insecure session management
  • Hardcoded credentials
  • Weak password requirements
  • JWT implementation flaws

Real World Impact

Authentication bypasses have led to breaches at major companies, exposing millions of user accounts and sensitive data.

Secrets Exposure

Critical

Hardcoded secrets like API keys, passwords, and tokens in source code can be easily discovered by attackers who gain access to your codebase or public repositories.

Code Example

Vulnerable
// Vulnerable code
const API_KEY = 'sk_live_abc123secret456'
const DB_PASSWORD = 'supersecret'
Secure
// Secure code
const API_KEY = process.env.API_KEY
const DB_PASSWORD = process.env.DB_PASSWORD

What We Check

  • API keys and tokens in code
  • Database credentials
  • Private keys and certificates
  • Cloud provider credentials
  • OAuth secrets

Real World Impact

GitHub reports that millions of secrets are leaked in public repositories every year, leading to unauthorized access and data breaches.

Path Traversal

High

Path traversal attacks allow attackers to access files outside the intended directory by manipulating file paths with sequences like "../". This can expose sensitive configuration files, source code, or system files.

Code Example

Vulnerable
// Vulnerable code
const file = req.query.filename
fs.readFile(`./uploads/${file}`)
Secure
// Secure code
const file = path.basename(req.query.filename)
const safePath = path.join('./uploads', file)
if (!safePath.startsWith('./uploads')) throw new Error()
fs.readFile(safePath)

What We Check

  • User input in file paths
  • Missing path sanitization
  • Directory traversal sequences
  • Symlink attacks

Real World Impact

Path traversal vulnerabilities have been used to steal source code, configuration files with credentials, and sensitive business data.

Command Injection

Critical

Command injection occurs when user input is passed to system shell commands. Attackers can execute arbitrary commands on your server, potentially taking complete control.

Code Example

Vulnerable
// Vulnerable code
exec(`convert ${userFile} output.png`)
Secure
// Secure code
execFile('convert', [userFile, 'output.png'])

What We Check

  • User input in exec/spawn calls
  • Shell command concatenation
  • Unsafe use of eval()
  • Template injection in commands

Real World Impact

Command injection vulnerabilities have led to complete server compromises, cryptocurrency mining attacks, and ransomware deployments.

Insecure Cryptography

High

Using weak or broken cryptographic algorithms, improper key management, or incorrect implementation can render encryption useless, exposing sensitive data.

Code Example

Vulnerable
// Vulnerable code
const hash = crypto.createHash('md5')
const cipher = crypto.createCipher('des', key)
Secure
// Secure code
const hash = crypto.createHash('sha256')
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv)

What We Check

  • Weak hash algorithms (MD5, SHA1)
  • Deprecated cipher modes
  • Missing authentication tags (GCM)
  • Hardcoded encryption keys
  • Insufficient key lengths

Real World Impact

Weak cryptography has led to password database breaches where millions of passwords were cracked within hours.

Server-Side Request Forgery

High

SSRF vulnerabilities allow attackers to make requests from your server to internal resources, potentially accessing internal services, cloud metadata APIs, or other protected systems.

Code Example

Vulnerable
// Vulnerable code
const url = req.query.url
const response = await fetch(url)
Secure
// Secure code
const url = new URL(req.query.url)
if (!ALLOWED_HOSTS.includes(url.hostname)) {
  throw new Error('Host not allowed')
}
const response = await fetch(url)

What We Check

  • User-controlled URLs in fetch/request
  • Missing URL validation
  • Internal IP access
  • Cloud metadata endpoint access

Real World Impact

SSRF attacks have been used to steal cloud credentials from metadata APIs, access internal admin panels, and pivot through corporate networks.

Ready to secure your code?

Connect your GitHub repository and get your first security scan in minutes.

Start Scanning Free

No credit card required. Free tier includes 3 scans per month.