С большим удивлением обнаружил что один из наших домашних сервисов был взломан (причём довольно давно) и данные зашифрованы криптором-вымогателем.
Есть у меня (точнее, был) старый сервис GitLab, которым я пользовался в те времена, когда у Github не было возможности хостить приватные репозитории, так же нравился его встроенный CI. Но уже лет пять как я использую только Github, а Гитлаб крутился просто для истории. В Ноябре мониторинг сказал что контейнер с Гитлабом жрёт аномально ресурсов (в первую очередь CPU) и я его, не разбираясь, просто погасил. Я тогда подумал что его взломали и он спам рассылает.
Сегодня вот решил немного прибраться и окончательно удалить его. Запустил его снова, что бы глянуть — не забыл ли чего, но работал он как-то криво, говорил что все проекты пустые. Какое же моё удивление было, когда оказалось что репозитории зашифрованы, а по папкам раскидан __$$RECOVERY_README$$__.html с настойчивой просьбой поделиться финансами. Я посмотрел по названиям, вроде ничего не потеряно, но осадочек, как говориться — остался. Да, конечно мы делаем бекапы, но как раз этот сервис я подчистил, оставив только последний снапшот при переносе на другой диск.
Выглядит примерно так:
ls -lah mp3-encoder.git/
total 120K
drwxr-sr-x 6 petro petro 4,0K Feb 20 15:33 ./
drwxr-s--- 7 petro petro 4,0K Feb 20 15:33 ../
-rw-r--r-- 1 petro petro 57K Feb 20 15:33 '__$$RECOVERY_README$$__.html'
-rw-r--r-- 1 petro petro 176 Feb 20 15:33 config.locked
-rw-r--r-- 1 petro petro 80 Feb 20 15:33 description.locked
-rw-r--r-- 1 petro petro 5,0K Feb 20 15:33 FETCH_HEAD.locked
-rw-r--r-- 1 petro petro 32 Feb 20 15:33 HEAD.locked
drwxr-sr-x 2 petro petro 4,0K Feb 20 15:33 hooks/
drwxr-sr-x 2 petro petro 4,0K Feb 20 15:33 info/
-rw-r--r-- 1 petro petro 9,6K Feb 20 15:33 language-stats.cache.locked
drwxr-sr-x 4 petro petro 4,0K Feb 20 15:33 objects/
-rw-r--r-- 1 petro petro 112 Feb 20 15:33 packed-refs.locked
drwxr-sr-x 5 petro petro 4,0K Feb 20 15:33 refs/
Мораль такова — делайте бекапы, если сервис не используется — то гасите его или продолжайте обслуживать и обновлять. Используйте современные методы деплоя и изоляции: Gitlab выполнялся в контейнере, который в свою очередь был изолирован в виртуалке, которая в свою очередь находится в DMZ. Таким образом взломщики смогли только подгадить никому не нужные данные, даже получив возможность выполнения произвольного кода.
Сама дыра: CVE-2021-22205, Gitlab был версии 13.3 (последний раз обновлял в Августе 2020).