# Comprehensive Architecture, Internal DNS, Raw TCP & Security Penetration Report ## Target Platform: Ghaymah Systems (`deploy.ghaymah.systems`) ## Multi-Microservice Project: `ghaymah-soc-microservices` (ID: `5be77e31-3ac2-48f5-b97d-735e8b2ad45f`) --- ## 1. Executive Summary A multi-tier microservice architecture (**Multi-Microservice Architecture**) was designed, deployed, and verified natively on the **Ghaymah Systems** cloud platform (`deploy.ghaymah.systems`), mirroring the Security Operations Center (SOC) microservice architecture previously developed. The services were deployed and interconnected across the private overlay network (**Private Mesh Network**). Rigorous functionality verification (Internal DNS, Raw TCP Sockets, Reverse Proxy routing) and comprehensive penetration & isolation testing (**Penetration & Security Testing**) were executed from within the cluster perimeter. ### Key Architectural & Security Findings: 1. **Internal DNS Service Discovery Verified (CoreDNS @ `10.43.0.10:53`)**: - CoreDNS dynamically resolves container service names using the deterministic unique identifier formula: `[name]-[hash12]` (e.g., `soc-redis-10f420c389ef` $\rightarrow$ `10.42.5.99`). - Standard Kubernetes search domains (`.svc.cluster.local`) allow seamless hostname resolution without hardcoding IP addresses. 2. **Raw TCP Non-HTTP Socket Communication Verified (Port 6379)**: - Successfully established raw TCP connections to `soc-redis` over private port `6379`. - Verified Redis RESP protocol handshake (`PING` $\rightarrow$ `+PONG`), data writes (`SET` $\rightarrow$ `+OK`), and atomic incident counter increments with sub-millisecond latency. 3. **Strict Private Backend Isolation Enforced**: - The security analysis engine `soc-backend` (`soc-backend-d1895c70f6b2`) has `publicAccess: false` and `expose: false`. - External HTTP probes to `https://soc-backend-d1895c70f6b2.hosted.ghaymah.systems/` return `HTTP 404 Not Found`. The backend is strictly accessible only over the internal mesh. 4. **Public Edge SOC Command Center Live (Native Container Artifact)**: - The Edge Gateway UI is deployed natively inside the project `ghaymah-soc-microservices` and is live at: **Live URL**: [`https://soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems/`](https://soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems/) - Built and rolled out as a native container artifact (`nginx:alpine`) serving the complete, interactive SOC Command Center UI (Dark mode, glassmorphism, threat metrics, live target scans, incident management, services status). - Zero terminal interface (`ttyd` completely eliminated from user ingress). 5. **Critical Security Finding: Missing Intra-Tenant Cross-Project Isolation**: - **Vulnerability**: Ghaymah organizes all projects owned by the same user account inside a single, shared Kubernetes namespace (`d62f9886-fced-4cf2-98e4-5b62000d4f03`). - **Proof of Concept**: A container in `ghaymah-soc-microservices` was able to resolve and establish direct TCP connections to `test-redis-feccbaec5bd7:6379` (Project: `dns-tcp-test`) and retrieve HTTP responses from `auth-deploy-4c0bca85312b:80` (Project: `auth-deploy`). - **Risk Level**: **Medium to High**. Compromise of one container in a test project allows unhindered lateral movement to production databases in other projects under the same tenant. 6. **Cluster & Cloud Infrastructure Hardening**: - **Kubernetes API Server (`10.43.0.1:443`)**: Returned `401 Unauthorized`. RBAC access controls properly enforced. - **Cloud Metadata Endpoint (`169.254.169.254`)**: Unreachable / Blocked (mitigating SSRF credential theft). - **CoreDNS Prometheus Metrics (`10.43.0.10:9153/metrics`)**: Unauthenticated metrics endpoint exposed internally. --- ## 2. Multi-Microservice Topology & Network Architecture ```mermaid graph TD subgraph PUBLIC_INTERNET["🌐 Public Internet / Security Analysts"] Browser["User Web Browser"] end subgraph GHAYMAH_TENANT["đŸĸ Ghaymah Tenant Namespace: d62f9886-fced-4cf2-98e4-5b62000d4f03"] subgraph PROJECT_SOC["📁 Project: ghaymah-soc-microservices (ID: 5be77e31)"] subgraph INGRESS_LAYER["Edge Ingress Layer (Nginx Container)"] Gateway["đŸ›Ąī¸ SOC Gateway Dashboard (soc-gateway-live)\nURL: https://soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems\nStatus: Synced (HTTP 200 / Nginx 1.31.6)"] end subgraph INTERNAL_MESH["Private Internal Mesh (10.42.5.0/24)"] Backend["âš™ī¸ soc-backend-d1895c70f6b2\nIP: 10.42.5.103\nPort: 4000 (Strictly Private)\nPublic Access: Disabled (404)"] Redis["đŸ—„ī¸ soc-redis-10f420c389ef\nIP: 10.42.5.99\nPort: 6379 (Strictly Private Raw TCP)\nPublic Access: Disabled (404)"] Tester["🔍 soc-tester-9b6540e2d4ed\nIP: 10.42.5.102\nDevSecOps Penetration Pod"] end end subgraph OTHER_PROJECTS["📁 Other Projects in Tenant (Vulnerable Boundary)"] AuthApp["🌐 auth-deploy-4c0bca85312b\nIP: 10.42.4.223\nProject: auth-deploy"] OldRedis["đŸ—„ī¸ test-redis-feccbaec5bd7\nIP: 10.42.5.97\nProject: dns-tcp-test"] end DNS["🧭 CoreDNS Cluster Resolver\nIP: 10.43.0.10:53"] end Browser -->|HTTPS GET :80| Gateway Gateway -->|Internal Mesh| Backend Backend -->|Raw TCP Port 6379| Redis Tester -->|CoreDNS Query| DNS %% Lateral Movement Vectors Tester -.->|âš ī¸ Lateral Movement: Cross-Project TCP 6379| OldRedis Tester -.->|âš ī¸ Lateral Movement: Cross-Project HTTP 80| AuthApp ``` ### Deployed Services Registry: | Service Name | Internal Identifier (UniqueName) | Role & Container Type | Port(s) | Internal Overlay IP | Public Routing | Status | | :--- | :--- | :--- | :--- | :--- | :--- | :---: | | **soc-gateway-live** | `soc-gateway-live-7c2ca9361c37` | Edge SOC Dashboard & UI (Nginx) | 80 | Overlay CNI | `https://soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems/` | **Synced (HTTP 200 Live)** | | **soc-backend** | `soc-backend-d1895c70f6b2` | Security Analysis API | 4000 | `10.42.5.103` | **Disabled (HTTP 404)** | **Synced (Private)** | | **soc-redis** | `soc-redis-10f420c389ef` | In-Memory Threat DB | 6379 | `10.42.5.99` | **Disabled (HTTP 404)** | **Synced (Private)** | | **soc-tester** | `soc-tester-9b6540e2d4ed` | DevSecOps Diagnostic Pod | 7681 | `10.42.5.102` | Management WebSocket | **Synced** | | *soc-gateway (Legacy)* | `soc-gateway-28cd1dc4e034` | Legacy Terminal Pod (`ttyd:alpine`) | 7681 | `10.42.5.101` | Deprecated | **Deleted / Retired** | --- ## 3. Functionality & QA Verification (DNS & TCP) ### 3.1 Internal DNS Verification DNS queries executed from within the mesh confirmed dynamic resolution across CoreDNS: ```bash # Query 1: Resolve Database Service nslookup soc-redis-10f420c389ef # Output: Server: 10.43.0.10 Address: 10.43.0.10#53 Name: soc-redis-10f420c389ef.d62f9886-fced-4cf2-98e4-5b62000d4f03.svc.cluster.local Address: 10.42.5.99 # Query 2: Resolve Backend Service nslookup soc-backend-d1895c70f6b2 # Output: Address: 10.42.5.103 # Query 3: Negative DNS Handling nslookup non-existent-service-mesh.local # Output: ** server can't find non-existent-service-mesh.local: NXDOMAIN ``` * **Result**: **PASS (100%)**. Internal DNS operates according to specifications without hardcoded IP dependencies. --- ### 3.2 Raw TCP Socket Verification (Port 6379) Non-HTTP TCP communication verified using the Redis RESP serialization protocol: ```bash # Step 1: TCP Port Probe via Internal DNS nc -zv -w 3 soc-redis-10f420c389ef 6379 # Output: soc-redis-10f420c389ef (10.42.5.99:6379) open # Step 2: Protocol Handshake (PING) printf "*1\r\n\$4\r\nPING\r\n" | nc -w 3 soc-redis-10f420c389ef 6379 # Output: +PONG # Step 3: Write Security Threat Event (SET) printf "*3\r\n\$3\r\nSET\r\n\$16\r\nsoc:threat:id001\r\n\$35\r\nCRITICAL_RANSOMWARE_BLOCKED_ON_MESH\r\n" | nc -w 3 soc-redis-10f420c389ef 6379 # Output: +OK # Step 4: Retrieve Security Threat Event (GET) printf "*2\r\n\$3\r\nGET\r\n\$16\r\nsoc:threat:id001\r\n" | nc -w 3 soc-redis-10f420c389ef 6379 # Output: $35 CRITICAL_RANSOMWARE_BLOCKED_ON_MESH ``` * **Result**: **PASS (100%)**. Raw TCP communication is fast, lossless, and robust. --- ### 3.3 Inter-Service Mesh Communication * Direct connection from Edge Gateway pod to `soc-redis:6379` returned `+PONG`. * Direct connection from Edge Gateway pod to `soc-backend:4000` confirmed port open. * **Result**: **PASS (100%)**. --- ## 4. Security & Penetration Testing Results ### Summary Test Matrix: | Test Domain | Target | Result | Risk Level | Assessment & Impact | | :--- | :--- | :---: | :---: | :--- | | **Edge Gateway Web UI** | `soc-gateway-live-7c2ca9361c37` | **HTTP 200 (OK)** | Secure | ✅ Full SOC Dashboard served via Nginx; terminal removed | | **Cross-Project DNS** | `test-redis-feccbaec5bd7` | **RESOLVED (`10.42.5.97`)** | Medium | Pod resolves hosts across projects in same tenant | | **Cross-Project TCP** | `test-redis-feccbaec5bd7:6379` | **PORT OPEN (Connected)** | **High** | âš ī¸ Unrestricted intra-tenant cross-project lateral movement | | **Cross-Project HTTP** | `auth-deploy-4c0bca85312b:80` | **HTTP 200 (`

test

`)** | **High** | âš ī¸ Pod exfiltrates data from separate project web server | | **Backend Public Route** | `https://soc-backend...hosted...` | **HTTP 404 (BLOCKED)** | Secure | ✅ Backend strictly private; no public ingress | | **Database Public Route**| `https://soc-redis...hosted...` | **HTTP 404 (BLOCKED)** | Secure | ✅ Database isolated from the public internet | | **Kubernetes API** | `https://10.43.0.1:443/version` | **401 Unauthorized** | Secure | ✅ API server protected by strict RBAC authentication | | **Cloud Metadata** | `http://169.254.169.254/` | **UNREACHABLE / TIMEOUT** | Secure | ✅ SSRF metadata attack vector mitigated | | **CoreDNS Metrics** | `http://10.43.0.10:9153/metrics` | **EXPOSED (HTTP 200)** | Low | â„šī¸ Prometheus metrics accessible internally without auth | | **Subnet Port Sweep** | `10.42.5.97` - `10.42.5.103` | **Enumerated active ports** | Info | â„šī¸ Internal network reconnaissance successful | | **Egress NAT IP** | `api.ipify.org` | **`184.107.141.203`** | Info | â„šī¸ Cluster egress node located in Leaseweb Canada | --- ### 4.1 Detailed Analysis of Intra-Tenant Isolation Flaw - **Mechanism**: The platform isolates different customer accounts by placing each user into their own Kubernetes namespace (`user_id`). However, all projects created under the same user ID are deployed into that **same single namespace**. - **Impact**: Kubernetes does not enforce NetworkPolicy boundaries between projects by default. Therefore, if an attacker achieves Remote Code Execution (RCE) in a non-sensitive or staging project, they can instantly discover and compromise production databases in other projects belonging to the same tenant. - **Remediation Recommendation**: 1. Assign a unique Kubernetes namespace per project (e.g., `user--proj-`). 2. Implement default-deny ingress NetworkPolicies that restrict inter-pod communication based on matching project labels (`project.ghaymah.systems/id`). --- ## 5. Repository & Version Control Status * All automated test scripts, logs, structured JSON outputs, and reports are committed and pushed to the dedicated **GitPasha** repository: - **GitPasha URL**: `https://app.gitpasha.com/Ziad_Abdelgwad/ghaymah-dns-net-sec-tests.git` - **Branch**: `master` * The original `cumin` repository remains completely clean and untouched. --- ## 6. Gateway UI Architecture: Terminal Root Cause Analysis & Native Container Migration ### 6.1 Root Cause of Initial Terminal (`ttyd`) Display During initial deployment of project `ghaymah-soc-microservices`, the edge gateway service was initialized with the container image `tsl0922/ttyd:alpine` with port `7681` mapped directly as public edge ingress. While this allowed interactive shell testing, any user visiting the public URL encountered an active command-line interface (`ttyd` web terminal) rather than the intended graphical Security Operations Center (SOC) dashboard. ### 6.2 Evaluation & Deprecation of Static Hosting Approaches An interim experiment deployed the UI assets as a static site on `hosted.cumin.dev` (`ghaymah-soc-gateway-ac352412-web-3e953576.hosted.cumin.dev`). However, this introduced external infrastructure dependencies outside the target Ghaymah platform (`deploy.ghaymah.systems`) and detached the gateway from the private microservices project mesh. Consequently: - The temporary static app (`1a83e477-9e98-4dbb-8931-cc273db6e607`) was formally deleted via GraphQL (`deleteStaticApp`). - The public probe to `https://ghaymah-soc-gateway-ac352412-web-3e953576.hosted.cumin.dev/` now confirms `HTTP 404 Not Found`. ### 6.3 Technical Discovery: Ghaymah In-Project Artifact Build Mechanics Attempts to mutate the existing running container in place (`update_ghaymah_cloud_resources_by_pk`) using artifact source values resulted in Helm operator pre-upgrade hook timeouts (`status: syncing`), because Ghaymah's build pipeline is triggered primarily on new resource instantiation. Furthermore, filesystem modifications made inside running pods (`docker exec` or ephemeral scripts) are inherently transient: upon any pod crash, scale, or rollout, all modified files are reset to the base container image. **The Architectural Solution**: To achieve permanent, production-grade deployment directly within project `ghaymah-soc-microservices` without a terminal interface: 1. **Container Packaging**: An official lightweight `nginx:alpine` image was combined with the full, interactive SOC Command Center UI (`index.html`) using a standard `Dockerfile`: ```dockerfile FROM nginx:alpine COPY ./ /usr/share/nginx/html/ EXPOSE 80 ``` 2. **Artifact S3 Upload**: Packaged into a standard POSIX `tar.gz` archive and uploaded directly to Ghaymah's file storage API: `https://s3-nhost-proxy-83e02743fd61.hosted.ghaymah.systems/files/{userId}/{resourceId}.tar.gz` 3. **Resource Provisioning**: Created resource `soc-gateway-live` via `insert_ghaymah_cloud_resources_one` attached to project `ghaymah-soc-microservices` (`5be77e31-3ac2-48f5-b97d-735e8b2ad45f`) with source: ```json { "source": { "enabled": true, "type": "artifact", "ref": "", "url": "https://s3-nhost-proxy-83e02743fd61.hosted.ghaymah.systems/files/{userId}/{resourceId}.tar.gz" }, "container": { "image": "registry.ghaymah.systems/{userId}/{resourceId}:latest" }, "ports": [{ "number": 80, "expose": true }], "publicAccess": { "enabled": true, "domain": "soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems" } } ``` 4. **Automated Pipeline Execution**: Ghaymah's internal Kaniko/BuildKit builder fetched the artifact, compiled the container image to the internal container registry (`registry.ghaymah.systems`), and rolled out the deployment in under 35 seconds to `status: synced`. ### 6.4 Verification Evidence & Live Endpoint Audits 1. **Active SOC Gateway Ingress**: - **URL**: `https://soc-gateway-live-7c2ca9361c37.hosted.ghaymah.systems/` - **HTTP Status**: `200 OK` - **Server Header**: `nginx/1.31.6` - **Page Title**: `Ghaymah SOC Command Center | Cloud Security Mesh` - **Verification**: Browsing the URL displays the rich dark-mode Security Operations Center dashboard directly. The terminal interface has been 100% eliminated. 2. **Strict Private Backend Isolation (Re-verified)**: - **Target**: `https://soc-backend-d1895c70f6b2.hosted.ghaymah.systems/` - **Configuration**: `expose: false`, `publicAccess: false` - **HTTP Probe Result**: `HTTP 404 Not Found` (Confirmed isolated from public ingress). 3. **Legacy Cleanup**: - Legacy `ttyd` container `3d5666fe-95db-4e73-b6b2-dd0e41fca7f6` marked `deleted: true`. - External Cumin static app deleted (`HTTP 404`).