Atlas / Skills / cyberstrikeus / Cis Nginx V300 2 3 2

Cis Nginx V300 2 3 2CAUTION

skills/cyberstrikeus/cis-nginx-v300-2-3-2

Open-source AI-powered offensive security harness for automated penetration testing.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Version
3.0
Hosts
—
License
AGPL-3.0
Stars
3,185
01

Overview

Open-source AI-powered offensive security harness for automated penetration testing.

Read from source at commit eaf7d03223fcOBSERVED · 2026-10-18
Advertisement
02

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: cis-nginx-v300-2-3-2
description: "Ensure access to NGINX directories and files is restricted (Manual)"
category: cis-nginx
version: "3.0"
author: cyberstrike-official
tags: [cis, nginx, web-server, reverse-proxy, permissions-ownership, basic-configuration]
cis_id: "2.3.2"
cis_benchmark: "CIS NGINX Benchmark v3.0.0"
tech_stack: [nginx, linux, web-server]
cwe_ids: []
chains_with: []
prerequisites: []
severity_boost: {}
---

# CIS 2.3.2 — Ensure access to NGINX directories and files is restricted

## Profile Applicability

- Level 1 - Webserver
- Level 1 - Proxy
- Level 1 - Loadbalancer

## Description

The NGINX configuration directory (`/etc/nginx` or equivalent) and its contents should have restrictive permissions to enforce the principle of least privilege.

- **Directories** should be accessible only by the `root` user and the `root` group (and potentially read/execute by the group), but not by others.
- **Files** should be readable/writable by `root` and readable by the group, but inaccessible to others.

## Rationale

Restrictive file permissions prevent unauthorized users on the system from viewing sensitive configuration details, such as backend IP addresses, routing logic, or loaded module paths. By removing "world" access (permissions for "other"), we ensure that only administrators (via `sudo`) can interact with the web server configuration. This is a fundamental defense against information disclosure.

## Impact

Setting permissions to `640` (files) and `750` (directories) prevents non-privileged users from listing the configuration directory or reading configuration files.

## Audit Procedure

**1. Identify Configuration Directory:**

Run `nginx -V` and identify the `--conf-path` to determine the configuration root (e.g., `/etc/nginx`).

**2. Audit Directory Permissions:**

Run the following command to find directories with loose permissions:

```bash
find /etc/nginx -type d -exec stat -Lc "%n %a" {} +
```

**Evaluation:**

Verify that the output shows permissions of `750` (`drwxr-x---`) or more restrictive (e.g., `700`).

- **Standard:** `755` (`drwxr-xr-x`) allows world read/execute.
- **Hardened Target:** `750` or `700`.

**3. Audit File Permissions:**

Run the following command to find files with loose permissions:

```bash
find /etc/nginx -type f -exec stat -Lc "%n %a" {} +
```

**Evaluation:**

Verify that the output shows permissions of `640` (`-rw-r-----`) or more restrictive (e.g., `600`).

- **Standard:** `644` (`-rw-r--r--`) allows world read.
- **Hardened Target:** `640` or `600`.

## Remediation

To restrict access to the NGINX configuration directory and files, execute the following commands:

**1. Restrict Directories (750):**

Allow owner (`root`) full access, group read/execute, deny others.

```bash
find /etc/nginx -type d -exec chmod 750 {} +
```

**2. Restrict Files (640):**

Allow owner (`root`) read/write, group read, deny others.

```bash
find /etc/nginx -type f -exec chmod 640 {} +
```

**Note:** Private keys (e.g., `.key` files) require even stricter permissions (`400` or `600`) and should be addressed separately or manually verified here.

## Default Value

Default permissions are typically `755` for directories and `644` for files (world-readable).

## Additional Information

**Critical:** If your NGINX setup relies on the worker process (`nginx` user) reading configuration files directly (uncommon for standard configs, but possible with certain includes or SSL certificates not handled by the master process), ensure the `nginx` user is in the group that owns the files, **OR** use `chmod 644` if absolutely necessary. However, the Master Process (`root`) handles parsing, so `640`/`root:root` is usually safe.

## References

1. https://nginx.org/en/docs/ngx_core_module.html

## CIS Controls

| Controls Version | Control                                               | IG 1 | IG 2 | IG 3 |
| ---------------- | ----------------------------------------------------- | ---- | ---- | ---- |
| v8               | 3.3 Configure Data Access Control Lists               | Y    | Y    | Y    |
| v7               | 14.6 Protect Information through Access Control Lists | Y    | Y    | Y    |

## MITRE ATT&CK Mappings

| Tactic      | Technique                                           |
| ----------- | --------------------------------------------------- |
| Persistence | T1222 - File and Directory Permissions Modification |

## Profile

- Level 1 - Webserver
- Level 1 - Proxy
- Level 1 - Loadbalancer
03

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeNA
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (6)

MEDIUMInventory / provenance · inv.symlink · CWE-1104
packages/app/public/apple-touch-icon-v3.png
packages/app/public/apple-touch-icon-v3.png
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
packages/app/public/apple-touch-icon.png
packages/app/public/apple-touch-icon.png
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
packages/app/public/favicon-96x96-v3.png
packages/app/public/favicon-96x96-v3.png
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
packages/app/public/favicon-96x96.png
packages/app/public/favicon-96x96.png
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
packages/app/public/favicon-v3.ico
packages/app/public/favicon-v3.ico
Why it matters. link not followed
INFOPrompt injection · prompt.authority_framing · CWE-94, CWE-1427
SKILL.md:82
Allow owner (`root`) full access, group read/execute, deny others.

Gates applied: no_behavioural_pass.

Audited 2026-10-18 · audit v0.4.1 · source sha eaf7d03223fcfull audit observations/trust-audit/skill/cyberstrikeus__cis-nginx-v300-2-3-2.json · Report an issue / request a re-scan
04

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-18eaf7d03223fcCAUTIONB89first audit
05

Questions

What does the Cis Nginx V300 2 3 2 skill do?

Open-source AI-powered offensive security harness for automated penetration testing.

Is Cis Nginx V300 2 3 2 safe to install?

With care. The audit graded it B (89/100) and found 6 things worth knowing before you trust this skill, listed below with the exact line each was found on.

What can Cis Nginx V300 2 3 2 access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

How current is this page?

The grade is for one exact copy of the source (eaf7d03223fc), read on 2026-10-18. The repository is watched, and a new audit runs when it changes — this is the first audit.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: Cis Nginx V300 2 3 2](https://modelsatlas.com/skills/cyberstrikeus/cis-nginx-v300-2-3-2/badge.svg)](https://modelsatlas.com/skills/cyberstrikeus/cis-nginx-v300-2-3-2/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement