6 способов взломать твое JavaScript приложение. Виктор Турский
#worth_seeing #security
В докладе:
- Использование SMS для восстановления пароля
- Загрузка аватарки в файловую систему, а не S3
- Раздача статики средствами #nodejs
- Использование MongoDB
- Server Rendering
- XSS
Во всех примерах, безопасный на первый взгляд код превращается в серьезную проблему в безопасности.
#worth_seeing #security
В докладе:
- Использование SMS для восстановления пароля
- Загрузка аватарки в файловую систему, а не S3
- Раздача статики средствами #nodejs
- Использование MongoDB
- Server Rendering
- XSS
Во всех примерах, безопасный на первый взгляд код превращается в серьезную проблему в безопасности.
YouTube
6 способов взломать твое JavaScript приложение. Виктор Турский. JS Fest 2019 Spring
The talk from JS Fest conference in Kyiv, Ukraine.
Это будет 6 живых демо взлома. Идея не обсудить сухую теория, а увидеть на практике, как не всегда очевидные ошибки являются источником серьезных уязвимостей в твоем JavScript приложении.
Presentation:…
Это будет 6 живых демо взлома. Идея не обсудить сухую теория, а увидеть на практике, как не всегда очевидные ошибки являются источником серьезных уязвимостей в твоем JavScript приложении.
Presentation:…
Что такое timing attack (атака по времени)?
#security #package
TL;DR Не используйте сравнение строк через
В веб-разработке мы часто не задумываемся об классической атаке на систему через анализ времени ответа. Исследование 2009 года показывает, что злоумышленник может измерять события с точностью 15–100ms в Интернете и с точностью 0.1ms в локальной сети.
Пример кода уязвимого к данной атаке:
Такое сравнение обрывается на первом же различном символе, поэтому можно по времени ответа подбирать ответ.
Безопасное по времени сравнение выглядит так:
Его можно использовать из пакета secure-compare.
Мне доводилось участвовать в спорах, где оппоненты говорили, что тут нет риска, так как задержка на запрос в базу данных и/или latency ответа не дадут злоумышленнику достаточно информации. Аргументы здравые. Вместо того, чтобы с ними спорить я задаю вопросы:
- есть ли в драйвере кэш запросов? Как он работает?
- Откуда злоумышленник проводить атаку из внешней или внутренней сети?
- Насколько большие затраты делать безопасное сравнение в сравнение с закрываемыми рисками?
#security #package
TL;DR Не используйте сравнение строк через
=== при проверке равенства секретов или токенов. Используйте безопасные сравнение с фиксированным временем – secure-compareВ веб-разработке мы часто не задумываемся об классической атаке на систему через анализ времени ответа. Исследование 2009 года показывает, что злоумышленник может измерять события с точностью 15–100ms в Интернете и с точностью 0.1ms в локальной сети.
Пример кода уязвимого к данной атаке:
function isAuthenticated(user, token) { var correctToken = FetchUserTokenFromDB(user); return token === correctToken;}Такое сравнение обрывается на первом же различном символе, поэтому можно по времени ответа подбирать ответ.
Безопасное по времени сравнение выглядит так:
let mismatch = 0;for (var i = 0; i < a.length; ++i) { mismatch |= (a.charCodeAt(i) ^ b.charCodeAt(i));}return mismatch;Его можно использовать из пакета secure-compare.
Мне доводилось участвовать в спорах, где оппоненты говорили, что тут нет риска, так как задержка на запрос в базу данных и/или latency ответа не дадут злоумышленнику достаточно информации. Аргументы здравые. Вместо того, чтобы с ними спорить я задаю вопросы:
- есть ли в драйвере кэш запросов? Как он работает?
- Откуда злоумышленник проводить атаку из внешней или внутренней сети?
- Насколько большие затраты делать безопасное сравнение в сравнение с закрываемыми рисками?
npm
npm: secure-compare
Securely compare two strings, copied from cryptiles. Latest version: 3.0.1, last published: 10 years ago. Start using secure-compare in your project by running `npm i secure-compare`. There are 79 other projects in the npm registry using secure-compare.
Audio
#voice_chat #security
Гость: Анастасия Войтова, секурити инженер в cossacklabs.com. Занимается безопасностью и защитой данных.
❓ Топ 5 security проблем типичного веб-проекта
❓ Управление рисками и угрозами – как понять, какие штуки по безопасности нужны в твоем проекте, а какие нет
❓ SSDLC, SAMM — какие тулы/подходы на каждом этапе разработке софта
❓ Где и как учить основы security? Углублено?
❓ Как выглядит найм security engineer? Карьеры
❓ Что в облаках сделано хорошо для обеспечение security, а что необходимо реализовывать самостоятельно?
Ссылки от Анастасии:
- Личный блог
- Корпоративный блог
- Об интернатуре
OWASP cсылки:
- https://owasp.org/www-project-top-ten/
- https://github.com/OWASP/ASVS
- https://owaspsamm.org/model/
Гость: Анастасия Войтова, секурити инженер в cossacklabs.com. Занимается безопасностью и защитой данных.
❓ Топ 5 security проблем типичного веб-проекта
❓ Управление рисками и угрозами – как понять, какие штуки по безопасности нужны в твоем проекте, а какие нет
❓ SSDLC, SAMM — какие тулы/подходы на каждом этапе разработке софта
❓ Где и как учить основы security? Углублено?
❓ Как выглядит найм security engineer? Карьеры
❓ Что в облаках сделано хорошо для обеспечение security, а что необходимо реализовывать самостоятельно?
Ссылки от Анастасии:
- Личный блог
- Корпоративный блог
- Об интернатуре
OWASP cсылки:
- https://owasp.org/www-project-top-ten/
- https://github.com/OWASP/ASVS
- https://owaspsamm.org/model/
No Way, JOSE
#worth_seeing #security
Сегодня в рекомендациях доклад, который описывает базовые понятия на которых строиться JWT. Докладчик – Sam Bellen, Developer Advocate Engineer в Auth0. Slides
#worth_seeing #security
Сегодня в рекомендациях доклад, который описывает базовые понятия на которых строиться JWT. Докладчик – Sam Bellen, Developer Advocate Engineer в Auth0. Slides
YouTube
No Way, JOSE - Sam Bellen | JSConf Hawaii 2020
Is your first thought when thinking about cryptography, “nope, that’s not for me!”? There’s no need to. When explained with simple examples, you can see the basics are not that complicated. The Javascript Object Signing and Encryption, or JOSE for short is…
Как автоматизировать 2FA?
#package #security
Данный рецепт не о том, как реализовать в своем приложение 2FA (Two-factor authentication). Для этого существуют готовые сервисы, о которых я рассказывал на React fwdays’21. Сегодня кейс из сотрудничества с QA автоматизаторами.
Для проверки приложения необходимо произвести логин пользователя. Это происходит через gmail. Переодически gmail говорит необходима дополнительная проверка – неизвестное устройство. Варианты решения отправка смс или отправка емейл не подходят, так как требуют дождаться этих смс/емейлов, способа их получения, парсинга и т.п.
В данном кейсе правильно использовать google authenticator. Данный 2FA способ виден, только если вы добавили номер телефона. В момент настройке будет показан QR code, который содержит текст вида:
#package #security
Данный рецепт не о том, как реализовать в своем приложение 2FA (Two-factor authentication). Для этого существуют готовые сервисы, о которых я рассказывал на React fwdays’21. Сегодня кейс из сотрудничества с QA автоматизаторами.
Для проверки приложения необходимо произвести логин пользователя. Это происходит через gmail. Переодически gmail говорит необходима дополнительная проверка – неизвестное устройство. Варианты решения отправка смс или отправка емейл не подходят, так как требуют дождаться этих смс/емейлов, способа их получения, парсинга и т.п.
В данном кейсе правильно использовать google authenticator. Данный 2FA способ виден, только если вы добавили номер телефона. В момент настройке будет показан QR code, который содержит текст вида:
otpauth://totp/Google:<EMAIL>?secret=<SECRET>&issuer=Google
Для того, чтобы генерировать token валидные 30 секунд вам достаточно знания secret. В этом поможет пакет otplib. Пакет позволяет генерировать и проверять не только для authenticator, но One Time Passwords, но как я уже говорил, для этого лучше использовать готовые решения.Где посмотреть лучшие практики по безопасности?
#security #list
Лучшие практики безопасности веб-проектов описаны в OWASP cheat sheets. OWASP расшифровывается как Open Web Application Security Project. Вот топ-5 для #nodejs разработчиков:
🔗 NodeJS security cheat sheet
🔗 REST Security Cheat Sheet
🔗 npm Security best practices
🔗 Node.js Docker Cheatsheet
🔗 Microservices Security Cheat Sheet
#security #list
Лучшие практики безопасности веб-проектов описаны в OWASP cheat sheets. OWASP расшифровывается как Open Web Application Security Project. Вот топ-5 для #nodejs разработчиков:
🔗 NodeJS security cheat sheet
🔗 REST Security Cheat Sheet
🔗 npm Security best practices
🔗 Node.js Docker Cheatsheet
🔗 Microservices Security Cheat Sheet
cheatsheetseries.owasp.org
Introduction - OWASP Cheat Sheet Series
Website with the collection of all the cheat sheets of the project.