Бестиарий программирования
رفتن به کانال در Telegram
Наблюдения за жизнью ошибок в коде. Андрей Карпов. ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8
نمایش بیشتر1 120
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+47 روز
+3030 روز
آرشیو پست ها
Продолжаем развивать Go анализатор. Про новую диагностику в PVS-Studio для выявления классического паттерна опечаток. Как можно ошибиться при обработке ошибок в Go.
Понравилась очередная статья Сергея Кушниренко и решил ссылкой здесь поделиться – Про 10x программистов.
P.S. А для тех, кто ещё не видел, приглашаю вот на такой раздел у нас на сайте – С++ квиз от PVS-Studio и Сергея Кушниренко.
Repost from PVS-Studio: поиск ошибок в коде
Единорог Коди и его товарищ Баг — узнаваемые маскоты PVS-Studio. Этих персонажей вы видели во многих сценариях: при археологических раскопках, в космосе, при ограблении банка, в саду и в сточной канаве. Но как вообще появился этот единорог, и как же он выглядел на заре времён?
Давайте посмотрим хронологию взросления Коди в новой статье, а также изучим самые занятные иллюстрации с его участием! Переходите по ссылке ❤️
#статья #PVS_Studio
Сегодня мини-подборка под разный интерес:
1) Обзор PVS-Studio 7.42. Там говорится, что для студентов временно нет вариантов использования. Переработали разделы сайта, всё опять есть – Бесплатное использование PVS-Studio студентами и преподавателями.
2) Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей. Немного РБПО теории. А вообще, напоминаю, что у нас есть про РБПО вот такая большая подборка – GOST56939.RU.
3) Запускаем цикл вебинаров, посвященных современному Gradle для Java-разработчика. Первый вебинар – Современный Gradle для Java-разработчика: один модуль — хорошо, несколько — лучше.
4) Продолжаем цикл подкастов "Разбаговка" – Контроль команды: как и зачем?
Самое быстрое — «хренак-хренак и в продакшн»: о статическом анализе и скорости выхода продукта
Иногда задают вопрос: "Как статический анализ ускорит Time to market?"
Никак. Статический анализатор не ускорит выход продукта/обновления на рынок. С ним будет дороже и медленнее. Причина — неправильный вопрос.
Аналогично можно спрашивать, как этап тестирования ускоряет Time to market? Точно так же — никак. Тестировщикам мало того, что надо деньги платить, так они ещё будут разработчиков багами отвлекать. Намного быстрее просто написать запускающийся код и выложить дистрибутив. Как говорится, "хренак-хренак и в продакшен". Это самый быстрый вариант.
Но про тестирование, в отличии от статического анализа, такой вопрос не задают. Все понимают, что тестирование — важный элемент создания ПО. Видимо, статический анализ — более молодая методология по сравнению с тестированием, и он просто ещё не стал неотъемлемой частью разработки. Хотя видится очевидным, что и то, и другое неразрывно связано с обеспечением необходимого качества создаваемых программных продуктов.
Какой вопрос правильный?
Как статический анализ ускоряет Time to market при выпуске продуктов заданного уровня качества и надёжности?
Другое дело. Если нужно выпустить качественный продукт, то статический анализ может выявить многие ошибки и дефекты безопасности быстрее и дешевле, чем другие методы. Некоторые виды дефектов лучше обнаруживаются статическим анализатором кода, чем юнит-тестами, динамическим анализом, ручным тестирование и так далее.
Впрочем, это свойство и других методик. Есть дефекты, которые наиболее эффективно будут обнаруживать юнит-тесты, поэтому профессиональные разработчики не пытаются выбрать какой-то один подход, а используют сразу несколько. Эти разные меры усиливают друг друга.
Статический анализ применяется на этапе конструирования, то есть написания кода, поэтому позволяет устранить многие ошибки ещё до этапа тестирования. Хотя на анализ предупреждений необходимо тратить время, это окупается сокращением числа дефектов, которые выявляются на других этапах проверки продукта и его эксплуатации. Известно, что чем раньше ошибка найдена, тем дешевле её исправление.
Тихий враг или молчаливый союзник? Коротко о выравнивании в C++. Часть 3
Repost from АК-ВС 3 | Анализатор кода
➡️Утечка через сравнение строк
Как думаете, сколько времени занимает такая проверка?
if token == "secret_key":
allow_access()
Почти за мгновение. Но иногда эти миллисекунды могут выдать секрет.
🔍В чем дело
Во многих реализациях строки сравниваются посимвольно.
Алгоритм обычно выглядит так:
1) Сравнить первый символ
2) Если совпал - второй
3) Если совпал второй - третий
И так далее
Если символ не совпал, тогда сравнение заканчивается.
📝Где появляется проблема
Предположим секретный токен
A9F4K2
Если атакующий отправит
BXXXX
Сравнение закончится на первом символе.
Если отправить AXXXX, то проверка пройдет чуть дальше.
В результате время выполнения будет немного отличаться.
Если отправить много запросов и измерять время ответа, можно постепенно угадывать символы по одному.
✔️Как решают проблему
Используют сравнение за константное время.
Алгоритм сравнивает все символы, даже если первый уже не совпал.
Для этого во многих языках есть специальные функции, например:
GO
subtle.ConstantTimeCompare(a, b)
JavaScript
crypto.timingSafeEqual(a, b)
😎Как часто вы видели проверки секретов через обычное ==?Repost from Кадровый Болт Генона
Компании в России судятся с работниками из-за нейросетей
https://kod.ru/ai-workers-sud
Российские компании судятся с сотрудниками, делавшими работу с помощью нейросетей. О новой судебной практике и трендах на рынке труда сообщает РБК. По данным издания, работодатели пытаются взыскать убытки за плохой код, ошибочные стратегии и уродливый дизайн. Однако суды чаще всего встают на сторону работников. Причина проста, отмечает РБК: в трудовых договорах нет прямого запрета на использование ИИ. Если компания приняла результат — в его низком качестве виновата она сама. Показательный пример, который приводит издание: продакт-менеджер стартапа самостоятельно настраивал облачный сервис по инструкции чат-бота. В итоге он стёр почти все данные на серверах компании. Бизнес несколько дней не мог работать и понёс серьёзные убытки. Вместо ожидаемой экономии пришлось нанимать внешних специалистов для восстановления из бэкапа. По данным исследования Ancor и Reforum Future Hub, 45% россиян уже применяют ИИ в работе, ещё 36% — очень активно. Чаще всего нейросетям поручают тексты, сбор данных и креативные задачи. Как пишет РБК, результаты такого сотрудничества оставляют желать лучшего. В сданных проектах обнаруживаются нестыковки, повторы и грубые ошибки. Один бизнесмен нанял консультанта для анализа нового направления — тот быстро сдал красивый отчёт на 50 страниц. При проверке выяснилось: данные заказчика проигнорированы, часть вопросов осталась без ответа, а стиль явно выдавал электронного помощника. В маркетинге похожих случаев стало много, сообщает издание. Один подрядчик прислал стратегию, где конкуренты анализировались совсем не те. Бездумное использование ИИ дорого обходится бизнесу: например, генерация картинок в стиле охраняемых авторским правом художников уже приводит к судебным искам. Заказчики пытаются оспорить договоры и вернуть деньги, узнав об использовании алгоритмов. По данным РБК, суды последовательно им отказывают: оценивается лишь качество результата, а не инструменты исполнителя. Особенно опасным трендом в издании называют атаку «нейроюристов». Предприниматели заменяют адвокатов чат-ботами — и получают документы со ссылками на несуществующие законы. Нейросетями увлеклись даже чиновники, отмечает РБК. Патентный поверенный компании UserGate уже получает официальные отказы, написанные явно с помощью ИИ, — с сомнительными нормами и хромающей логикой. По прогнозам экспертов, вскоре на рынке появится новая профессия — ИИ-контролёр. Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество. Выиграют те, кто использует нейросети лишь как черновой инструмент, считают в издании. Настоящая экспертная работа живых людей превратится в штучный и дорогой товар.Буду ИИ-контролёром, кста. Не люблю нейрохрючево 🌝
Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество.PVS-Studio - статический
Repost from PVS-Studio: поиск ошибок в коде
Быть тимлидом — это не только про процессы и задачи, но и про людей, ожидания и собственные сомнения.
На прошедшем вебинаре поговорили о том, кто такой менеджер в IT и зачем он вообще нужен, как выстраивать взаимодействие с командой, с какими ловушками сталкиваются новые лидеры и как не потерять себя.
Посмотреть можно тут:
- Наш сайт
- VK video
- Rutube
- YouTube
#вебинар
Тема неопределённого поведения (UB) в языке C++ освещается и обсуждается многие годы, но это не значит, что она исчерпала себя. Это плата, которую программисты отдают за эффективные оптимизации кода, такие как удаление ряда проверок. C++ - опасный инструмент, и не помешает лишний раз напомнить, как правильно держать его в руках.
Доклад коллеги Алексея на эту тему:
Неопределённое поведение: если про него не думаете, это не значит, что его нет
Спрашивают, в каких процессах безопасной разработки, перечисленных в ГОСТ Р 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 — Поиск уязвимостей в программном обеспечении при эксплуатации.
Эта мера подразумевает более глубокую проверку проекта в том числе статическими анализаторами кода, запущенными в более педантичном режиме.
Проверки реализуются другими инструментами анализа или теми же инструментами, но с другими настройками конфигурации с целью обеспечения анализа с меньшей долей пропусков ошибок за счёт применения специализированных алгоритмов, привлечения больших вычислительных и временных ресурсов.
Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом
Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности. Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.
Тизер информационного ресурса – разработка безопасного программного обеспечения (РБПО) по ГОСТ Р 56939‑2024. Тридцать вебинаров общей длительностью около 50 часов. Дополнительные материалы и ссылки. Доступ бесплатный.
Тизер информационного ресурса – разработка безопасного программного обеспечения (РБПО) по ГОСТ Р 56939‑2024. Тридцать вебинаров общей длительностью около 50 часов. Дополнительные материалы и ссылки. Доступ бесплатный.
Вышел новый релиз PVS-Studio — 7.42. В нём расширение поддержки MISRA C++ 2023, плагин для Qt Creator 19, официальная интеграция в CMake и другие полезные изменения.
Repost from N/a
Проблемы с цепочками
В своих докладах о чистом коде я часто разбираю рефакторинг длинных цепочек вызовов. Основная мысль проста: такая конструкция не только замедляет чтение и понимание кода, но и бьёт по производительности.
Однажды меня спросили: "А что, если эти методы изменяют внутреннее состояние объекта?" Действительно, если
audinfo() (ну или подобный метод в других примерах) возвращает объект, чьи методы мутируют состояние, то вынесение его в переменную превратит пять независимых вызовов в пять обращений к одному экземпляру. А значит, поведение программы может измениться.
Но ответ, на мой взгляд, кроется в самой постановке вопроса. Хороший код не должен порождать сомнения в духе "а что, если...". Если безопасный синтаксический рефакторинг меняет логику работы — это не недостаток рефакторинга, а яркий сигнал о проблемном дизайне.
Если копнуть глубже, то использование методов с побочными эффектами в контексте извлечения параметров выглядит странным в принципе. Если в подобной ситуации на практике методы действительно меняют состояние, "лечить" нужно не цепочку вызовов, а архитектуру класса.
🎤 feelin+1
Разработка нового статического анализатора: PVS-Studio JavaScript
Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.
Изменения в политике бесплатного лицензирования PVS-Studio
Мы прекратили поддержку режима бесплатного лицензирования PVS-Studio, основанного на добавление специальных комментариев в код. Изначальная задумка была в том, что этим подходом будут пользоваться студенты и маленькие закрытые проекты. К сожалению, всё чаще этот режим начал использоваться искажённым образом. Автоматизировано вставляются комментарии, проводится анализ, после чего изменения, связанные с добавлением комментариев, не сохраняются. Это позволяло использовать анализатор в коммерческих задачах, формально не нарушая условия бесплатного лицензирования.
Для открытых проектов у нас по-прежнему действует отдельный вид бесплатного лицензирования. Для студентов через некоторое время мы представим альтернативный вариант бесплатного использования инструмента.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
