The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Хостинг Savannah.gnu.org взломан неизвестными злоумышленниками

30.11.2010 17:35

Работа хостинга свободных проектов savannah.gnu.org, в рамках которого развиваются многие GNU-инструменты, временно приостановлена. Судя по опубликованному на сайте сообщению, сервер был взломан через подстановку SQL-запроса в web-сервисе Savane2, в результате чего злоумышленнику удалось получить доступ к базе аккаунтов, содержащей шифрованные пароли всех пользователей хостинга. Используя данную базу, злоумышленнику удалось подобрать некоторые пароли и использовать их для доступа к размещенным на хостинге проектам.

В настоящее время ведется работа по восстановлению содержимого сервера из резервной копии, созданной 23 ноября. Все изменения, добавленные в репозитории исходных текстов после 23 ноября потребуют ручного восстановления. Статус восстановления можно посмотреть в микроблоге fsfstatus. Работа web-интерфейса будет восстановлена после устранения уязвимости, проведения дополнительного аудита кода платформы Savane2 и сброса паролей пользователей. В дальнейшем планируется перейти на использование более стойкого и безопасности метода хранения паролей (судя по всему, до сих пор пароли размещались в SQL-таблице, доступной на чтение пользователю, под которым работал web-интерфейс проекта).

Одновременно неудача постигла сервер lists.gnu.org, на котором в RAID-массиве оказались повреждены сразу два диска. Несколько часов назад проблемы наблюдались и с работой www.gnu.org, но в данный момент сайт возвращен к жизни.

Дополнение: на сайте фонда свободного ПО опубликована заметка с изложением хронологии событий. Атака была произведена 24 ноября с грузинского блока IP-адресов. После загрузки базы пользователей, атакующим удалось 26 ноября подобрать пароль одного из администраторов, что позволило им вечером того же дня пробраться на сервер www.gnu.org и разместить на нем в тестовых целях собственные страницы.

После успешной загрузки тестовой страницы, злоумышленники нашли директорию, в которой выполняются PHP-скрипты и загрузили туда web-shell на языке PHP, после чего принялись тестировать возможность установки руткитов. Данная активность была сразу замечена администраторами, которые в 1:37 27 ноября восстановили изначальное состояние сайта из резервной копии. Через несколько часов атакующие вновь проникли на сайт, через ранее запущенный web-shell. После чего администраторы блокировали работу кластера Savannah и web-сайта проекта GNU и начали более детальный разбор действий злоумышленников. Через несколько часов сайт работа сайта www.gnu.org была восстановлена на новом сервере.

Восстановление работы savannah.gnu.org и аудит кода платформы Savane2 еще не завершен. Так как точно не установлено удалось ли злоумышленникам получить root-доступ в системе и проникли ли они на другие узлы кластера, решено переустановить с нуля содержимое всех серверов Savannah.

  1. Главная ссылка к новости (http://lwn.net/Articles/417709...)
  2. OpenNews: Причины недоступности и утери данных на хостинге Savannah.gnu.org
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/28836-security
Ключевые слова: security, Savannah
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, klalafuda (?), 18:11, 30/11/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    SQL инжект - да неужели?! Я думал, что уж в 21м то веке народ уже не позволяет себе столь откровенных глупостей в дизайне.. :-/
     
     
  • 2.5, VoDA (ok), 18:31, 30/11/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если язык это позволяет, то рано или поздно проверка на инжект будет забыта. Человеческий фактор однака )))
     
     
  • 3.21, Аноним123321 (ok), 08:54, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Если язык это позволяет, то рано или поздно проверка на инжект будет забыта
    >>>проверка на инжект<<<
    >>>>проверка<<<<

    o_0!!!

    какая нафиг проверка? вы что с луны свалились?! :-D

    ...никакие проверки на инжект никогда не делаются, а просто навсего происходит разделение SQL-кода-выражения на две части -- на само константное-выражение и на аргументы к нему

    (в результате чего SQL-константное-выражение остаётся как есть, а аргументы _автоматически_ ЭКРАНИРУЮТСЯ)

    и забыть (человеческий фактор) такое сделать -- попросту НЕВОЗМОЖНО :-) :-)

    вот объясни -- как можно ПОСЛУЧАЙНОСТИ ЗАБЫТЬ сделать экранизацию в выражении cursor.execute(...) ???, где:

        import MySQLdb
        conn = MySQLdb.connect(host = "localhost",
                                 user = "testuser",
                                 passwd = "testpass",
                                 db = "test")
        cursor = conn.cursor()
        animal = 'snake'
        name = 'turtle'
        cursor.execute("""
               UPDATE animal SET name = %s
               WHERE name = %s
             """, (animal, name))

     
     
  • 4.23, Sw00p aka Jerom (?), 09:34, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>вот объясни -- как можно ПОСЛУЧАЙНОСТИ ЗАБЫТЬ сделать экранизацию в выражении cursor.execute(...) ???, где:

    пхп открой уважаемый
    если ты знаешь что такое SQl injection это не означает что все знают


    пс: все уязвимости появились после появления этого долбанного пхп )))

     
     
  • 5.25, SubGun (ok), 10:30, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Само собой, виноват именно php))) В убожестве ВАЗ тоже виноваты станки, а не кривые руки производителей.
     
     
  • 6.32, Sw00p aka Jerom (?), 17:26, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    виноваты кривые руки не производителей ВАЗа а производителей станков
     
     
  • 7.35, IGX (?), 06:52, 02/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то у ВАЗа был свой крупный завод станков.
     
  • 5.27, klalafuda (?), 11:13, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > пхп открой уважаемый
    > если ты знаешь что такое SQl injection это не означает что все
    > знают
    > пс: все уязвимости появились после появления этого долбанного пхп )))

    В PHP сто лет в обед как есть PDO с вменяемой поддержкой prepared statements. Точно так же как в Perl есть DBI или в Ruby или Python свои аналогичные обвязки. Если кто-то их не использует - это уже сугубо его личные сексуальные трудности и язык здесь бессилен. Любой.

     
     
  • 6.33, Sw00p aka Jerom (?), 17:31, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >> пхп открой уважаемый
    >> если ты знаешь что такое SQl injection это не означает что все
    >> знают
    >> пс: все уязвимости появились после появления этого долбанного пхп )))
    > В PHP сто лет в обед как есть PDO с вменяемой поддержкой
    > prepared statements. Точно так же как в Perl есть DBI или
    > в Ruby или Python свои аналогичные обвязки. Если кто-то их не
    > использует - это уже сугубо его личные сексуальные трудности и язык
    > здесь бессилен. Любой.

    пр препейред слышали проценты - ибо пхпешники такой тип прогеров (в основном начинающих) которым - лиш бы работало

    и плюс виноваты разработчики субд - нахрена допустим в sql разрешать не закрытый многострочный комент ? или ваще нахрена они там сдались коментарии ?

    виноваты разработчики API к субд - нахрена создавать небезопасные функции ?

    пс: о да о безопасности должен думать проггер бля - а шо человек пишуший API к субд не проггер ? и кто виноват ?

     
     
  • 7.34, klalafuda (?), 19:13, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > пс: о да о безопасности должен думать проггер бля - а шо человек пишуший API к субд не проггер ? и кто виноват ?

    В реальности же виноват лишь один дурак, которому указали Путь, следуя которым он избавится от указанных проблем как класса. Тогда как он вместо того, чтобы заняться делом, все продолжает с маниакальной настойчивостью искать виноватых. 'Ищите ищите - должон быть' (c) фильм.

     
  • 4.26, klalafuda (?), 11:10, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > вот объясни -- как можно ПОСЛУЧАЙНОСТИ ЗАБЫТЬ сделать экранизацию в выражении cursor.execute(...) ???, где:

    Все зависит от того, что в конечном итоге вызывает этот cursor.execute(sql). Если он транслируется скажем в prepared statement то тут при всем желании инжекта не будет, чтобы не задавалось в animal и name. Просто по-определению. Если же он сам конструирует конечное SQL выражение из шаблона и аргументов, которое потом передает на исполнение - то тут уже it depends. При кривых ручках можно получить все, что угодно, и никакие враперы не помогут.

     
  • 2.6, User294 (ok), 18:43, 30/11/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > SQL инжект - да неужели?! Я думал, что уж в 21м то
    > веке народ уже не позволяет себе столь откровенных глупостей в дизайне.. :-/

    Ну, кому там не нравились переполнения буфера? Хавайте теперь скуль-иньекции, вполне себе вариант :)

     
     
  • 3.10, Ва (?), 20:21, 30/11/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    SQL - вообще для блонидинок, но "переполнение буфера" - это не к ним, а к архитектуре процессора
     
     
  • 4.11, Marbleless (?), 20:52, 30/11/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >"переполнение буфера" - это не к ним, а к архитектуре процессора

    Нет, это чаще всего к Деннису Ричи.

     
     
  • 5.24, Sw00p aka Jerom (?), 09:36, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>"переполнение буфера" - это не к ним, а к архитектуре процессора
    > Нет, это чаще всего к Деннису Ричи.

    а причём тут Ричи ? то что у вас башка не варит за это надо Ричи винить ?

    а то что вы даже понятия не имеете как устроена память - что за это Ричи надо винить ?


     
     
  • 6.30, Marbleless (?), 14:02, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >а то что вы даже понятия не имеете как устроена память - что за это Ричи надо винить ?

    Да ну? Просветите меня, профессор, почему же это переполнение буфера вообще невозможно отследить без специальной аппаратной поддержки, если программа написана на высокоуровневом языке программирования? А то мы, печники, по-своему мыслим.

    Большинство прикладных программ на низком уровне с памятью не работают. Переполнение буфера чаще всего возникает из-за отсутствия проверки границ массивов, которая могла бы быть реализована на уровне компилятора, но ее не реализовали в C для выигрыша в производительности. Арифметика указателей осложняет проверку, но можно было бы, например, усложнить указатели, сделав их не обычными числами, а специальными конструкциями, чтобы указывать компилятору, в каких пределах они могут изменяться. Всего этого в языке C нет, даже опционально (как в Фортране, например), и, скорее всего, никогда не будет.

    А поскольку большинство программ написано на C, мы с этим будем еще долго жить.

     
  • 4.14, anonymous (??), 21:12, 30/11/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы можете предложить что-то лучше?
     

  • 1.13, Аноним (-), 21:01, 30/11/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что-то GNU не везет.. Хотя может это просто кара ?
     
  • 1.20, gkv311 (ok), 08:14, 01/12/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я то думаю, чего я не могу бинарники linphone для win скачать с понедельника с этого сервера ;))...
     
  • 1.22, ДяДя (?), 09:31, 01/12/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно. Тоже думал, что в 21-м веке такого не бывает.
    Пытался проделать такое  с Web-сервисом Java EE приложения на GlassFish-е.
    К моему великому сожалению - это оказалось невозможным. Хотя допускаю, что в некоторых jdbc драйверах могут быть дыры, но это маловероятно. Я пробовал jTDS и MS SQl. Всё преобразуется (если не изменяет память) в хранимые процедуры с параметрами, которые создаются непосредственно перед извлечением данных, а потом сразу же выполняются с подстановкой параметра, но все опасные символы автоматически экранированы.
     
     
  • 2.28, Аноним (-), 11:38, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При желании даже JDBC позволяет выполнять SQL запрос, который можно перед этим выстроить без параметров в строке :)
    Так что тут тоже всё возможно.
     
     
  • 3.29, ДяДя (?), 13:47, 01/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно :-) Кривыми руками везде можно накосячить.
    Это позволяет любое средство обращения к БД через SQL.

    Я просто хотел сказать, что строить запрос в коде руками плохо :-) И есть куча средств, чтобы этого не делать. И это вроде всем понятно и известно. Всегда будут находится недокументированные возможности.

     

  • 1.31, dq0s4y71 (??), 14:13, 01/12/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То-то у меня кое-какие пакеты с savannah.gnu.org с первого раза не скачались!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру