Рубрика «код» - 11

Направленные ИТ атаки в сфере крупного бизнеса: как это происходит в России

Несколько лет назад государство решило, что направленные атаки — это угроза государственной безопасности. На базе Минобороны в этом году были созданы специальные ИБ-войска для защиты военно-информационных систем и систем связи. При этом банки, крупная розница, предприятия нефтегазовой сферы и другие крупные компании находятся в гражданском секторе. Их защищаем мы и другие гражданские команды.

Характеристики направленной атаки обычно такие:

  • Работает профессиональная группа, как правило, мотивированная финансово или по приказу. Случайные цели редки, чаще всего выбираются сегменты отраслей или отдельные предприятия.
  • Наиболее частые векторы — сочетание 0-day и социнжиниринга. 0-day уязвимости часто закупаются у специальных «разведчиков» под крупные атаки.
  • Если атака была обнаружена и пресечена, то высока вероятность скорого возврата по другому вектору. Атака идёт до результата.
  • Основная цель — корпоративные секреты, исходники кода, переписка топ-менеджмента.
  • Возможен возврат после первичной атаки. Был пример Nortel с атакой, когда группа пришла назад через 10 лет.
  • Атаки скрытые, обычно тут не бывает никаких понтов. Приоритет — максимально зачистить логи и другие следы.

У нас на защите есть банки, розница, страховые и много кто ещё. Расскажу о практике и решениях.Читать полностью »

Ваш сайт на выделенном сервере? Вы авторизуетесь в ssh по паролю? Вы пользуетесь обычным ftp? А может быть в вашей системе еще и код в БД хранится? Что ж, я расскажу, чем это может быть чревато.

В середине июня текущего года ко мне обратился владелец интернет-магазина часов, который заметил в футере своего сайта «левые ссылки», которых там быть не должно и ранее не наблюдалось.

Сайт крутится на одной коммерческой CMS написанной на php, достаточно популярной, но немного (много?) «кривой». Кривость заключается в смешении логики и представления, хранении части кода в бд и последующем исполнении через eval, использовании plain-sql запросов и прочих радостей, «облегчающих» жизнь программистов. Исходный код CMS способен ввергнуть в трепетный ужас даже искушенного кодера: многокилометровые функции с множеством условий не меньшей длины, глобальные переменные, eval-ы и куча других прелестей поджидают заглянувшего сюда смельчака. Несмотря на ужасную программную архитектуру, админка CMS достаточна продумана — создается впечатление, что ТЗ на систему писал профи, а реализовывал студент. Узнали используемую вами CMS? Сочувствую…
Читать полностью »

Перевод статьи Эли Бендерски — Understanding your own code.

Недавно я столкнулся с утверждением, которое меня сильно озадачило. Один программист с гордостью заявил, что не может понять ни малейшего куска кода, написанного им неделю назад. Я честно попытался понять, откуда исходит эта гордость, но так и не смог. Он гордился тем, что пишет столько кода каждый день? Это кто же готов платить ему за то, что он просто пишет код?
Читать полностью »

Жили-были в двух соседних деревушках Вилларибо и Виллабаджо две команды разработчиков. И те и другие делали ревью кода, писали тесты, приводили рефакторинг, но через год разработки в Вилларибо уже выпустили релиз и вышли в продакшн, а в Виллабаджо все еще проводят рефакторинг и чинят баги. В чем же дело?

Разработка ПО – область, подверженная рискам. В нашей сфере при наступлении одного или нескольких рисков, срок поставки рабочей версии может сдвинуться не на привычные и комфортные 10-20%, а на все 150-300%. И надо признаться, что это далеко не предел.
Мы можем либо скрестить пальцы и надеяться, что удача будет сопутствовать проекту во всем, либо признать, что по статистике большая часть проектов по разработке ПО «проваливается» и предпринять дополнительные усилия по ослаблению возможных рисков.
Моя практика показывает, что клиенты крайне неохотно работают по схеме T&M и чаще предпочитают Fixed Price. В условиях зафиксированной стоимости наступление рискового случая означает автоматическое снижение рентабельности проекта: сотрудники получают зарплату ежемесячно, а не за сданные проекты.

До Agile и XP вся ответственность за работу с рисками ложилась на менеджеров. В гибких методологиях разработчики гораздо больше вовлечены в процесс и делят ответственность с менеджерами. Однако, принципы XP и Agile – больше методологические, чем технологические. Я думаю, что с рисками эффективнее работать комплексно на всех уровнях, в том числе на самом низком уровне, т.е. во время проектирования и написания кода.

Почему об этом следует думать разработчику, если есть менеджер?

  1. Не секрет, что если факап случится, менеджмент примет единственное «супер-умное» решение: «давайте поработаем сверхурочно и в выходные»
  2. Премии сотрудники получают тоже обычно за в срок сданные, а не за проваленные проекты
  3. Чувство сделанного дела, в конце концов. Гораздо приятнее сдать проект во время и видеть улыбку клиента, чем с опозданием в пол года отвязаться от «трудного ребенка»

С моей точки зрения спокойная рабочая обстановка вместо авралов и бонусы – неплохая мотивация, чтобы начать заботиться об этом.
Читать полностью »

Всем привет!

Меня зовут Женя, и мне давно хотелось попробовать написать что-то на Хабр, но было непонятно, с чего начать. Недавно мной был обнаружен сервис Witget.com, позиционирующий себя как конструктор инструментов повышения конверсии, после непродолжительного знакомства с ним стало понятно, что установка кода «витжетов» на различные сайты почти наверняка встречается с проблемой разных CMS-систем, на которых эти сайты основаны. Эту проблему и достаточно простое ее решение – установку кода при помощи FTP-SFTP — было решено сделать темой первого поста для Хабра, возможно, кому-то это будет полезно, хотя продвинутые программисты вряд ли узнают что-то новое для себя. В похожей ситуации находятся многие другие SaaS-сервисы, для которых нижеследующая инструкция легко адаптируется.
Читать полностью »

Outsourcing
Как вы знаете, основная наша деятельность – это разработка анализаторов кода PVS-Studio и CppCat. И хотя мы давно и, как нам кажется, успешно этим занимаемся, недавно у нас появилась необычная мысль. Все-таки мы не пользуемся своими инструментами в том режиме, что и наши клиенты. Нет, конечно, мы проверяем код PVS-Studio с помощью PVS-Studio. Но откровенно говоря, проект PVS-Studio не такой уж большой. И работа с кодом PVS-Studio по стилю и характеру отличается от, к примеру, работы с кодом Chromium или LLVM.

Нам хотелось побывать в шкуре своих клиентов для того, чтобы понять, как наш инструмент используется в долгосрочных проектах. Ведь проверки проектов, которые мы делаем регулярно и, про которые пишем много статей, это как раз тот стиль использования анализатора, против которого мы активно выступаем. Неправильно запустить разово анализатор на проекте, исправить несколько ошибок и повторить это через год. При написании кода анализатор надо использовать регулярно, каждый день.

Ну да ладно, к чему это все? Наши теоретические желания попробовать себя в других проектах совпали с практическими предложениями, которые постепенно стали к нам поступать. В прошлом году мы решили выделить у нас в компании команду, которая бы занималась – о ужас! – разработкой на заказ. То есть участвовала в сторонних проектах в качестве программистов. Причем нам было интересно участвовать в долгосрочных и довольно крупных проектах, т.е. не менее 2-3 разработчиков и не менее 6 месяцев разработки. У нас было две цели:

  • попробовать альтернативный тип бизнеса (заказную разработку помимо продуктовой разработки);
  • самим посмотреть на использование PVS-Studio в долгосрочных проектах.

И первая, и вторая задача оказались удачными. Но эта статья не про бизнес по заказной разработке, а про наш опыт. Имеется в виду не организационный опыт. Про это и так много статей. Про опыт работы с кодом чужих проектов. Про это мы и хотим рассказать.
Читать полностью »

В октябре 2014 года впервые в Россию с мастер-классом приезжает .Net-гуру – Дино Эспозито.
Дино Эспозито является автором многих книг по .Net-программированию, техническим евангелистом разработки под Android и на Kotlin в JetBrains, а также членом команды, которая ведет WURFL, базу данных с информацией о мобильных устройствах, используемую компаниями Google и Facebook.

Предлагаем вам познакомиться с переводом одной из статей Дино «Проблемы с кодом? Помогите команде писать лучший код».
Читать полностью »

События C# по человечески
Невозможно, просто взять и вникнуть в этот глубокий смысл, изучая События (event) в просторах базового и, на первый взгляд, бесконечного C#.

Когда я изучал События (не в рамках .NET!), потратил много сил, чтобы, наконец-то, разобраться, как они устроены и должны конструироваться. Поэтому, я решил опубликовать свою методику понимания структуры пользовательского события, коим представляется ключевое слово event в С#.
Не буду цитировать и без того замученную MSDN, а постараюсь объяснить понятно и доступно.
Читать полностью »

Самолетное: 10 категорий людей — те, которые умеют и которые нет

Года три назад я наткнулся на статью, где автор перечислял навыки, которые он бы рекомендовал прокачать каждому человеку. Ну, знаете, там — «получить водительские права», «научиться скорочтению» и прочая муть в стиле бизнес-молодости. Среди списка было один странный совет — научиться программировать.

Тогда я счёл это идиотизмом. Меня это даже разозлило. Я хорошо разбирался в программировании и считал этот навык элитарным и далеко не для всех. Слесарю слесарево, так сказать. А вот сегодня, пролетая где-то над Уралом рейсом Барнаул-Москва и разбирая подготовленные для меня одним сотрудником файлы, с кучей мелких косяков, логических нестыковок и недочетов — осенило: он просто не видит причинно-следственные связи и не обращает внимания на мелочи. Потому что его этому никогда не учили!

Освойте какой-либо язык программирования.

Зачем?
Читать полностью »

Luxoft Training приглашает Вас на мастер-классы одного из лучших тренеров в области архитектуры и разработки ПО – Евгения Кривошеева!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js