Шукаємо досвідченого інженера із системного програмування, якому цікаво розуміти складне програмне забезпечення на рівень глибше.
Робота лежить на перетині системного програмування, комп’ютерних мереж, вбудованих систем і досліджень безпеки. Частина завдань передбачає розробку нового програмного забезпечення. Інші можуть починатися з незнайомої прошивки, виконуваного файлу, мережевого протоколу або пристрою, роботу яких потрібно зрозуміти, відтворити та зробити спостережуваною.
Це передусім інженерна роль. Нам важливі сильна фундаментальна підготовка, вміння системно розбиратися в незнайомих технологіях і здатність створювати надійні технічні рішення. Попередній професійний досвід у кожному з перелічених напрямів не обов’язковий.
Обовʼязки:
- Проєктувати, розробляти, тестувати й налагоджувати системне програмне забезпечення на C, C++ та Rust.
- Розв’язувати складні й не до кінця визначені технічні задачі, самостійно розбиваючи їх на зрозумілі етапи.
- Працювати з Linux, мережевим програмним забезпеченням, вбудованими та обмеженими в ресурсах системами.
- Досліджувати незнайомі програми, прошивки та мережеві протоколи, зокрема коли документація або вихідний код відсутні.
- Створювати контрольовані середовища для відтворення поведінки систем, налагодження, трасування та автоматизованого тестування.
- Аналізувати роботу мережевого програмного забезпечення на різних рівнях: від пакетів і системного мережевого стека до поведінки окремого процесу.
- Розробляти або модифікувати Linux- та OpenWrt-based системи й прошивки.
- Перетворювати результати досліджень на практичні рішення: робочий код, інструменти, тести, виправлення, засоби захисту або зрозумілу технічну документацію.
Вимоги:
- Сильні навички програмування та налагодження на C або C++. Досвід із Rust буде перевагою; так само підійде готовність швидко його опанувати.
- Глибоке розуміння алгоритмів, структур даних, керування пам’яттю, багатопотоковості та продуктивності.
- Розуміння архітектури комп’ютера й основ роботи операційних систем.
- Впевнене володіння Linux та інструментами системної розробки.
- Добре розуміння TCP/IP, маршрутизації та принципів роботи мережевого програмного забезпечення.
- Сильні навички технічного аналізу: вміння формувати гіпотези, перевіряти їх і знаходити першопричину складної проблеми.
- Здатність самостійно працювати з неоднозначними задачами та відповідати за результат.
- Уміння чітко пояснювати технічні рішення усно й письмово.
Буде перевагою:
- Досвід роботи з вбудованими системами, прошивками, завантажувачами або OpenWrt.
- Аналіз програм чи прошивок без вихідного коду.
- Досвід роботи з налагоджувачами, дизасемблерами, емуляторами та інструментами аналізу мережевого трафіку.
- Знання VPN, WireGuard, мережевих фільтрів або системного мережевого стека.
- Досвід розробки драйверів, модулів ядра або інших низькорівневих компонентів.
- Досвід дослідження вразливостей, фазингу, пентестингу або defensive/offensive security.
Ми не очікуємо, що одна людина вже має досвід у всіх цих напрямах. Якщо ви сильний системний інженер, любите доходити до суті складних технічних проблем і хочете розвиватися в напрямі security research, будемо раді познайомитися.