Доклад Максима Гопея для "Съесть собаку #8", PHP, 20/04/17
Тезисы:
- Моделирование угрозы
- Виды атак и уязвимостей в коде
- Как проверять безопасность систем
- Выводы.
Cis critical security controls. контроль 3 безопасная конфигурация устройствTeymur Kheirkhabarov
3-ий контроль из набора мер CIS Critical Security Controls 6-ой версии - что это такое, зачем это нужно, как реализовать и контролировать. Пример реализации на базе решений Kaspersky, MaxPatrol и Request Tracker. Пример использования Request Tracker для учёта информационных активов.
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
Ведущие: Денис Колегов и Арсений Реутов
Авторы доклада продемонстрируют, как внедрение клиентских сценариев JavaScript может быть использовано для обнаружения и предотвращения различных атак, поиска уязвимых клиентских компонент, определения утечек данных об инфраструктуре веб-приложений, выявления веб-ботов и инструментальных средств нападения. Поделятся собственными методами обнаружения инъекций при помощи синтаксических анализаторов без сигнатур и фильтрующих регулярных выражений, а также рассмотрят реализацию концепции JavaScript-ловушек на стороне клиента для атак SSRF, IDOR, Command Injection и CSRF.
Cis critical security controls. контроль 3 безопасная конфигурация устройствTeymur Kheirkhabarov
3-ий контроль из набора мер CIS Critical Security Controls 6-ой версии - что это такое, зачем это нужно, как реализовать и контролировать. Пример реализации на базе решений Kaspersky, MaxPatrol и Request Tracker. Пример использования Request Tracker для учёта информационных активов.
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
Ведущие: Денис Колегов и Арсений Реутов
Авторы доклада продемонстрируют, как внедрение клиентских сценариев JavaScript может быть использовано для обнаружения и предотвращения различных атак, поиска уязвимых клиентских компонент, определения утечек данных об инфраструктуре веб-приложений, выявления веб-ботов и инструментальных средств нападения. Поделятся собственными методами обнаружения инъекций при помощи синтаксических анализаторов без сигнатур и фильтрующих регулярных выражений, а также рассмотрят реализацию концепции JavaScript-ловушек на стороне клиента для атак SSRF, IDOR, Command Injection и CSRF.
Как правильно подключать сотрудников из дома через VPN шлюз на Palo Alto Netw...Denis Batrankov, CISSP
Надеемся, что данные предложения помогут Вам эффективно и быстро реализовать защищенный и надежный удаленный доступ для ваших сотрудников, и реагировать на вызовы новых бизнес практик.
Документ как настраивать GlobalProtect на NGFW: http://tiny.cc/GLobalProtect
Запись этой презентации на youtube https://youtu.be/MqrNZ1J-7oE
Какие вопросы чаще всего задают вендору при выборе решения по информационной ...Denis Batrankov, CISSP
Все маркетинговые презентации почти одинаковы и после того вы прослушали маркетинг, у вас должны быть уточняющие вопросы. Какие вопросы задают мне заказчики? А вот они.
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 5 июня, 13:00
Тезисы:
http://ritfest.ru/2017/abstracts/2798.html
В данном докладе будет рассмотрено множество вопросов, с которыми сталкивается AppSec-отдел - как генерировать анти-CSRF токены, где хранить секретные ключи, как тестировать безопасность в сжатые сроки и многое, многое другое.
Как правильно подключать сотрудников из дома через VPN шлюз на Palo Alto Netw...Denis Batrankov, CISSP
Надеемся, что данные предложения помогут Вам эффективно и быстро реализовать защищенный и надежный удаленный доступ для ваших сотрудников, и реагировать на вызовы новых бизнес практик.
Документ как настраивать GlobalProtect на NGFW: http://tiny.cc/GLobalProtect
Запись этой презентации на youtube https://youtu.be/MqrNZ1J-7oE
Какие вопросы чаще всего задают вендору при выборе решения по информационной ...Denis Batrankov, CISSP
Все маркетинговые презентации почти одинаковы и после того вы прослушали маркетинг, у вас должны быть уточняющие вопросы. Какие вопросы задают мне заказчики? А вот они.
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 5 июня, 13:00
Тезисы:
http://ritfest.ru/2017/abstracts/2798.html
В данном докладе будет рассмотрено множество вопросов, с которыми сталкивается AppSec-отдел - как генерировать анти-CSRF токены, где хранить секретные ключи, как тестировать безопасность в сжатые сроки и многое, многое другое.
Ведущий: Эльдар Бейбутов
Интернет приложения - это интерфейс взаимодействия человеческого сознания с информационной системой. Процесс коммуникации людей и машинного кода не поддается формализации, невозможно учесть все возможные состояния системы в ручную, для этого необходимы интеллектуальные средства защиты, которые будут способны к самостоятельному обучению и принятию решений на основе многофакторных моделей. На докладе поговорим о эвристических механизмах обнаружения атак, автоматическом создании позитивной модели и поведенческом анализе.
В данной сессии мы подробно рассмотрим архитектурные принципы построения защищённого корпоративного периметра, с разбором решения некоторых частных задач, характерных для периметра: контроль доступа пользователей в сеть Интернет, борьба с целенаправленными (APT) угрозами, защита web и email-трафика, средства объективного контроля сетевых процессов.
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
Поиск уязвимостей с использованием статического анализа кода, Андрей Карпов и Евгений Рыжков
В последнее время мы все слышим о новых и новых уязвимостях, обнаруженных в программном обеспечении. Уже стало очевидно, что писать код без уязвимостей человечество не может. Но могут ли современные инструменты разработки помочь обнаружить хотя бы некоторые ошибки? В докладе НЕ будет фраз типа «купите такой-то инструмент, чтобы не допускать уязвимостей в своем и чужом коде». На реальных примерах мы попробуем показать какие типы уязвимостей или по-другому программных дефектов могут быть найдены с помощью технологий анализа кода, а какие – пока нет. Ну и конечно как писать код так, чтобы снизить вероятность появления уязвимостей в своем коде.
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
Уязвимости - это те же самые обыкновенные ошибки. Зачем их выделять? Делайте это, если хотите заработать больше денег. CWE - Common Weakness Enumeration. CVE - Common Vulnerabilities and Exposures. Теперь с помощью Valgrind вы ищете не утечку памяти, а отказ в обслуживании!
Классифицируем текст в iOS без CoreML: как и зачем? EatDog
Доклад Вячеслава Володько для Съесть собаку #16: iOS 21/03/2019
Тезисы:
- Классификация текстов с помощью встроенных в iOS SDK средств.
- Ограничения NLLanguageRecognizer и MLTextClassifier.
- Построение собственного классификатора текстов.
- Техники, которые позволяют встроить классификатор в AppExtension.
- Оценка эффективности классификатора.
macOS app development for iOS devs: expand your horizonsEatDog
Доклад Юлии Ващенко для Съесть собаку #16: iOS, 21/03/2019
Тезисы:
- Преимущества разработки под macOS для iOS программистов.
- UIKit vs AppKit.
- Подготовка к релизу Marzipan на наших платформах.
- Взгляд на macOS & iOS с точки зрения их истории.
- Технологии, специфичные для десктопа.
- Демо: Современное межпроцессорное общение.
- Бонус для iOS разработчиков, посетивших доклад.
Доклад Антона Минашкина для Съесть собаку #15, 27/11/18
Тезисы:
- Почему DI – такой популярный design pattern в Android;
- Что особенного в DI для Kotlin;
- Практическая польза и опции DI.
Быстрый в имплементации и в работе мониторинг с использованием ELKEatDog
Доклад Ивана Мельничука на "Съесть собаку"#14: PHP, 20/09/2018
Тезисы:
Как начать кастомно логировать приложение при минимальных усилиях;
Как выглядит готовый стек логирования ELK;
Немного о наболевшем или как доказать заказчику в чем проблема сайта;
Google Analytics семплирует данные, а вы можете узнать больше.
Доклад Евгения Кузьмина для "Съесть собаку" #14: PHP, 20/092018
Тезисы:
Построение процесса continuous integration/delivery на примере Laravel-приложения;
Структура организации авто-тестирования;
Интеграция запуска тестов и деплоя на CI сервере Jenkins;
Применение Docker в связке с AWS ElasticBeanstalk для blue-green деплоя.
Как мы экспериментируем в больших микросервисных системахEatDog
Доклад Александра Баранецкого для Съесть собаку #13, 14/06/2018.
Тезисы:
- Как сделать гибкой разработку на микросервисной системе, в которой более 100 узлов;
- Как минимизировать ошибки и их цену;
- Как мягко обеспечить миграции версий и эволюцию всей системы в целом.
Доклад Александра Котыни на Съесть собаку #13, 14/06/2018.
Тезисы:
- Зачем использовать Redis;
- Эволюция внедрения Redis в крупный проект и подводные камни при его использовании;
- Варианты достижения высокой доступности и отказоустойчивости;
- Наш сценарий.
Доклад Антона Немцева для Съесть собаку #12: JavaScript, 15/03/2018.
Тезисы:
- Зачем, ну зачем нам это?!
- Что именно мы ограничиваем и как выбираем кодстайл;
- Правила и ограничения при написании скриптов, стилей и рабочего процесса;
- Напишем свой собственный npm-пакет с целью особо изощренного насилия;
- Правила и ограничения для рабочего процесса на стороне систем контроля версий;
- Что дальше?
Refactor to Reactive With Spring 5 and Project ReactorEatDog
The document discusses refactoring a Spring application to use reactive approaches. It begins with an overview of reactivity and its benefits compared to blocking implementations. The refactoring process involves 3 main steps: 1) Refactoring the design to use a push model with streaming APIs instead of pulling data; 2) Choosing reactive tooling like Project Reactor, Spring WebFlux and non-blocking drivers; 3) Refactoring the code to use asynchronous and non-blocking implementations, updating contracts to use reactive types like Mono and Flux, and handling errors through retry operators. Examples show converting services to return reactive streams and consume external APIs asynchronously.
1) APIs and GraphQL are discussed as alternatives to traditional database-centric approaches for building applications.
2) GraphQL provides an alternative query language and runtime that allows clients to efficiently fetch nested data from multiple sources in a single request.
3) The document discusses some advantages of GraphQL like efficient data fetching, easier development, and analytics capabilities. It also notes some challenges around caching, security, and error handling.
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
Доклад Ивана Мосева для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Места обитания: где разворачивать свои микросервисы
- Взаимоотношения в стае: как микросервисы общаются между собой
- Микросервисы и человек: авторизация пользователей и роутинг
- Содержание в неволе: как разрабатывать микросервисы локально
- Выводы.
Доклад Антона Молдована, Software Architect, для Съесть собаку #9, 15/06/2017.
Тезисы:
- Большая роль TDD и DI
- Проблемы с TDD и DI
- Суть альтернативного подхода Dependency Rejection
- Разрушительная перспектива с TDD without Mocks
- Выводы.
Доклад Сергея Калинца, Software Architect, для Съесть собаку #9, 15/06/2017.
Тезисы:
- Проблемы стандартного процесса разработки
- Понятие CI pipeline
- Решения для автоматизации сборки, тестирования и развертывания
- Инструменты для эффективной разработки
- Использование тестовых двойников в .NET
- Концепция "живого кода"
- Демонстрация применения современных библиотек и инструментов для эффективного написания кода.
Доклад Дмитрия Науменко для "Съесть собаку #8", PHP, 20/04/17.
Тезисы:
- Понятие DDD и его цели
- Концепции и паттерны применяемые в DDD
- Использование подходов DDD в разработке приложений
- Преимущества и недостатки
- Выводы.
Нельзя просто так взять и сделать версионирование APIEatDog
"Нельзя просто так взять и сделать версионирование API"
Почему важно иметь версионирование и какие проблемы оно решает
Какие есть подходы к версионированию API
Какие инструменты и решения предоставляют популярные веб-фреймворки
Почему версионирование - это не просто и как решить возникшие трудности
Выводы
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
"Особенности SaaS под углом платного доступа к API и ресурсам"
Проблемный домен — введение в управление ресурсами SaaS решения
SLA и требования к отказоустойчивости
Алгоритмы балансировки запросов API
Расширяемость решения в облачной инфраструктуре
Вычислительная сложность задач и управлении запросами пользователей
Пути решения и выбор инструментов, расширение их возможностей
Выводы
3. Что будет:
• Глава 1. Немного про OWASP
• Глава 2. Моделирование угроз (важно)
• Глава 3. Уязвимости (быстренько) и инъекции (здесь вы устанете)
• Глава 4. Полезное на-почитать
• Глава 5. Как тестировать (внезапно)
3
4. Stuff:
• Web Security Wiki
• Cheat Sheets
• Top 10 Project
Guides:
• Development Guide
• Code Review Guide
• Testing Guide
Testing Tools:
• Offensive Web Testing
Framework (OWTF)
• Zed Attack Proxy (ZAP)
• Application Security Verification
Standard (ASVS)
OWASP
Open Web Application Security Project
4
5. • 1. Category: Principle
• 2. Category: Threat Agent
• 3. Category: Attack
• 4. Category: Vulnerability
• 5. Category: Control
• 6. Category: Technical Impact
• 7. Category: Business Impact
Любой риск, связанный с безопасностью,
состоит из агента угрозы (атакующий),
который использует атаки, чтобы найти
уязвимости (как правило, из-за отсутствия или
плохого контроля). В случае успеха атака
окажет техническое влияние
и бизнес-влияние. С риском могут быть
связаны один или несколько принципов.
OWASP ASDR
The OWASP Application Security Desk Reference
5
6. (Некоторые проверенные)
Принципы безопасности
• Применяйте глубокую защиту
• Используйте позитивную модель безопасности
• Краштесь безопасно
• Запускайте приложение с минимальными привилегиями
• Избегайте безопасности через сложность/неясность
• Делайте просто
• Фиксируйте проникнования
• Не доверяйте инфраструктуре
• Не доверяйте сервисам
• Делайте безопасные настройки по-умолчанию
6
7. Агенты угрозы (Threat Agents)
Что-то, что может выражать угрозу
Агент угрозы = Возможности + Намерения + Предыдущие действия
7
8. Классификация агентов угрозы
• Не целенаправленные: вирусы, черви, трояны, логиче ские бомбы.
• Сотрудники: нанятые, контракторы, обслуживающий персонал или охранники, которым
надоела компания.
• Организованные преступники: нацеленные на ценную для них информацию: банк овские
счета, кредитные карты или интелектуальную собственность, к онвертируемую в деньги.
• Компании, которые ведут информационную войну или к онкурентную разведку.
• Люди, случайно: несчастные случаи, неост орожность, небрежность.
• Люди, намеренно: внутри или снаружи компании.
• Природные: потоп, пожар, молния, метеорит, землетрясение.
8
12. Access control enforced by presentation layer Addition of data-structur e sentinel Allowing password agingASP.NET Misconfigurations Assigning
instead of comparing Authentication Bypass via Assumed-Immutable Data Buffer Overflow Buffer underwrite Business logic vulner ability Capture-replay
Catch NullPointerException Comparing classes by name Comparing instead of assigning Comprehensive list of Threats to Authentication Pr ocedures and
Data Covert timing channel CRLF Injection Cross Site Scripting Flaw Dangerous FunctionDeletion of data-structur e sentinel Directory Restriction
Error Deserialization of untrusted dataDouble Free Doubly freeing memory Duplicate key in associative list (alist) Empty Catch Block Empty
String Password Failure of true random number gener ator Failure to account for default case in switch Failure to add integrity check value Failure to check
for certificate revocation Failure to check integrity check value Failure to check whether privileges were dropped successfully Failure to deallocate data
Failure to drop privileges when r easonable Failure to encrypt data Failure to follow chain of trust in certificate validation Failure to
follow guideline/specification Failure to protect stored data from modificationFailure to provide confidentiality for stored data Failure
to validate certificate e xpiration Failure to validate host-specific certificate data File Access Race Condition: T OCTOU Format String Guessed or visible
temporary file Hard-Coded Password Heap Inspection Heap overflow HTTP Parameter Pollution Ignored function return value Illegal Pointer Value Improper
cleanup on thrown exception Improper Data Validation Improper string length checking Improper error
handling Improper temp file opening Incorrect block delimitation Information LeakageInformation leak thr ough class cloning Information
leak through serialization Injection problem Insecure Compiler Optimization Insecure Randomness Insecure Temporary File Insecure Third Party Domain
Access Insecure Transport Insufficient Entropy Insufficient entropy in pseudo-random number generator Insufficient Session-ID Length Integer coercion
error Integer overflow Invoking untrusted mobile code J2EE Misconfiguration: Unsafe Bean Declaration Least Privilege Violation Key
exchange without entity authentication Leftover Debug CodeLog Forging Log injection Member Field Race Condition Memory leak Miscalculated
null termination Misinterpreted function return value Missing parameter Missing XML Validation Mutable object returned Non-cryptographic pseudo-
random number generator Not allowing password aging Not using a random initialization vector with cipher block chaining mode Null Dereference Object
Model Violation: Just One of equals() and hashCode() Defined Often Misused: AuthenticationOften Misused: Exception Handling Often
Misused: File System Often Misused: Privilege Management Often Misused: String Management Omitted break statement Open forward Open redirect
Overflow of static internal buffer Overly-Broad Catch Block Overly-Broad Throws Declaration Passing mutable objects to an untrusted method Password
Management: Hardcoded Password Password Management: Weak Cryptography Password Plaintext Storage PHP File Inclusion Poor Logging
Practice Portability Flaw Privacy Violation PRNG Seed Error Process Control Publicizing of private data when using inner classes Race Conditions Reflection
attack in an auth protocol Reflection injection Relative path library search Reliance on data layout Relying on package-le vel scope Resource exhaustion
Return Inside Finally Block Reusing a nonce, key pair in encryption Session Fixation Sign extension error Signed to unsigned conversion err or Stack overflow
State synchronization error Storing passwords in a recoverable format String Termination Error Missing Error Handling Symbolic
name not mapping to corr ect object Template:Vulnerability Truncation error Trust Boundary Violation Trust of system event data Trusting self-reported DNS
name Trusting self-reported IP address Uncaught exception Unchecked array indexing Unchecked Return Value: Missing Check against Null Undefined
Behavior Uninitialized Variable Unintentional pointer scaling Unreleased Resource Unrestricted File Upload Unsafe function call fr om a signal handler
Unsafe JNI Unsafe Mobile Code Unsafe Reflection Unsigned to signed conversion err or Use of hard-coded password Use of Obsolete Methods
Use of sizeof() on a pointer type Using a broken or risky cryptographic algorithm Using a key past its expiration date Using freed memory Using password
systems Using referer field for authentication or authorization Using single-factor authentication Using the wrong operator Validation performed
in clientWrap-around error Write-what-where condition
12
13. 2017 Top 10 List (RC)
1. Injection
2. Broken Authentication and Session Management
3. Cross-Site Scripting (XSS)
4. Broken Access Control
5. Security Misconfiguration
6. Sensitive Data Exposure
7. Insufficient Attack Protection
8. Cross-Site Request Forgery (CSRF)
9. Using Components with Known Vulnerabilities
10. Underprotected APIs
13
15. Глава 2
Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery (CSRF) — это атака, при которой
пользователь выполняет нежелаемые команды в приложении,
в котором он сейчас авторизован.
15
17. Глава 2
Защита от CSRF
• Проверяйте заголовки: Origin, Referer
• Используйте анти-CSRF токены
Си: CSRF Prevention Cheat Sheet фо мо дитейлс.
17
18. Глава 2
Анти-CSRF токен
• Для любой операции, меняющей сост ояние системы, нужен безопасный случайный т окен.
• Требования к токену:
• уникальный для сессии,
• большое случайное значение,
• сгенерированное криптографически-безопасным г енератором случайных чисел.
• Сервер отклоняет запрос, если токен не проходит валидацию.
18
24. Глава 3
Защита от SQL-инъекций
• Websec: SQL Injection Knowledge Base
• Php.net: SQL Injections Avoidance Techniques
24
25. Глава 3
Инъекции в код
Общий термин для обозначения типов атак, при которых агент
внедряет код, который выполняется приложением.
25
26. Глава 3
Инъекции в код
$myvar = "varname";
$x = $_GET['arg'];
eval("$myvar = $x;");
eval = evil
01.
02.
03.
26
27. Глава 3
Защита от инъекций в код
• Не используйте eval().
• Не используйте eval(), пожалуйста.
• Ладно, но не доверяйте никакому стороннему инпуту.
• Никакому — значит, вообще никакому.
27
28. Глава 3
Инъекция в команды
Атака, цель которой — выполнение внедренных команд на хосте
сервера.
28
29. Глава 3
Инъекция в команды
print("Please specify the name of the file to delete<br>" );
$file = $_GET['filename' ];
system("rm $file" );
Request:
http://127.0.0.1/delete.php?filename=bob.txt;id
Response:
Please specify the name of the file to delete
uid=33(www-data) gid=33(www-data) groups=33(www-data)
01.
02.
03.
01.
02.
29
30. Глава 3
Защита от инъекций в команды
• Не используйте инпут в командах, где это возможно
• Валидруйте инпут
• Экранируйте инпут
30
41. Глава 3
Защита от XSS
• XSS Prevention Cheat Sheet
• DOM based XSS Prevention Cheat Sheet
• XSS Filter Evasion Cheat Sheet
41
42. Глава 3
Защита от XSS
1. Постарайтесь поменьше выводить пользовательских данных :)
2. Используйте HTML-экранирование перед вставкой данных в HTML
3. Используйте Атрибут-экранирование перед вствкой данных в атрибуты HTML
4. Используйте JavaScript-экранирование перед вставкой данных в JavaScript
5. Используйте HTML-экранирование JSON-строк в контексте HTML
6. Читайте JSON через JSON.parse в JavaScript
7. Используйте CSS-экранирование и строго проверяйте данные перед вставкой в <style>
8. Используйте URL-экранирование перед вставкой данных в URL
9. Очищайте HTML специальными инструментами
10. Не допускайте DOM-Based XSS
42
43. Глава 3
Защита от DOM Based XSS
1. Используйте HTML-экранирование вместе с JavaScript-экранированием перед вставк ой данных
в HTML субконтекст *
2. Используйте JavaScript-экранирование перед вставкой данных в субконтекст HTML атрибутов *
3. Будьте осторожны :), вствляя данные в ивент -хендлеры или JavaScript код
4. Используйте JavaScript-экранирование перед вставкой данных в субконтекст CSS атрибутов *
5. Используйте URL-экранирование вместе с JavaScript-экранированием перед вставк ой данных в
субконтекст URL атрибутов *
6. Изменяте DOM используя безопасные JavaScript функции и свойства
* — в контексте выполения JavaScript 43
44. Глава 3
Защита от XSS (Bonus track)
1. Ставьте HTTPOnly cookie флаг
2. Реализуйте Content Security Policy
3. Используйте темплейт-системы с встроенным экранированием
4. Используйте X-XSS-Protection заголовок в ответе
44
49. Глава 3
Log Forging
Имитация сообщений или вставка небезопасных данных в логи
при записи пользовательских данных в лог.
49
50. Глава 3
Log Forging
$productId = Mage::app()->getRequest()->getParam('id');
try {
$product->load($productId);
} catch (Mage_Exception $exception) {
Mage::log('Failed to load product with ID = ' + $productId);
}
01.
02.
03.
04.
05.
06.
50
51. Глава 3
Log Forging
http://magento.site/index.php?id=5
2017-04-19T15:13:24+00:00 ERR (3): Failed to load product with ID = 5.
http://magento.site/index.php?id=5n2017-04-19T15:20:31+00:00 ERR (3): Payment was
successful for order #100000156, but Magento was not able to complete the order.
2017-04-19T15:13:24+00:00 ERR (3): Failed to load product with ID = 5.
2017-04-19T15:20:31+00:00 ERR (3): Payment was successful for order #100000156,
but Magento was not able to complete the order.
51
52. Глава 3
Log Forging
— Здравствуйте! Я только что заплатил 500$ за ноутбук, заказ
номер 100000156, с карты деньги ушли, но сайт показал ошибку.
Можете проверить лог файлы и вернуть мне деньги?
52
53. Глава 3
Regular expression DoS
Атака, при которой регулярные выражения начинают работать
очень медленно.
53
54. ^(a+)+$
Глава 3
Regular expression DoS
• Input: 'aaaaX' — 16 возможных вариантов
• Input: 'aaaaaaaaaaaaaaaaX' — 65536 возможных вариантов
• Количество вариантов удваивается с каждой новой a.
54
55. Глава 3
ReDoS: Evil Regexes
Дьявольское регулярное выражение — то, которое может залипнуть на правильно
подобранном инпуте.
Обычно такое выражение содержит:
• группировку с повторением
• внутри повторяющейся группы:
• повторение
• альтернацию c перекрытием
55
56. Глава 3
ReDoS: Evil Regexes
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} // for x > 10
Все вышеперечисленное чувствит ельно к вводу aaaaaaaaaaaaaaaaaaaaaaaa!
56
57. Глава 3
ReDoS: Evil Regexes
config.system.Database
^(([a-z])+.)+[A-Z]([a-z])+$
57
58. Глава 3
Защита от ReDoS
• Используйте регулярные выражения только в крайней
необходимости.
• Не используйте дьявольские регулярные выражения.
58
59. Глава 4
Кое-что еще
• Path Traversal
• Full Path Disclosure
• Web Parameter Tampering
• Content Security Policy
• HTTP access control (CORS)
• Least Privilege Principle
59