2021 вот-вот закончится, а значит, настало время подведения итогов! Сегодня мы поговорим о том, что нового появилось в анализаторе PVS-Studio за прошедший год. Устраивайтесь поудобнее, мы начинаем.
2021 вот-вот закончится, а значит, настало время подведения итогов! Сегодня мы поговорим о том, что нового появилось в анализаторе PVS-Studio за прошедший год. Устраивайтесь поудобнее, мы начинаем.
Внутреннее тестирование на проникновение, одна из самых сложных и при этом впечатляющих услуг на рынке. Впечатляющих в первую очередь для руководства, ведь за несколько дней, а иногда и часов, пентестер выкладывает перед ним на стол пароли к учетным записям в базах данных 1с, SAP, CRM, Jira, пароль администратора домена, финансовую отчетность, сканы паспортов топ менеджмента и любую другую информацию по запросу.
Читать полностью »
Как Unicode уничтожает большинство ваших предположений о том, как на самом деле работают строки
Когда речь идет о написании чего-то простого, мы, программисты, обычно действуем интуитивно. В случае с простыми вещами мы полагаемся на четкий набор предположений вместо конкретных знаний о том, как эти вещи работают. Например, мы предполагаем, что если b = a + 1
, то b
больше a
, или что если мы применим функцию malloc
для какого-то буфера, то получим необходимое количество памяти для записи. Мы не заглядываем в документацию всякий раз, когда имеем дело с мелочами.
Мы делаем так, потому что тотальная проверка замедлит работу. Однако если бы мы все-таки провели проверку, мы бы обнаружили, что обычно ошибаемся в своих предположениях. Существует арифметическое переполнение, в результате которого a + 1
может быть значительно меньше, чем a
. Иногда malloc
дает нам null
вместо буфера и мы оказываемся в пролете.
Нам обычно приходится обжечься на таких вещах, чтобы хотя бы немного изменить свои предположения. И даже тогда мы обычно исправляем их весьма условно.
Столкнувшись с досадной ошибкой переполнения, мы можем скорректировать свое предположение о целых числах в виде «a + 1
больше a
, если отсутствует вероятность, при которой a
представляет собой очень большое число». И мы действуем исходя из этого, вместо того, чтобы обдумать четкие правила, по которым работает переполнение.
Уточненные предположения – это опыт. Чаще всего они позволяют нам работать быстрее и правильнее. Однако мы можем вообще переместить некоторые вещи, например, правильную обработку malloc
, из нашей внутренней категории «простые вещи» во внутреннюю категорию «сложные вещи». И тогда мы действительно можем пойти и уточнить, как они работают.
На связи снова Алексей который спешит уже с техническими подробностями проекта) В этой части узнаем как работают триггеры в приложении и поговорим о проблемах Google Play! Данная часть будет больше предыдущей так что берите напиток по погоде и погружайтесь в статью!
Как я писал раньше - в ранних версиях был один основной триггер - ярлык обманка. В чем же его суть? Пользователь сам задает иконку и название ярлыка под которое он маскируется, а в последних версиях открывает приложение с заданным именем пакета! Ниже на скриншотах вы можете посмотреть как делается ярлык вайбера.
В этой части я коротко расскажу о мотивах и с чего начиналась разработка. Меня зовут Алексей и я желаю вам приятного чтения!
Тут все произошло более чем спонтанно зимнем вечером — я на тот момент ещё junior java developer с опытом не более двух месяцев листал новости. И без упоминания ужасных событий того времени — меня просто взбудоражила новость говорящая подобное: «У молодого человека задержали телефон и посадили за подписку на канал». Это дало мне пинок для размышлений, а как вообще защищены данные на android. И тут скорее вопрос не к шифрованию хранилища, не в бэкдорах от «компании добра», а просто в экстренных ситуациях. Ведь любой пароль в принципе можно достать из владельца, и причем многими способами. И сделать так может любой человек просто даже подсмотрев его или подобрав. В поисках решение подобной проблемы я нашел только одно приложение (Ripple) — но его функционал оставлял желать лучшего учитывая что проект официально не обновлялся 2 года.
Поняв что подобного нет, я загорелся идеей создать такое приложение хотя бы для себя
Спустя всего-то 2-3 дня — я получил самую сырую версию которая могла только удалять приложения имена пакетов которых я вводил в ручную — быстро и тихо. А запускалось все отдельной иконкой или внутри приложения.
Несмотря на то что приложение писалось полностью под себя, некоторым моим знакомым оно понравилось, сработал эффект сарафанного радио, начали поступать запросы на новые функции и я решил выложить приложение в массы и на спец. форумы.
Читать полностью »
Здравствуйте, это вторая статья о NGFW решении от компании UserGate. Задача данной статьи заключается в том, чтобы показать, как установить межсетевой экран UserGate на виртуальную систему (буду использовать программное обеспечение виртуализации VMware Workstation) и выполнить его первоначальную настройку (разрешить доступ из локальной сети через шлюз UserGate в интернет).
Привет! Я консультант по информационной безопасности в Swordfish Security по части выстраивания безопасного DevOps для наших заказчиков. Я слежу за тем, как развивается тенденция развития компаний в сторону DevSecOps в мире, пытаюсь транслироватьЧитать полностью »
Всем привет! В прошлых постах мы поговорили о том, как команда npm обеспечивает безопасность, а также начали рассматривать инструменты, помогающие нам повысить безопасность проектов. Я хочу продолжить разговор и рассмотреть следующий набор полезных инструментов.
Не буду тут писать длинные заумные тексты о том, «как правильно построить систему KPI для SOC». А просто расскажу, как мы боролись и искали нашли свою методику и как теперь измеряем, «насколько все плохо/хорошо/безопасно/(нужное подчеркнуть)».
Доброго времени суток, читатель!
22 апреля в GitLab выпустили релиз 12.10 и сообщили о том, что теперь CI-процесс может авторизовываться в Hashicorp's Vault через JSON Web Token (JWT), и для авторизации нет необходимости хранить токен для доступа к нужным policy в переменных окружения (или где-либо ещё).
Данная фича показалась нам полезной, поэтому предлагаем перевод соотвествующего туториала из официальной документации GitLab: