Бестиарий программирования
1.12K subscribers
338 photos
5 videos
4 files
426 links
Наблюдения за жизнью ошибок в коде.
Андрей Карпов.

ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода

Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
Download Telegram
Предстоящие вебинары

15 апреля 14:00. Тимлид: ожидания, реальность и внутренние вопросы. Регистрация.
Быть тимлидом — это не только про процессы и задачи, но и про людей, ожидания и собственные сомнения.

Инна Пристягина (руководитель отдела развития, PVS-Studio) разберёт, кто такой менеджер в IT и зачем он вообще нужен: как выстраивать взаимодействие с командой, какие стили управления работают и как не наломать дров на старте.

Ольга Ладошкина (коуч IT-руководителей и топ-команд, бизнес-тренер, основатель проекта «Лидерская кухня»; наставник в Яндекс Практикуме) поговорит о внутренней стороне лидерства: почему этот путь пугает, с какими ловушками сталкиваются новые лидеры и как не потерять себя. Разберёт реальные кейсы и простые инструменты, которые помогут справляться и с командой, и с собой.

Вебинар подойдёт тем, кто уже тимлид или только собирается им стать и хочет понять: «Это моё?»


15 апреля 16:00. Зачем тестировщику нужна безопасность? Регистрация.
Безопасная разработка из опции превращается в обязательное требование: стандарты (российские и международные) все сильнее влияют на процессы разработки и тестирования.

На вебинаре разберем, как тестировщику начать работать с безопасностью без узкой специализации в ИБ: какие базовые навыки нужны, как находить уязвимости на практике, что делать с найденными проблемами, как повысить свою ценность на рынке.

На вебинаре вас ждут два практических доклада от экспертов:

Безопасность для чаQAников (Семен Ремезов, Senior QA, АО "Гринатом")
Вы уже тестируете по ГОСТу (Глеб Асламов, Developer Advocate, PVS-Studio)


17 апреля 14:00. PVS-Studio в SAST: от стандартов безопасности к DevSecOps. Регистрация.
В этот раз рассмотрим использование PVS-Studio в роли SAST-инструмента для автоматического поиска ошибок и потенциальных уязвимостей в исходном коде. Покажем, какие типы проблем способен выявлять статический анализатор и как он помогает повысить качество и надёжность программного обеспечения.

Кратко разберём сценарии интеграции PVS-Studio в процесс разработки и CI/CD, а также практические преимущества его применения на ранних этапах жизненного цикла разработки.
🔥3
Предлагаю вашему вниманию материалы, которые познакомят вашу команду с методологией безопасной разработки программного обеспечения и ГОСТ Р 56939—2024.

ГОСТ56939.РФ

ГОСТ Р 56939—2024 описывает 25 процессов, внедрение которых способствует зрелости цикла разработки и, как следствие, качеству, надёжности и безопасности разрабатываемых программных проектов.

В записи вебинаров приняло участие более 30 экспертов из компаний, связанных с информационной безопасностью. Это позволило разносторонне рассмотреть различные темы и продемонстрировать большое количество инструментов, которые могут понадобиться при внедрении процессов РБПО.

Кому будут полезны данные материалы:

1. Всем, кто хочет создавать надёжные и безопасные программные продукты. ГОСТ Р 56939—2024 можно рассматривать как описание 25 полезных практик, с помощью которых можно существенно увеличить зрелость процесса разработки ПО.

2. Специалистам, перед которыми стоит задача внедрения в компании процессов безопасной разработки с целью прохождения сертификации ФСТЭК (разработчики, руководители, специалисты ИБ и т. д.).

3. Специалистам, которые хотят лучше разобраться с требованиями, приводимыми в приказе ФСТЭК №117 и методическом документе ЦБ РФ "Профиль защиты". Оба эти документа ссылаются на ГОСТ Р 56939—2024.

Все материалы предоставляются бесплатно и доступны после регистрации.
🔥8
Из нового. В разделе "Курсы по процессам разработки безопасного программного обеспечения" учебного центра "Маском" появился вот такой курс:

ПВС СТАТ. Статический анализ программного обеспечения в соответствии с требованиями ГОСТ Р 71207–2024 с применением PVS-Studio. 30 ч. / 3 дня ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍21
Изменения в политике бесплатного лицензирования PVS-Studio

Мы прекратили поддержку режима бесплатного лицензирования PVS-Studio, основанного на добавление специальных комментариев в код. Изначальная задумка была в том, что этим подходом будут пользоваться студенты и маленькие закрытые проекты. К сожалению, всё чаще этот режим начал использоваться искажённым образом. Автоматизировано вставляются комментарии, проводится анализ, после чего изменения, связанные с добавлением комментариев, не сохраняются. Это позволяло использовать анализатор в коммерческих задачах, формально не нарушая условия бесплатного лицензирования.

Для открытых проектов у нас по-прежнему действует отдельный вид бесплатного лицензирования. Для студентов через некоторое время мы представим альтернативный вариант бесплатного использования инструмента.
👍11
Разработка нового статического анализатора: PVS-Studio JavaScript

Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.
😱4
Forwarded from feelin (Valerii Filatov)
Проблемы с цепочками

В своих докладах о чистом коде я часто разбираю рефакторинг длинных цепочек вызовов. Основная мысль проста: такая конструкция не только замедляет чтение и понимание кода, но и бьёт по производительности.

Однажды меня спросили: "А что, если эти методы изменяют внутреннее состояние объекта?" Действительно, если audinfo() (ну или подобный метод в других примерах) возвращает объект, чьи методы мутируют состояние, то вынесение его в переменную превратит пять независимых вызовов в пять обращений к одному экземпляру. А значит, поведение программы может измениться.

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

Если копнуть глубже, то использование методов с побочными эффектами в контексте извлечения параметров выглядит странным в принципе. Если в подобной ситуации на практике методы действительно меняют состояние, "лечить" нужно не цепочку вызовов, а архитектуру класса.

🎤 feelin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7💯2
Вышел новый релиз PVS-Studio — 7.42. В нём расширение поддержки MISRA C++ 2023, плагин для Qt Creator 19, официальная интеграция в CMake и другие полезные изменения.
2
Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом

Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности. Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.
👍6🔥2
Спрашивают, в каких процессах безопасной разработки, перечисленных в ГОСТ Р 56939—2024 (РБПО), может применяться PVS-Studio?

Отвечаю:

7 — Моделирование угроз и разработка описания поверхности атаки.
Косвенное использование. Анализатор PVS-Studio осуществляет поиск проблем на поверхности атаки, а не самой поверхности атаки (taint-анализ). Чтобы он хорошо это делал, необходима дополнительная разметка истоков и стоков данных (см. ГОСТ Р 71207—2024, п. 6.3.а). Подробнее.

8 — Формирование и поддержание в актуальном состоянии правил кодирования. Многие регламенты кодирования построены на основе таких стандартов, как CWE, MISRA C/C++, OWASP ASVS, SEI CERT. PVS-Studio поддерживает перечисленные стандарты и может в автоматическом режиме ещё до этапа обзора кода обнаружить многие дефекты, перечисленные в них.

9 — Экспертиза исходного кода.
Невозможна для больших объёмов кода без привлечения инструментов статического анализа.

10 — Статический анализ исходного кода.
PVS-Studio совместим с ГОСТ Р 71207—2024 (Статический анализ кода) и полностью закрывает 10-й процесс для языков C, C++, C# и Java. Сейчас идёт разработка ядер анализатора для Go, JS и TS.

17 — Проверка кода на предмет внедрения вредоносного программного обеспечения через цепочки поставок.
Это прерогатива композиционных анализаторов кода (SCA). Однако PVS-Studio также способствует безопасности, выявляя их в коде сторонних компонент потенциальные уязвимости (критические ошибки в терминологии ГОСТ Р 71207—2024).

24 — Поиск уязвимостей в программном обеспечении при эксплуатации.
Эта мера подразумевает более глубокую проверку проекта в том числе статическими анализаторами кода, запущенными в более педантичном режиме.
Проверки реализуются другими инструментами анализа или теми же инструментами, но с другими настройками конфигурации с целью обеспечения анализа с меньшей долей пропусков ошибок за счёт применения специализированных алгоритмов, привлечения больших вычислительных и временных ресурсов.
👍32🔥2👏1
Тема неопределённого поведения (UB) в языке C++ освещается и обсуждается многие годы, но это не значит, что она исчерпала себя. Это плата, которую программисты отдают за эффективные оптимизации кода, такие как удаление ряда проверок. C++ - опасный инструмент, и не помешает лишний раз напомнить, как правильно держать его в руках.

Доклад коллеги Алексея на эту тему:
Неопределённое поведение: если про него не думаете, это не значит, что его нет.

P.S. Был задан вопрос про безопасные компиляторы (ГОСТ Р 71206—2024). Подробнее с этой темой можно познакомиться здесь: Использование безопасной системы сборки программного обеспечения.
👍4
Быть тимлидом — это не только про процессы и задачи, но и про людей, ожидания и собственные сомнения.

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

Посмотреть можно тут:

- Наш сайт
- VK video
- Rutube
- YouTube

#вебинар
2
Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество.

PVS-Studio - статический анализатор контролёр кода :)
💯3👍2
Компании в России судятся с работниками из-за нейросетей
https://kod.ru/ai-workers-sud

Российские компании судятся с сотрудниками, делавшими работу с помощью нейросетей. О новой судебной практике и трендах на рынке труда сообщает РБК.

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

Причина проста, отмечает РБК: в трудовых договорах нет прямого запрета на использование ИИ. Если компания приняла результат — в его низком качестве виновата она сама.

Показательный пример, который приводит издание: продакт-менеджер стартапа самостоятельно настраивал облачный сервис по инструкции чат-бота. В итоге он стёр почти все данные на серверах компании. Бизнес несколько дней не мог работать и понёс серьёзные убытки. Вместо ожидаемой экономии пришлось нанимать внешних специалистов для восстановления из бэкапа.
По данным исследования Ancor и Reforum Future Hub, 45% россиян уже применяют ИИ в работе, ещё 36% — очень активно. Чаще всего нейросетям поручают тексты, сбор данных и креативные задачи.

Как пишет РБК, результаты такого сотрудничества оставляют желать лучшего. В сданных проектах обнаруживаются нестыковки, повторы и грубые ошибки.

Один бизнесмен нанял консультанта для анализа нового направления — тот быстро сдал красивый отчёт на 50 страниц. При проверке выяснилось: данные заказчика проигнорированы, часть вопросов осталась без ответа, а стиль явно выдавал электронного помощника.

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

Бездумное использование ИИ дорого обходится бизнесу: например, генерация картинок в стиле охраняемых авторским правом художников уже приводит к судебным искам.

Заказчики пытаются оспорить договоры и вернуть деньги, узнав об использовании алгоритмов. По данным РБК, суды последовательно им отказывают: оценивается лишь качество результата, а не инструменты исполнителя.

Особенно опасным трендом в издании называют атаку «нейроюристов». Предприниматели заменяют адвокатов чат-ботами — и получают документы со ссылками на несуществующие законы.

Нейросетями увлеклись даже чиновники, отмечает РБК. Патентный поверенный компании UserGate уже получает официальные отказы, написанные явно с помощью ИИ, — с сомнительными нормами и хромающей логикой.

По прогнозам экспертов, вскоре на рынке появится новая профессия — ИИ-контролёр. Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество.

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


Буду ИИ-контролёром, кста. Не люблю нейрохрючево 🌝
👍6😁32
➡️Утечка через сравнение строк

Как думаете, сколько времени занимает такая проверка?
if token == "secret_key":
allow_access()


Почти за мгновение. Но иногда эти миллисекунды могут выдать секрет.

🔍В чем дело

Во многих реализациях строки сравниваются посимвольно.

Алгоритм обычно выглядит так:
1) Сравнить первый символ
2) Если совпал - второй
3) Если совпал второй - третий
И так далее

Если символ не совпал, тогда сравнение заканчивается.

📝Где появляется проблема

Предположим секретный токен
A9F4K2

Если атакующий отправит
BXXXX

Сравнение закончится на первом символе.

Если отправить AXXXX, то проверка пройдет чуть дальше.

В результате время выполнения будет немного отличаться.

Если отправить много запросов и измерять время ответа, можно постепенно угадывать символы по одному.

✔️Как решают проблему

Используют сравнение за константное время.

Алгоритм сравнивает все символы, даже если первый уже не совпал.

Для этого во многих языках есть специальные функции, например:

GO
subtle.ConstantTimeCompare(a, b)


JavaScript
crypto.timingSafeEqual(a, b)


😎Как часто вы видели проверки секретов через обычное ==?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14