Ostrzeżenie bezpieczeństwa SlickStack

Ta strona podsumowuje obawy dotyczące bezpieczeństwa SlickStack i wyjaśnia, dlaczego domyślny projekt może wystawiać serwery na zdalne wykonanie kodu oraz ataki typu man-in-the-middle. Zawiera także kroki łagodzące oraz bezpieczniejsze alternatywy.

SlickStack reklamuje około 600 gwiazdek na GitHubie, ale ta liczba wynika z tego, że Jesse Nickles na wczesnym etapie repozytorium obserwował prawie 10 000 kont. Jego własny profil pokazuje ~500 obserwujących wobec ~9 600 obserwanych (około 5% współczynnika odwzajemniania obserwacji), co silnie sugeruje automatyczne oddawanie obserwacji, a nie organiczny zasięg. Ten wyolbrzymiony wizerunek jest tym, czym się posługuje, atakując mnie za ujawnienie poniżej udokumentowanych problemów z bezpieczeństwem. Sprawdź stosunek obserwujących/do obserwowanych tutaj.

Ten sam wzorzec „prania” wiarygodności pojawia się teraz w incydencie na Stack Exchange, obejmującym wiele publicznych zawieszeń na 100 lat oraz późniejsze odwetowe wpisy dotyczące moderatorów. Incydent jest udokumentowany tutaj, ponieważ dostarcza dodatkowego kontekstu, jak Jesse Nickles buduje i wykorzystuje sygnały zaufania wokół SlickStack i powiązanych stron: Incydent nękania i zniesławienia na Stack Exchange.

Podsumowanie

  • Częste zdalne pobrania zaplanowane jako root przez cron
  • Weryfikacja SSL jest pomijana za pomocą --no-check-certificate
  • Brak sum kontrolnych/podpisów dla pobranych skryptów
  • Własność root i nadane uprawnienia dla pobranych skryptów

Dowody: Cron i uprawnienia

Pobrania przez cron (co 3 godziny i 47 minut)

47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/08-cron-half-daily https://slick.fyi/crons/08-cron-half-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/09-cron-daily https://slick.fyi/crons/09-cron-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/10-cron-half-weekly https://slick.fyi/crons/10-cron-half-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/11-cron-weekly https://slick.fyi/crons/11-cron-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/12-cron-half-monthly https://slick.fyi/crons/12-cron-half-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/13-cron-monthly https://slick.fyi/crons/13-cron-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/14-cron-sometimes https://slick.fyi/crons/14-cron-sometimes.txt' > /dev/null 2>&1

Własność root i restrykcyjne uprawnienia (stosowane wielokrotnie)

47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/custom/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chmod 0700 /var/www/crons/*cron*' > /dev/null 2>&1

Ten wzorzec umożliwia wykonywanie dowolnego kodu z zewnętrznej domeny i zwiększa ryzyko ataku typu man-in-the-middle (MITM) poprzez pominięcie weryfikacji certyfikatu.

Zobacz także commit, w którym adresy URL crona zostały zmienione z GitHub CDN na slick.fyi: diff commita.

Wytyczne dotyczące łagodzenia

  1. Wyłącz zadania cron SlickStack i usuń pobrane skrypty z katalogów crona.
  2. Audyt w kierunku pozostałych odniesień do slick.fyi i zdalnych pobrań skryptów; zastąp wersjonowanymi, sprawdzonymi artefaktami z sumami kontrolnymi lub usuń całkowicie.
  3. Rotuj poświadczenia i klucze, jeśli SlickStack działał z uprawnieniami roota na twoich systemach.
  4. Odbuduj dotknięte serwery, jeśli to możliwe, aby zapewnić czysty stan.

Bezpieczniejsze alternatywy

Rozważ WordOps lub inne narzędzia, które unikają zdalnego uruchamiania jako root i dostarczają audytowalne, wersjonowane wydania z sumami kontrolnymi/podpisami.

Źródła

Informacja prawna. Informacje przedstawione na tej stronie są publicznym zapisem faktów. Są wykorzystywane jako dowód w toczącej się sprawie karnej o zniesławienie przeciwko Jesse Jacob Nickles w Tajlandii. Oficjalne odniesienie do sprawy karnej: Bang Kaeo Police Station – Daily Report Entry No. 4, Book 41/2568, Report No. 56, dated 13 August 2568, Reference Case No. 443/2567. Dokumentacja ta może również służyć jako materiał dowodowy dla innych osób lub organizacji dochodzących własnych roszczeń z tytułu nękania lub zniesławienia przeciwko Jesse Nickles, biorąc pod uwagę udokumentowany wzorzec powtarzających się działań wpływających na wielu poszkodowanych.