Developer C++ (CoreTech)
Требования
Местоположение и тип занятости
Компания
Описание вакансии
Условия работы
CoreTech — это R&D внутри департамента исследований и разработки Лаборатории Касперского. Мы создаем фундамент, на котором строится разработка продуктов и сервисов нашей компании.
В нашем отделе есть несколько основных направлений деятельности в которые сейчас открыты вакансии:
1. Traffic processing – Команда, работающая в составе отдела разработки базовых компонентов (Core Tech). Наши основные задачи — анализировать трафик на машине конечного пользователя, предоставлять удобные интерфейсы для работы с ним, и на базе этих интерфейсов разрабатывать компоненты защиты. Мы пишем кросс-платформенный код для всех операционных систем, на которых работают наши продукты.
Для чего Вы нам нужны:
- Разработка анализаторов сетевых протоколов, таких как: SSL, HTTP1/1, HTTP2.0, QUICK, HTTP3, WebSocket, IMAP, POP3, и др;
- Разработка компонентов защиты на базе анализаторов: веб-антивирус, анти-спам, почтовый антивирус, анти-баннер, родительский контроль, защита от сбора данных;
- Постоянно развиваться и следить за современными трендами в сетевых технологиях.
2. Crypto - команда, которая занимается разработкой программных компонентов для решения задач криптографической защиты информации, работающих на большом количестве платформ (Windows, Linux, MacOS, Kaspesky OS, Android, iOS) и в различных средах выполнения (пользовательнкий режим OS, режим ядра OS, Preboot).
Основные сценарии:
- Проверка подписи файлов различных стандартных форматов: PE, ZIP, Macho и т.п.;
- Определение и разработка собственного формата подписи на основе ГОСТ криптографии;
- Разработка компонентов крипто-подсистемы Kaspersky OS;
- Реализация стандартов: PKCS11, PKI, FIPS;
- Участие в сертификации.
Что Вам для этого нужно:
- Отличное знание С++ (от 3х лет);
- Знание базовых алгоритмов и структур данных;
- Навыки разработки многопоточных приложений, решение проблем многопоточности;
- Умение писать код: структурировать (способность разбить на сущности, способность определить их обязанности), умение именовать сущности.
3. Instrumental PDK - Команда, работающая в составе отдела разработки базовых компонентов (Core Tech). Наши основные задачи — разработка библиотек C++ общего характера, в том числе платформенно-зависимых библиотек. Мы пишем код для всех операционных систем, на которых работают продукты компании.
Для чего Вы нам нужны:
- Разработка внутренней библиотеки стандартных примитивов, облегчающей жизнь сотням разработчиков;
- Поддержка фреймворков, обеспечивающих взаимодействие компонент во всех продуктах компании;
- Разработка компонентов, обеспечивающих обновление антивирусных баз у миллионов пользователей по всему миру.
Что Вам необходимо для этого:
- Отличное знание С++, STL;
- Знание базовых алгоритмов и структур данных;
- Понимание принципов разработки многопоточных программ;
- Способность работать с большим объемом чужого кода;
- Аккуратность;
- Умение писать код: Структурировать (способность разбить на сущности, способность определить их обязанности), умение именовать сущности;
- Обучаемость и способность в свою очередь чему-то научить коллег.
Еще желательно:
- Знание системного API (Windows, POSIX);
- Знание boost;
- Знание сетевых протоколов;
- Понимание принципов криптографии;
- Владение WinDbg (разбор дампов, низкоуровневая отладка);
- Опыт работы и системой сборки CMake;
- Опыт разработки тестов с помощью фреймворка GMock/GTest;
- Опыт работы с системами контроля версий (Git, Perforce);
- Опыт программирования на Linux/Mac.
4. Cloud PDK - Команда, работающая в составе отдела разработки базовых компонентов (Core Tech). Наши основные задачи — предоставить программную инфраструктуру для разработки продуктов и обеспечить централизованное управление компонентами защиты. Мы пишем кросс-платформенный код для всех операционных систем, на которых работают наши продукты.
Для чего Вы нам нужны:
- Разработка и поддержка сетевых компонентов для взаимодействия наших продуктов с инфраструктурными сервисами;
- Разработка и поддержка компонентов для обеспечения лицензирования наших продуктов.
Что Вам необходимо для этого:
- Отличное знание С++, STL;
- Знание базовых алгоритмов и структур данных;
- Понимание принципов разработки многопоточных программ;
- Способность работать с большим объемом чужого кода;
- Аккуратность;
- Умение писать код: Структурировать (способность разбить на сущности, способность определить их обязанности), умение именовать сущности;
- Обучаемость и способность в свою очередь чему-то научить коллег.
Еще желательно:
- Знание системного API (Windows, POSIX);
- Знание boost;
- Знание сетевых протоколов;
- Понимание принципов криптографии;
- Владение WinDbg (разбор дампов, низкоуровневая отладка);
- Опыт работы и системой сборки CMake;
- Опыт разработки тестов с помощью фреймворка GMock/GTest;
- Опыт работы с системами контроля версий (Git, Perforce);
- Опыт программирования на Linux/Maс.
5. Antimalware
Antimalware – команда, развивающая технологии защиты в составе отдела разработки базовых компонентов (Core Tech). Команда разрабатывает ключевые компоненты обнаружения угроз, аномалий, уязвимых приложений и сервисов ОС, нейтрализации выявленных угроз. Разрабатываемый функционал является неотъемлемой частью большинства продуктов компании, используемых на различных ОС.
Основные сценарии:
- Real-time protection - мониторинг активности системных и пользовательских служб и приложений (открытие файлов, запуск процессов и т.п.), предотвращение активации угроз в режиме реального времени;
- On-demand scans - сканирование заданных областей на защищаемом устройстве (файлов, директорий, объектов автозапуска, памяти и т.п.);
- Обработка обнаруженных угроз - удаление, лечение, лечение активного заражения, бэкап и восстановление пользовательских данных;
- Оптимизация сценариев сканирования - поддержка исключений, оптимизация потребляемых ресурсов;
- Vulnerability assessment - обнаружение и обновление потенциально уязвимых приложений.
Чем Вы будете заниматься:
- Разрабатывать и поддерживать функциональность компонентов защиты, писать функциональные и юнит-тесты;
- Участвовать в выработке технических решений;
- Выполнять анализ производительности в поддерживаемых командой сценариях, оптимизировать код;
- Развивать техническую экспертизу в составе команды и за ее пределами.
Что мы ждем от кандидата:
- Отличное знание C++ и современных стандартов (11/14/17);
- Опыт разработки многопоточных приложений;
- Опыт разработки для ОС Windows. Будет плюсом опыт работы с Linux, MacOS;
- Умение работать с отладчиками и анализировать дампы (WinDBG, gdb, т.д.);
- Навык проведения код-ревью;
- Опыт работы с системами сборки (CMake и т.п.);
- Быть готовым к погружению в большую кодовую базу, к анализу логов для поиска причины проблемы;
- Желание писать структурированный, понятный код, покрывать его тестами и понимание зачем это нужно.
6. Application Control PDK
Команда занимается разработкой компонентов:
- Host Intrusion Prevention – система предотвращения вторжений, основанная на правилах контроля приложений (контроль активности, IPC взаимодействий, контроль сети и проч.);
- Enterprise Application Control – система контроля запусков приложений, загрузки модулей, загрузки скриптов и открытия документов, основанная на правилах;
- Safe Money – система контроля безопасных платежей в браузере;
- IOC Scanner – система выявления признаков компрометации ОС;
- Система контроля времени использования приложений;
- Система категоризации приложений на основе метаданных и правил категоризации;
- Network Monitor – система мониторинга сети;
- Сервисы, предоставляющие информацию о приложениях.
Разработка ведется на C++, STL, boost, частично Python. Разрабатываемые компоненты формируют функциональность флагманских продуктов компании: KIS, KES, Safe Kids, и др.
Помимо функциональности команда занимается:
- Разработкой тестов и тестового фреймворка с использованием gtest/gmock;
- Анализом дампов и отладкой с использованием WinDbg и gdb;
- Анализом производительности с использованием xperf;
- Фаззинг тестированием с помощью AFL;
- Статическим анализов кода с помощью SVACE;
- Обсуждением новых инструментов и совершенствованием процессов разработки.
Команда состоит из 8 человек – специалистов с большим опытом и кругозором. Мы ждем сотрудника, который привнесет свои идеи, поможет решать сложные задачи и обогатит своим мнением наше сообщество.
7. Application Infrastructure & Updater PDK
Команда занимается предоставлением программной инфраструктуры для разработки продуктов и обеспечением централизованного управления компонентами защиты.
Для чего Вы нам нужны:
- Разработка базовых внутренних библиотек, облегчающих жизнь сотням разработчиков;
- Поддержка фреймворков, обеспечивающих взаимодействие компонентов защиты во всех продуктах компании;
- Разработка компонентов, обеспечивающих обновление антивирусных баз у миллионов пользователей по всему миру;
Что Вам необходимо для этого:
- Отличное знание С++, STL;
- Знание базовых алгоритмов и структур данных;
- Знание базовых принципов дизайна кода: структуирование, single-responsibility principle, уровни абстракции;
- Желательно знание системного API (Windows, POSIX) и владение WinDbg.