# Check which kernel version Railway is actually running in your containers
# (run this from your app or in a RUN step during the build)
uname -r
# Typical output: 5.15.0-1xxx-aws or similar — not the Ubuntu kernel directly # To see the patch -weight: 500;">status for security updates on Ubuntu:
ubuntu-security--weight: 500;">status --thirdparty
# Also useful:
pro security--weight: 500;">status
# Check which kernel version Railway is actually running in your containers
# (run this from your app or in a RUN step during the build)
uname -r
# Typical output: 5.15.0-1xxx-aws or similar — not the Ubuntu kernel directly # To see the patch -weight: 500;">status for security updates on Ubuntu:
ubuntu-security--weight: 500;">status --thirdparty
# Also useful:
pro security--weight: 500;">status
# Check which kernel version Railway is actually running in your containers
# (run this from your app or in a RUN step during the build)
uname -r
# Typical output: 5.15.0-1xxx-aws or similar — not the Ubuntu kernel directly # To see the patch -weight: 500;">status for security updates on Ubuntu:
ubuntu-security--weight: 500;">status --thirdparty
# Also useful:
pro security--weight: 500;">status
# I ran this from a Railway container with shell access:
cat /proc/version
# Linux version 5.15.0-1057-aws (buildd@lcy02-amd64-059)
# (Ubuntu 5.15.0-1057.61-aws 5.15.163) # To check pending CVEs for the kernel in your container:
# (you need ubuntu-advantage-tools installed)
-weight: 500;">apt-get -weight: 500;">install -y ubuntu-advantage-tools
ua security--weight: 500;">status
# I ran this from a Railway container with shell access:
cat /proc/version
# Linux version 5.15.0-1057-aws (buildd@lcy02-amd64-059)
# (Ubuntu 5.15.0-1057.61-aws 5.15.163) # To check pending CVEs for the kernel in your container:
# (you need ubuntu-advantage-tools installed)
-weight: 500;">apt-get -weight: 500;">install -y ubuntu-advantage-tools
ua security--weight: 500;">status
# I ran this from a Railway container with shell access:
cat /proc/version
# Linux version 5.15.0-1057-aws (buildd@lcy02-amd64-059)
# (Ubuntu 5.15.0-1057.61-aws 5.15.163) # To check pending CVEs for the kernel in your container:
# (you need ubuntu-advantage-tools installed)
-weight: 500;">apt-get -weight: 500;">install -y ubuntu-advantage-tools
ua security--weight: 500;">status
# This does NOT -weight: 500;">update the host kernel:
FROM ubuntu:22.04
RUN -weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">upgrade -y # You're updating the userspace packages inside the container.
# The kernel is provided by the host (Railway/AWS/GCP).
# You have no control over when that kernel gets updated.
# This does NOT -weight: 500;">update the host kernel:
FROM ubuntu:22.04
RUN -weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">upgrade -y # You're updating the userspace packages inside the container.
# The kernel is provided by the host (Railway/AWS/GCP).
# You have no control over when that kernel gets updated.
# This does NOT -weight: 500;">update the host kernel:
FROM ubuntu:22.04
RUN -weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">upgrade -y # You're updating the userspace packages inside the container.
# The kernel is provided by the host (Railway/AWS/GCP).
# You have no control over when that kernel gets updated.
# 1. Monitor Ubuntu USNs — automate this in your CI/CD
# Subscribe to the Ubuntu Security Notices feed:
# https://ubuntu.com/security/notices/rss.xml # 2. In your Dockerfile, pin the base image by digest so you can
# track when Railway updates the host kernel:
FROM ubuntu:22.04@sha256:SPECIFIC_HASH # 3. Check kernel version at app startup (Node.js):
const os = require('os');
// Log this at Railway startup:
console.log(`Kernel: ${os.release()} | Platform: ${os.platform()}`);
// If it changes between deploys, Railway updated the host kernel.
# 1. Monitor Ubuntu USNs — automate this in your CI/CD
# Subscribe to the Ubuntu Security Notices feed:
# https://ubuntu.com/security/notices/rss.xml # 2. In your Dockerfile, pin the base image by digest so you can
# track when Railway updates the host kernel:
FROM ubuntu:22.04@sha256:SPECIFIC_HASH # 3. Check kernel version at app startup (Node.js):
const os = require('os');
// Log this at Railway startup:
console.log(`Kernel: ${os.release()} | Platform: ${os.platform()}`);
// If it changes between deploys, Railway updated the host kernel.
# 1. Monitor Ubuntu USNs — automate this in your CI/CD
# Subscribe to the Ubuntu Security Notices feed:
# https://ubuntu.com/security/notices/rss.xml # 2. In your Dockerfile, pin the base image by digest so you can
# track when Railway updates the host kernel:
FROM ubuntu:22.04@sha256:SPECIFIC_HASH # 3. Check kernel version at app startup (Node.js):
const os = require('os');
// Log this at Railway startup:
console.log(`Kernel: ${os.release()} | Platform: ${os.platform()}`);
// If it changes between deploys, Railway updated the host kernel.
// src/lib/startup-audit.ts
// Log environment info at startup — Railway captures this in logs
import os from 'os'; export function logSecurityBaseline(): void { const info = { kernel: os.release(), // host kernel version platform: os.platform(), // linux arch: os.arch(), // x64, arm64 nodeVersion: process.version, timestamp: new Date().toISOString(), }; // Persist this in Railway logs — you'll catch it if the kernel changes between deploys console.log('[SECURITY_BASELINE]', JSON.stringify(info));
}
// src/lib/startup-audit.ts
// Log environment info at startup — Railway captures this in logs
import os from 'os'; export function logSecurityBaseline(): void { const info = { kernel: os.release(), // host kernel version platform: os.platform(), // linux arch: os.arch(), // x64, arm64 nodeVersion: process.version, timestamp: new Date().toISOString(), }; // Persist this in Railway logs — you'll catch it if the kernel changes between deploys console.log('[SECURITY_BASELINE]', JSON.stringify(info));
}
// src/lib/startup-audit.ts
// Log environment info at startup — Railway captures this in logs
import os from 'os'; export function logSecurityBaseline(): void { const info = { kernel: os.release(), // host kernel version platform: os.platform(), // linux arch: os.arch(), // x64, arm64 nodeVersion: process.version, timestamp: new Date().toISOString(), }; // Persist this in Railway logs — you'll catch it if the kernel changes between deploys console.log('[SECURITY_BASELINE]', JSON.stringify(info));
}
# 4. Enable Railway security notifications
# They don't publish their own CVE feed, but they do have a -weight: 500;">status page.
# Subscribe to: https://-weight: 500;">status.railway.app/ # 5. To reduce surface within your control: seccomp profiles in Docker
# This doesn't patch the kernel but limits the syscalls your container can make:
-weight: 500;">docker run --security-opt seccomp=./seccomp-profile.json your-image
# 4. Enable Railway security notifications
# They don't publish their own CVE feed, but they do have a -weight: 500;">status page.
# Subscribe to: https://-weight: 500;">status.railway.app/ # 5. To reduce surface within your control: seccomp profiles in Docker
# This doesn't patch the kernel but limits the syscalls your container can make:
-weight: 500;">docker run --security-opt seccomp=./seccomp-profile.json your-image
# 4. Enable Railway security notifications
# They don't publish their own CVE feed, but they do have a -weight: 500;">status page.
# Subscribe to: https://-weight: 500;">status.railway.app/ # 5. To reduce surface within your control: seccomp profiles in Docker
# This doesn't patch the kernel but limits the syscalls your container can make:
-weight: 500;">docker run --security-opt seccomp=./seccomp-profile.json your-image