Ну ладно, не половина, а три четверти. Сегодня я хотел бы напомнить о том, что, опубликовав бинарные пакеты для любимых пользователей, разработчик не должен расслабляться. Особенно, если он публикует исходники. Почему же? А потому что недавно я скачал чужие исходники и вот что из этого вышло.
Сразу предупреждаю, что эта история будет не очень поучительна для людей с прямыми руками и системами контроля версий.
«Никому нельзя доверять, даже себе. Мне можно». Мюллер
Началось всё пару дней назад, когда у нас в жаббер-конференции qutIM кто-то запостил ссылку на новый мультипротокольный клиент, созданный в соответствии с пожеланиями пользователей портала asechka.su. По счастливой случайности клиент оказался основан на qutIM, соответственно был выпущен под GPL и внизу страницы автор опубликовал ссылку на исходники.
Я оказался любопытным и жадно кинулся качать эти исходники. Бинарник программы меня не интересовал, поэтому я ограничился тем, что скормил его на проверку virustotal.com — доводилось слышать о клиентах с троянами, которые выкладывает асечка.су. Но этот оказался чистым, и поэтому я перешел к архиву с исходниками. И тут меня ждал сюрприз.
Что же это такое? А это лежащие в архиве:
Когда я это увидел, я чуть не подавился чаем. Ну, думаю, может какой-то старый аккаунт, чисто для демонстрации или еще что. Но руки автоматически тянутся к файлу accountsettings.ini и через несколько минут я уже вбиваю логин и пароль в гмыло. Да, неожиданно для себя я вошёл в чужой профиль. Мне не хотелось пакостить или читать чужую почту, я успел только понять по первым заголовкам, что автор — некий фрилансер и хабрапользователь. Я отправил от его имени ему же самому письмо с сообщением, что кодить надо аккуратнее и приглашением зайти в конференцию кутима, где намеревался рассказать обо всех ляпах. Я пометил это письмо звёздочкой, как важное. Через полчаса обнаружив, что почту он не читает, я сменил еще и статус в gtalk в надежде, что кто-нибудь из друзей заметит и позвонит хозяину. Прождав ещё немного, я вышел из аккаунта.
На следующий день пароль сменился ближе к вечеру. По крайней мере, я ради интереса вбивал его днём, и он ещё работал.
За это время я мог вытащить из почты все пароли, письма от друзей, любовниц, девушки/жены, собрать информацию обо всех клиентах, присланных материалах и всём, что там только может быть. И всему виной был бы неаккуратно созданный архив. В конференцию к нам он так и не зашел, но сегодня я проверил — архив с исходниками на сайте сменился, почти весь вышеперечисленный хлам из него был вычищен. Собственно поэтому я и публикую данный топик без малейших угрызений совести, по моим стопам больше никто не пройдёт.
Молодой разработчик, запомни: любой свой труд надо пятьдесят раз проверять перед публикацией. Даже свои статьи я каждый раз проверяю: нет ли на картинке чего-нибудь лишнего, не запостил ли я случайно ссылку, не предназначенную для читателей. Что уж говорить о коде. Запомни также и другое: системы контроля версий — это хорошо. В них надо хранить код и не хранить сгенерированных файлов проектов, скомпилированных бинарников и прочей ереси. Любая система контроля версий умеет делать экспорт, порой даже (например, как bzr или git) сразу в архив. Пользуйтесь этим.
И напоследок, пожелание автору программы. Смени все свои пароли. И, кстати, больше не используй такие простые.
Никто не гарантирует, что в исходники не полез никто, кроме меня, и что все эти люди добрые, белые и пушистые.
Хорошего дня и безопасных вам релизов.
Сразу предупреждаю, что эта история будет не очень поучительна для людей с прямыми руками и системами контроля версий.
«Никому нельзя доверять, даже себе. Мне можно». Мюллер
Началось всё пару дней назад, когда у нас в жаббер-конференции qutIM кто-то запостил ссылку на новый мультипротокольный клиент, созданный в соответствии с пожеланиями пользователей портала asechka.su. По счастливой случайности клиент оказался основан на qutIM, соответственно был выпущен под GPL и внизу страницы автор опубликовал ссылку на исходники.
Я оказался любопытным и жадно кинулся качать эти исходники. Бинарник программы меня не интересовал, поэтому я ограничился тем, что скормил его на проверку virustotal.com — доводилось слышать о клиентах с троянами, которые выкладывает асечка.су. Но этот оказался чистым, и поэтому я перешел к архиву с исходниками. И тут меня ждал сюрприз.
Что же это такое? А это лежащие в архиве:
- Сгенерированный каталог CMakeFiles и Makefile'ы
- Файлы .directory, которые плодит Dolphin в KDE
- Сгенеренные файлы проекта QtCreator
- Один объектный файл
- Несколько линуксовых бэкапных файлов (filename~)
- Несколько пустых файлов bar_chunk.png_
- Некий файл YandexPackSetup-ase4ka-20100630.exe, подозреваю, какой-то установщик этой самой асечки
- Архив style.rar со стилями (rar внутри zip, круто, да?)
- И самое смешное: папка qutim_vs, в которой лежит собранный бинарник программы, dll-ки с плагинами и папка config с настроенным gtalk-профилем
Когда я это увидел, я чуть не подавился чаем. Ну, думаю, может какой-то старый аккаунт, чисто для демонстрации или еще что. Но руки автоматически тянутся к файлу accountsettings.ini и через несколько минут я уже вбиваю логин и пароль в гмыло. Да, неожиданно для себя я вошёл в чужой профиль. Мне не хотелось пакостить или читать чужую почту, я успел только понять по первым заголовкам, что автор — некий фрилансер и хабрапользователь. Я отправил от его имени ему же самому письмо с сообщением, что кодить надо аккуратнее и приглашением зайти в конференцию кутима, где намеревался рассказать обо всех ляпах. Я пометил это письмо звёздочкой, как важное. Через полчаса обнаружив, что почту он не читает, я сменил еще и статус в gtalk в надежде, что кто-нибудь из друзей заметит и позвонит хозяину. Прождав ещё немного, я вышел из аккаунта.
На следующий день пароль сменился ближе к вечеру. По крайней мере, я ради интереса вбивал его днём, и он ещё работал.
За это время я мог вытащить из почты все пароли, письма от друзей, любовниц, девушки/жены, собрать информацию обо всех клиентах, присланных материалах и всём, что там только может быть. И всему виной был бы неаккуратно созданный архив. В конференцию к нам он так и не зашел, но сегодня я проверил — архив с исходниками на сайте сменился, почти весь вышеперечисленный хлам из него был вычищен. Собственно поэтому я и публикую данный топик без малейших угрызений совести, по моим стопам больше никто не пройдёт.
Молодой разработчик, запомни: любой свой труд надо пятьдесят раз проверять перед публикацией. Даже свои статьи я каждый раз проверяю: нет ли на картинке чего-нибудь лишнего, не запостил ли я случайно ссылку, не предназначенную для читателей. Что уж говорить о коде. Запомни также и другое: системы контроля версий — это хорошо. В них надо хранить код и не хранить сгенерированных файлов проектов, скомпилированных бинарников и прочей ереси. Любая система контроля версий умеет делать экспорт, порой даже (например, как bzr или git) сразу в архив. Пользуйтесь этим.
И напоследок, пожелание автору программы. Смени все свои пароли. И, кстати, больше не используй такие простые.
Никто не гарантирует, что в исходники не полез никто, кроме меня, и что все эти люди добрые, белые и пушистые.
Хорошего дня и безопасных вам релизов.