heygrc
SOC 2 CC6.6 im Code

Draußen bleibt draußen.

CC6.6 ist das SOC-2-Kriterium zum Schutz vor Bedrohungen von Quellen außerhalb der Systemgrenzen: der Perimeter. Es verlangt, dass Zugriffskontrollen zwischen der Außenwelt und den Systemen platziert werden, sodass das, was nur intern erreichbar sein sollte, nicht offen im Internet steht. Der Großteil dieses Perimeters ist heute Infrastructure-as-Code: eine Sicherheitsgruppe, eine Firewall-Regel, eine Netzwerkrichtlinie. Das bedeutet, dass er in einem Pull Request entschieden und in einem einzigen Commit erweitert werden kann.

How it shows up in a diff

The shapes the same control failure takes.

CC6.6 wird geschwächt, wenn eine Änderung die Grenze öffnet, meist um etwas schnell erreichbar zu machen. Die wiederkehrenden Muster:

  • Eine Firewall oder Sicherheitsgruppe wird für die Welt geöffnet

    Die Quelle einer Ingress-Regel wird auf 0.0.0.0/0 (oder ::/0) erweitert, sodass ein Port, der zuvor nur intern erreichbar war, nun vom gesamten Internet aus zugänglich ist.

  • Eine verwaltete Ressource wird öffentlich erreichbar gemacht

    Eine Datenbank, ein Cache oder ein Bucket wird von privat auf öffentlich umgestellt (ein Flag für öffentliche Zugänglichkeit, ein öffentliches Subnetz), sodass sie direkt von außen erreichbar ist, anstatt nur über die Anwendung.

  • Ein Admin- oder Management-Port wird freigelegt

    SSH, RDP, ein Datenbank-Port oder eine Admin-Konsole wird dem Internet ausgesetzt, anstatt nur über einen Bastion-Host oder ein VPN erreichbar zu sein.

  • Eine Allowlist wird erweitert

    Ein restriktiver Quellenbereich wird verbreitert, eine einzelne Adresse wird zu einem ganzen Bereich, oder eine Allowlist erhält einen Wildcard-Eintrag, sodass mehr von außen Zugang erhält.

  • Eine Perimeter-Kontrolle wird umgangen

    Ein neuer Pfad umgeht den Load Balancer, das Gateway oder die WAF, die vor dem System steht, sodass externer Traffic direkt einen internen Dienst erreicht.

Worked example

Eine Sicherheitsgruppe, die eine Datenbank dem Internet öffnet.

Eine verwaltete Postgres-Datenbank, die auf einem öffentlich routbaren Endpunkt läuft, muss für einen einmaligen Migrationsvorgang von einem Entwickler-Laptop aus erreichbar sein. Dafür wird die Quelle der Ingress-Regel erweitert, um die Verbindung herzustellen. Die schnelle Änderung bleibt bestehen, und nun akzeptiert die Sicherheitsgruppe Verbindungen von jeder Adresse, nicht nur vom Subnetz der Anwendung, bei einer Datenbank, die einen Pfad aus dem Internet hat.

infra/security_groups.tf+1 -1
resource "aws_security_group_rule" "db_ingress" {  from_port   = 5432-  cidr_blocks = [var.app_subnet_cidr]+  cidr_blocks = ["0.0.0.0/0"]}
heygrcSOC 2 CC6.6

Dies entfernt die Quellenbeschränkung für den Datenbank-Port, sodass die Sicherheitsgruppe nun Ingress von jeder Adresse zulässt. Bei einer Datenbank, die einen Pfad aus dem Internet hat, bedeutet das das gesamte Internet. CC6.6 zielt darauf ab, vor Bedrohungen von außerhalb der Systemgrenzen zu schützen, und eine von überall erreichbare Datenbank ist genau die Art von Exposition, die damit verhindert werden soll. Beschränken Sie die Quelle auf das Subnetz oder die Sicherheitsgruppe der Anwendung oder greifen Sie über einen Bastion-Host für einmaligen Zugriff zu, anstatt 0.0.0.0/0 zu verwenden.

What an auditor does with this

Der Perimeter wird gegen das tatsächlich Erreichbare geprüft.

Ein Prüfer nimmt eine Aussage wie 'wir haben eine Firewall' nicht einfach hin, sondern überprüft die tatsächliche Grenze: welche Ports sind offen, für welche Quellen und ob etwas, das intern sein sollte, von außen erreichbar ist. Eine für 0.0.0.0/0 geöffnete Sicherheitsgruppe, eine auf öffentlich zugänglich umgestellte Datenbank oder ein dem Internet ausgesetzter Admin-Port sind die Art von Ausnahmen, die zu einem Befund führen, und sie wurden meist durch eine einzelne Infrastrukturänderung eingeführt. Wenn man sie im Diff erkennt, bleibt die Exposition aus der Umgebung, die für die Bewertung herangezogen wird.

What this is, and is not

Eine Prüfung, kein Netzwerk-Scan.

heygrc markiert Änderungen, die CC6.6 betreffen, und verweist auf das Kriterium, sodass die Korrektur im Pull Request erfolgt. Es scannt nicht den Perimeter oder führt Cloud-Posture-Tools aus. Es erkennt den Moment, in dem eine Änderung die Grenze öffnet, direkt im Diff.