chmod 777 - Linux-machtigingen - backdoor-aanval

Chmod 777 is geen oplossing: hoe een verkeerd geconfigureerd script een achterdeur werd

Hook: De dag dat de Pipeline Kapot (Chmod 777)

Als het gaat om CI/CD beveiliging zijn er weinig fouten zo gevaarlijk als het uitvoeren van chmod 777. Misbruik hiervan overschrijft Linux-machtigingen, verwijdert beveiligingen en opent de deur voor potentiële backdoor-aanvallen. Het begint zo: de CI/CD pipeline is rood, het team is geblokkeerd en de terminal spuugt het gevreesde uit:

nginx

Geen toestemming

In plaats van de grondoorzaak op te sporen, kiest een projectontwikkelaar voor de nucleaire optie:

bash
chmod 777 deploy.sh

⚠️ Onveilig voorbeeld: geeft volledige toegang aan iedereen. Niet in productie uitvoeren.
chmod 777 deploy.sh

De bouw wordt groen. De druk daalt. Iedereen gaat weer aan het werk. Maar op de achtergrond omzeilt dat ene commando alle beschermingsmaatregelen die Linux-machtigingen bieden, waardoor de weg wordt vrijgemaakt voor een backdoor-aanval die het hele systeem in gevaar kan brengen.

De werkelijke impact van chmod 777 op Linux-machtigingen

Linux-machtigingen vormen de basis voor beveiliging op bestandsniveau in Unix-achtige systemen. Ze bepalen wie een bestand kan lezen, schrijven of uitvoeren. Elk bestand heeft:

  • Drie soorten toestemmingen: lezen (R), schrijven (F), en uitvoeren (X).
  • Drie toestemmingsgroepen: eigenaar, groep en anderen.

Wanneer je rent chmod 777, verleen je lees-, schrijf- en uitvoerrechten aan alle drie de groepen. Het is alsof je elke deur in je huis open laat, niet alleen voor vrienden, maar ook voor vreemden en iedereen die voorbijkomt.

Veilige demonstratie:

bash
# Everyone can read, write, and execute this file
chmod 777 deploy.sh

In geïsoleerde ontwikkelmachines lijkt dit misschien onschuldig. Maar in gedeelde build-agents, containeromgevingen of multi-user Linux-systemen kan dit een probleem zijn. chmod 777 verandert elk bestand dat het aanraakt in een open uitnodiging voor manipulatie: de perfecte basis voor een backdoor-aanval.

Aanvalsvector: van chmod 777 naar backdoor-aanval

Zo werkt een enkele chmod 777 kan een achterdeur worden aanvallen:

  1. Een ontwikkelaar stelt chmod 777 op een implementatie- of buildscript om een machtigingsfout te verhelpen
  2. Het bestand wordt wereldwijd beschrijfbaar; elke gebruiker of elk proces kan het wijzigen
  3. Een aanvaller voegt schadelijke code in het script in
  4. De CI/CD pipeline voert het gewijzigde script uit en voert de payload van de aanvaller uit met verhoogde privileges

⚠️ Onveilig voorbeeld: niet in productie uitvoeren. Hier gebruikt om riskante rechten te illustreren.
chmod 777 build.sh

Eenvoudige aanvalsstroom:

bash

chmod 777 build.sh
      ↓
Attacker edits script
      ↓
CI/CD executes modified script
      ↓
Malicious code runs in build or production

Waar dit bijzonder gevaarlijk wordt:

  • Gedeelde build-agenten met meerdere teams of projecten
  • Hostvolumes koppelen in Docker- of Kubernetes-pods
  • Open source-opslagplaatsen waar bijdragers veranderingen kunnen doorvoeren of samenvoegen

Zodra deze keten begint, kan een backdoor-aanval zich naar de productieomgeving verplaatsen, inloggegevens lekken, artefacten wijzigen of permanente toegangspunten openen.

Case Study: Backdoor-aanval via verkeerd geconfigureerd script

Laten we het terugbrengen tot de essentie:

  1. De ontwikkelaar draait chmod 777 build.sh omzeilen van een CI/CD fout
  2. Een andere gebruiker of een kwaadaardig proces in dezelfde omgeving bewerkt het script
  3. De pipeline voert het gecompromitteerde script uit met CI/CD machtigingen voor serviceaccounts
  4. Als een kwetsbaar open source-pakket tijdens dit proces wordt bijgewerkt, kan de backdoor-aanval zich uitbreiden naar de productieomgeving.

Dit is hoe chmod 777 Bovendien kunnen lakse Linux-machtigingen aanvallers een vrije doorgang geven tot uw implementatieproces.

Waarom ontwikkelaars nog steeds chmod 777 gebruiken (en waarom het een valkuil is)

Zelfs ervaren ontwikkelaars trappen in deze valkuil, omdat chmod 777 voelt als een snelle oplossing wanneer:

  • Het verpakken van artefacten levert fouten op die erop wijzen dat toestemming is geweigerd
  • Shell-scripts mislukken in Docker omdat ze niet uitvoerbaar zijn
  • Logbestanden in gedeelde volumes kunnen niet worden geschreven.

Maar hier is het addertje onder het gras: uzingen chmod 777 Negeert de hoofdoorzaak, negeert de Linux-machtigingen en schendt het principe van minimale privileges. In plaats van de blokkade te verwijderen, nodigt het uit tot een backdoor-aanval.

Veilige alternatieven voor chmod 777

If chmod 777 is de nucleaire optie, dit zijn de chirurgische aanvallen:

bash

# Allow team to execute
chmod 750 script.sh

# Read-only config for team members
chmod 640 config.yml

# Correct ownership for controlled access
chown ciuser:devteam deploy.sh
chmod 750 deploy.sh

Dockerfile beste praktijken:

dockerbestand

# Secure permissions at build time
COPY build.sh /path/project/build.sh
RUN chown ciuser:devteam /path/project/build.sh \
    && chmod 750 /path/project/build.sh
USER ciuser

GitHub-acties voorbeeld:

yaml

- name: Set secure file permissions
  run: |
    chown ciuser:devteam deploy.sh
    chmod 750 deploy.sh

Deze zorgen ervoor dat Linux-machtigingen op de juiste manier worden gehandhaafd, ongeautoriseerde wijzigingen worden geblokkeerd en het risico op een backdoor-aanval wordt verkleind.

Hoe u chmod 777-misconfiguraties kunt detecteren en voorkomen

Pre-commit stadium

  • Git hooks afwijzen commits bevattende chmod 777:

bash
# Safe example — blocks commits containing insecure chmod 777 usage
if grep -R "chmod 777" .; then exit 1; fi

Bouwfase

  • Integreren SAST om onveilige opdrachten te markeren
  • Mislukte CI-taken als vinden detecteert bestanden die voor iedereen beschrijfbaar zijn

Runtime-fase

Scan naar bestanden met globale schrijftoegang:

bash
# Safe example — lists files with global write permissions
find /path/project -perm -o=w -type f

Lijst met cijfers:

bash
openssl ciphers -v 'ALL:eNULL' | column -t

Beleidshandhaving

  • Gebruik Policy-as-Code om toegestane Linux-machtigingen te definiëren
  • Stuur waarschuwingen voordat risicovolle implementaties live gaan

Als u deze controles automatiseert, verkleint u de kans dat chmod 777 ooit de productiefase bereikt, en daarmee de kans op een achterdeuraanval.

DevSecOps & Cultuur: Chmod 777 bij de bron voorkomen

Beveiliging inbouwen in DevSecOps-cultuur is effectiever dan het later te repareren:

  1. Beleid-als-code om veilige Linux-machtigingen af te dwingen in elke pipeline
  2. Scriptbeoordelingen die toestemmingscontroles voor implementatiescripts omvatten
  3. Veilige sjablonen voor Docker, Kubernetes en CI/CD configs

Training over hoe chmod 777 creëert een vector voor backdoor-aanvallen.

Waarom is chmod 777 nooit een oplossing?

Chmod 777 is geen snelle oplossing, maar een risicovermenigvuldiger. Het negeert zorgvuldig ontworpen Linux-machtigingen, verwijdert beveiligingen en maakt de weg vrij voor een backdoor-aanval die uw systeem kan compromitteren. CI/CD pipelines en productiesystemen.

De oplossing is niet alleen het veranderen van opdrachten; het is het aannemen van veilige machtigingen, het automatiseren van controles en het inbedden van het principe van de minste bevoegdheden in uw DevSecOps-proces. Tools zoals Xygeni kan helpen bij het detecteren van onveilige configuraties en bestanden die onbedoeld in de productieomgeving kunnen worden geschreven, voordat ze de productie bereiken. Zo creëert u een vangnet zonder dat de levering wordt vertraagd.

sca-tools-software-compositie-analyse-tools
Prioriteer, herstel en beveilig uw softwarerisico's
Gratis proefperiode van 7-dag
Geen kredietkaart nodig

Beveilig uw softwareontwikkeling en -levering

met Xygeni-productsuite