Code Mining
916 subscribers
82 photos
4 videos
8 files
162 links
ML4Code во всей красе, анализ кода и артефактов: лицензии, уязвимости, процессы. Комментарии к актуальным и не очень новостям, аналитика, эпизодический авторский контент, мемасики.

При поддержке: ods.ai, @codescoring
По вопросам — @alsmirn
Download Telegram
Труъ. Боль для тех, кто анализирует JS сорцы 😭
ODS Licensing Course - перенос на 21 октября!

По следам Moscow Python Conf мы получили много-много обратной связи по лицензионной боли разработчиков и юристов. Считаем, что всё это должно быть раскрыто в курсе, в связи с этим, берем дополнительное время на подготовку.

Если у вас есть вопросы про лицензирование Open Source, пишите в комментариях, будем рады их также включить в наш свободный курс 😊.

А пока, следите за новостями, мы их тут много приготовили.
Code Mining pinned a photo
Что такое Software Bill of Materials (SBOM)

Продолжаем рубрику #словарькодмайнера.

Мы, конечно, живём в своём пузыре, но внутри него немного нелепая аббревиатура SBOM за последний год стала всплывать в разы чаще, чем раньше. Даже Байден про неё говорил, и теперь все IT проекты для госорганов США должны содержать этот самый SBOM, это уже не шутки.

Software Bill of Materials — это список всех open source и других сторонних компонент, использующихся в кодовой базе программного продукта. По каждой компоненте SBOM минимально содержит информацию о названии, версии и лицензии. Некоторые форматы обязательным указывают ещё и тип компонента (например, «фреймворк» или «библиотека»).

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

Составлять и поддерживать SBOM в теории полезно всем проектам. На практике за полным списком зависимостей с учётом транзитивных мало кто следит, не говоря уже об их качестве, перспективах и жизнеспособности. Ещё меньше компаний и программистов обращают внимание на лицензии и их совместимость. К уязвимостям внимания чуть больше, как и инструментов для их обнаружения, например, в том же GitHub или пакетных менеджерах.

Самые известных форматы SBOM это:
- CycloneDX https://cyclonedx.org/
- SPDX https://spdx.dev/
- SWID https://csrc.nist.gov/projects/Software-Identification-SWID
- табличка в Excel 🤭

Иногда SBOM пишут BOM, BoM, SBoM, и вообще как только не угорают. Вообще BOM пришёл из производства, где представляет собой опись всех деталей, из которых состоит продукт.

Для генерации SBOM используется два основных источника информации:
1. манифесты и lock-файлы пакетных менеджеров
2. непосредственный поиск скопированных файлов или частей кода в кодовой базе

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

Подробнее про SBOM советуем читать на сайте National Telecommunications and Information Administration:
https://www.ntia.gov/SBOM
Аналитика полного цикла разработки в почти реальном времени

Видео:
https://www.youtube.com/watch?v=BiLew55dxho

Продолжая традицию #видоснавыходные, в этот раз поговорим об анализе так называемых код-артефактов в применении к анализу жизненного цикла разработки (SDLC, Software Development Lifecycle).

Докладчик Вадим Марковцев, очень так некисло причастный к целой грядке крутейших инструментов выпущенных в open source компаниями source{d} и Athenian. Про них мы ещё обязательно напишем.

Тезисы от автора:
Я работаю в международном стартапе Athenian в качесте Head of Analytics и управляю командой бэкенда SaaS продукта. Мы продаем зарубежным компаниям облачное веб-приложение которое указывает на узкие места процессов разработки, непрерывной интеграции, деплоев, и JIRA. При этом стараемся придерживаться принципов blameless и non-personal, иначе говоря, делаем все возможное чтобы лиды-пользователи не стали сравнивать пиписьки рядовых разработчиков.

Одна из ключевых фишек Athenian - мы непрерывно анализируем поток событий GitHub и JIRA и обновляем все метрики и предсказания на лету. Это оказалось сложно, и я расскажу почему именно, какие ошибки мы допустили, как их исправляли и добились результата, и чего нам это стоило в $$$.


Лайки, репосты, все дела 😏.
Semgrep. Легковесный статический анализатор

Если вам нужно что-нибудь находить в исходниках, для исследований или в рамках CI/CD-процессов, то может приглянуться Semgrep.

Удобное написание правил, гибкие интеграции, хорошая документация и конечно же свободное программное обеспечение (репа, LGPL-2.1).

Есть публичный реестр правил, где можно посмотреть-поучиться и погонять в интерактиве. Внутри примеры на проверки инъекций, xss, xxe, плохого журналирования и т. п. согласно OWASP-классификации.

Поддерживает почти 20 языков.

Хороших грепов мало не бывает.
Code2Code @AI Journey Contest 2021

В рамках AIJ с 7 по 31 октября проводится Fusion Brain Challenge.

Участникам предлагается решить 4 задачи в борьбе за призовые в ₽6.5 млн (первое место - до ₽3 млн).

Чем это интересно нам? А тем, что первой задачей стоит Code2code Translation, где предлагается попереводить Java<->Python.

Участникам предлагается датасет для обучения, в котором содержится 6к решенных задач на каждом из языков, на каждом языке от 1 до 5 вариантов решения.

Подробные описания данных, где брать и что курить на странице челленджа.

Описание и сорцы также доступны на на Github. Лицензия проекту не выставлена 😱, но по части C2C сорцы под Apache 2.0 & MIT.

За наводку на соревы спасибо: @lovedeathtransformers.
Code Mining Overview

О чем же ML4Code? Какие задачи, какие особенности?

Продолжая рубрику #видоснавыходные, сегодня у нас Глеб Моргачев, Researcher из уважаемой компании JetBrains рассказывает про основные направления применения машинного обучения к исходному коду и процессу разработки.

Какие бывают задачи, какие предположения и особенности данных используются в процессе разработки. Приводится обзор уже решенных задач, а также всё ещё актуальных задач.

Видео (CodeMining Track'20):
https://www.youtube.com/watch?v=IH3_xSq3ic4

Лайки, репосты, все дела 😏.
Реанонс Курса по лицензированию Open Source

Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-совсем рядом.

Дата: 21.10.21 (четверг).
Время: 19:00, вечером.

Напомним, что курс планируется из трех еженедельных встреч, по 1,5-2 часа.

В ближайшую встречу, 21 октября, Алексей Смирнов, расскажет про особенности лицензирования СПО:
- почему умение разбираться в лицензиях относится к безопасной разработке;
- какие бывают виды лицензий и что же они ограничивают;
- как воспринимать (читать) отдельные пункты лицензионных соглашений;
- про транзитивные зависимости и вероятные проблемы;
- патентные особенности лицензий;
- какую лицензию выбрать для своего DS/ML проекта?
- как обеспечить лицензионную совместимость зависимостей: если вы выбрали лицензию X, почему нельзя выбирать компоненты с лицензией Y?

Максимально с примерами и живым обсуждением.

Встреча пройдет в SpacialChat ODS: live.ods.ai. Креды - ближе к событию.

Если есть вопросы, их можно задать в комментариях ;).
Страничка курса про лицензирование, реакшены приветствуются ;). Ну и до встречи в четверг.
Code Mining
Реанонс Курса по лицензированию Open Source Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-совсем рядом. Дата: 21.10.21 (четверг). Время: 19:00, вечером. Напомним, что курс планируется из трех еженедельных встреч, по 1,5…
Курс про лицензирование ПО уже совсем близко!

Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения.

Встречаемся в Spatial Chat, пароль: odscoursefest1
Code Mining pinned «Курс про лицензирование ПО уже совсем близко! Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения. Встречаемся в Spatial Chat, пароль: odscoursefest1»
И мы планируем начинать через 10 минут.

Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Code Mining
И мы планируем начинать через 10 минут. Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Всем спасибо за участие! Для начала вышло неплохо, будем продолжать!

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

Видео:
https://www.youtube.com/watch?v=t1VWaM6oS5k

Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с прошлогоднего выступления Константина Тяпочкина из profiscope.io на Data Fest 2020 с обзором актуальных инструментов и направлений исследований.

Тезисы от автора:
В докладе приводится обзор последних разработок и новинок в области Code Mining в направлениях: суммаризации и классификации кода (Code2vec, code2seq и  PathPair2Vec подходы), нахождение уязвимостей в коде (Commit2vec, CC2vec, AST-based, Token-embeddings-CNN-based подходы), обзор свеженького CodeBERT, а также порассуждаем об уязвимостях в ML-моделях, их порче и лечению.


Под видео можно найти ссылки на полезные статьи.

Лайки, репосты, все дела 😏.
Supply Chain Attack

Продолжаем пополнять #словарькодмайнера.

Атака на цепочку поставок, или в оригинале Supply Chain Attack — один из самых актуальных и популярных в последнее время у взломщиков и других «русских хакеров» способов получения доступа на сервера своих жертв.

Нашумевший взлом SolarWinds, затронувший сотни тысяч клиентов по всему миру, включая крупные корпорации и правительственные агентства США — тоже был реализован через Supply Chain Attack. Очень громкими были случаи внедрения в цепочку поставок хардварных криптовалютных кошельков несколько лет назад. По факту попытки взломов таким путём происходят каждый день и, судя по всему, их будет только больше.

Уточним, Supply Chain Attack — это и внедрения в цепи поставки софта, и вполне себе физические внедрения, когда при транспортировке железки с конвейера до потребителя с ней могут сделать что-то нехорошее.

Попробуем на пальцах объяснить, как это работает.

Supply Chain Attack — это когда доступ к целевой системе атакующий получает не напрямую, а через внедрение в какой-либо используемый организацией продукт или компонент, которому она доверяет. При этом поставщик продукта может и не знать о проблеме, распространяя зловредный софт своим клиентам.

Допустим, ваша компания очень заботится о безопасности своей сети и серверов. Но с огромной вероятностью она использует какой-нибудь существующий внешний программный продукт, для простоты возьмём CRM. Такие продукты требуют регулярных обновлений, но что интереснее — они зависят от других компонентов. Например, какой-нибудь open source библиотеки, либо ещё какого-то коммерческого продукта. В этом случае злоумышленнику может быть проще внедриться в ту самую библиотеку или менее защищенный коммерческий продукт и подождать, когда цепочка поставок сама сделает своё дело.

Частным случаем таких атак являются Dependency Confusion Breach и Typosquatting Attack. Когда атакующий публикует в популярные индексы зараженные библиотеки, рассчитывая, что программист опечатается при установке компонента, либо система сборки возьмёт библиотеку из индекса вместо локального пакета.

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

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

Для искушенных советуем изучить относительно свежие рекомендации от Cybersecurity and Infrastructure Security Agency при поддержке NIST: https://www.cisa.gov/sites/default/files/publications/defending_against_software_supply_chain_attacks_508_1.pdf
ВАЖНО! Лекция по лицензированию #2 переносится на 04.11

К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/.

ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого занятия. Всё будет.
Code Mining pinned «ВАЖНО! Лекция по лицензированию #2 переносится на 04.11 К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/. ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого…»
Data Halloween'21

Н
а эти выходные не #видоснавыходные, а #мегавидоснавыходные и даже больше!

Сегодня стартует очередной Data Halloween, на который запланировано много событий, за которыми можно будет как последить в реальном времени на ютуб-стриме, так и понетворкаться в нетворкинг-комнатах в Spacial Chat.

От нашей CodeMining команды будет движж ScaryCode, о нем мы напишем сразу после завтрашнего анонса Диктатором ODS ;).

Ещё раз, расписание тут: https://ods.ai/events/halloween2021.

Старт сегодня в 12:00.
Scary Code Competition

Па-бам! Только сегодня и только до 17 часов (!) вы можете поучаствовать в движе на самый ужасный код, Scary Code Competition.

В чем фишка?

1. Мы сделали измерялку цикломатической сложности https://scarycode.codescoring.com/.

2. Вы можете предложить любой репозиторий на анализ, желательно свой ;). Нужно просто указать ссылку.

3. Почту указывать необязательно, но если хотите славы, можете указать.

4. Залить нужно до 17 часов, а в 18 часов, на ODS стриме мы заревьювим этот код, попытаемся сдержать кровавые слезы и выбрать лучших!

5. Победители получают мерч ODS!

Всем код!