Архив метки: Закрытие уязвимостей

💉 Советы по безопасности приложений для мобильных, веб и настольных приложений

Нарушение данных не только обходится дорого любой организации, но и наносит ущерб репутации бренда.

Чтобы предотвратить угрозы, приложения (веб, мобильные и настольные) должны быть защищены.

Согласно отчету, опубликованному на https://www.forbes.com, «84% всех кибератак происходит на уровне приложений».

Итак, сегодня мы дадим вам девять советов по безопасности, чтобы защитить ваши веб-приложения от бесконечного уровня угроз и кибератак.

1. Убедитесь, что в вашем приложении нет уязвимостей.

Самая опасная угроза для приложения – это его собственная уязвимость и недостатки.

Убедитесь, что в вашем приложении нет известных уязвимостей.

Это может быть как веб-приложение, мобильное приложение или настольное приложение, а устранение уязвимости поможет в предотвращении угроз.

2. Подумайте о тестировании безопасности вашего приложения перед его отправкой в производство.

Чтобы устранить уязвимость, вы можете провести тестирование безопасности ваших приложений.

Тестирование безопасности не замедляет процесс разработки.

Тестирование безопасности помогает найти и исправить уязвимости вашего приложения, а также сделать ваши приложения более эффективными.

Поэтому рассмотрите возможность проверки безопасности ваших приложений перед отправкой в производство.

3. Программа Bug Bounty

многие крупные компании, такие как Mozilla, Facebook, Yahoo !, Google, Reddit, Square и Microsoft, организуют программы Bug Bounty для выявления уязвимостей в своих приложениях.

Эта программа позволяет вашей организации находить и устранять ошибки до того, как о них узнают общественность или известные хакеры.

Таким образом, вы можете предотвратить инциденты.

Топ-5 платформ Bunty Bounty для организаций для повышения безопасности приложений

4. Обучите свою организацию лучшим практикам по безопасности приложений.

Вы также можете защитить свои приложения, рассказав своим сотрудникам о их безопасности.

Знания кибербезопасности помогут вашей организации противостоять угрозам ваших приложений.

5. Используйте автоматический сканер для обеспечения безопасности приложения.

Сканирование всего вашего приложения также является хорошей мерой для обеспечения безопасности.

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

Вы также можете использовать инструменты сканирования уязвимостей, которые являются автоматизированными.

Инструменты сканирования уязвимостей будут искать в ваших приложениях  уязвимости, такие как межсайтовый скриптинг, SQL-инъекция, инъекцию команд, обход пути т.д.

6. Подумайте перед использованием открытого исходного кода в вашем приложении

открытый исходный код может быть уязвим.

Таким образом, использование открытого исходного кода в вашем приложении может сделать ваши приложения уязвимыми для кибератак.

Поэтому дважды подумайте, прежде чем использовать в своем приложении открытый исходный код.

Riskemy.com говорит: «Всего одна строка испорченного кода может разрушить весь сайт».

7. Рассмотрите возможность шифрования исходного кода ваших приложений.

Шифрование исходного кода гарантирует, что злоумышленник не сможет получить доступ к исходному коду ваших приложений.

8. Тестирование на проникновение также помогает защитить ваши приложения

Тестирование на проникновение также пентестом.

Для защиты приложений киберпреступников полезно тестирование на проникновение.

Тестирование на проникновение – это практика обнаружения уязвимостей в компьютерной системе, сети или веб-приложении, которые может использовать злоумышленник.

Согласно сообщению https://riskemy.com “Пентест обнаруживает уязвимости бизнес-логики, которые неизвестны автоматическому сканеру”

9. В случае, если это веб-приложение попробуйте следующие рекомендации

Используйте HTTPS в своем веб-приложении и перенаправляйте HTTP-трафик на HTTPS.

Внедрите заголовок безопасности x-xss-protection для защиты ваших веб-приложений от атак с использованием межсайтовых скриптов.

Включите выводы открытого ключа и используйте обновленную версию TLS и избегайте использования только SSL.

Надежно используйте Cookies.

Не храните конфиденциальную и важную информацию в файлах cookie.

 

 



2019-06-26T10:32:04
Закрытие уязвимостей

💉 Что такое SQL-инъекция и как ее предотвратить в PHP-приложениях

Если вы уже знаете, что такое SQL-инъекция, смело переходите ко второй половине статьи.

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

Что такое SQL-инъекция?

Ключ к пониманию SQL-инъекций находится в его названии: SQL + Injection.

Слово «инъекция» здесь не имеет каких-либо медицинских коннотаций, а скорее является использованием глагола «внедрить».

Вместе эти два слова воплощают идею внедрения SQL в веб-приложение.

Ввод SQL в веб-приложение. , , ммм , , Разве это не то, что мы делаем в любом случае?

Да, но мы не хотим, чтобы злоумышленник управлял нашей базой данных.

Давайте разберемся с этим на примере.

Допустим, вы создаете типичный веб-сайт PHP для местного магазина электронной коммерции, поэтому вы решили добавить контактную форму, например:

<form action="record_message.php" method="POST">

  <label>Your name</label>

  <input type="text" name="name">



  <label>Your message</label>

  <textarea name="message" rows="5"></textarea>



  <input type="submit" value="Send">

</form>

И давайте предположим, что файл send_message.php хранит все в базе данных, чтобы владельцы магазина могли читать пользовательские сообщения.

Например такой код:

<?php



$name = $_POST['name'];

$message = $_POST['message'];



// check if this user already has a message

mysqli_query($conn, "SELECT * from messages where name = $name");



// Other code here

Итак, вы сначала пытаетесь увидеть, есть ли у этого пользователя непрочитанное сообщение. Запрос SELECT * from messages where name = $name, кажется достаточно простым, верно?

НЕПРАВИЛЬНО!

Теперь мы открыли двери для мгновенного уничтожения нашей базы данных.

Для этого злоумышленнику необходимо выполнить следующие условия:

  • Приложение работает на базе данных SQL (сегодня почти каждое приложение работает на SQL)
  • Текущее подключение к базе данных имеет разрешения «редактировать» и «удалять» в базе данных.
  • Названия важных таблиц можно угадать

Третий момент означает, что теперь, когда злоумышленник знает, что вы управляете магазином электронной коммерции, вы, скорее всего, сохраните данные заказа в таблице orders.

Вооружившись всем этим, все, что нужно сделать злоумышленнику, это указать имя:

Joe; truncate orders;

Давайте посмотрим, каким будет запрос, когда он будет выполнен скриптом PHP:

SELECT * FROM messages WHERE name = Joe; truncate orders;

Хорошо, в первой части запроса есть синтаксическая ошибка (без кавычек вокруг «Joe»), но точка с запятой вынуждает движок MySQL начать интерпретацию нового: truncate orders.

Просто так, одним махом, вся история заказов исчезла!

Теперь, когда вы знаете, как работает SQL-инъекция, пришло время посмотреть, как это остановить. Для успешного внедрения SQL необходимо выполнить два условия:

  1. Скрипт PHP должен иметь права на изменение / удаление базы данных. Я думаю, что это верно для всех приложений, и вы не сможете сделать ваши приложения доступными только для чтения. И подумайте, что, даже если мы удалим все привилегии на изменение, SQL-инъекция все еще может позволить кому-то запускать запросы SELECT и просматривать всю базу данных, включая конфиденциальные данные. Другими словами, снижение уровня доступа к базе данных не работает, ведь ваше приложение все равно нуждается в этом.
  2. Пользовательский ввод обрабатывается. Единственный способ внедрения SQL-кода – это когда вы принимаете данные от пользователей. Еще раз, не практично останавливать все входные данные для вашего приложения только потому, что вы беспокоитесь о внедрении SQL.

Предотвращение внедрения SQL инъекуции в PHP

Теперь, учитывая, что соединения с базой данных, запросы и пользовательские вводы являются частью жизни БД, то как мы можем предотвратить внедрение SQL?

К счастью, это довольно просто, и есть два способа сделать это:

1) очистить пользовательский ввод и 2) использовать подготовленные операторы.

Пользовательский ввод

Если вы используете более старую версию PHP (5.5 или ниже, и это часто случается на виртуальном хостинге), было бы целесообразно выполнить весь пользовательский ввод с помощью функции mysql_real_escape_string ().

В основном то, что он делает, это удаление всех специальных символов в строке, так что они теряют свое значение при использовании базой данных.

Например, если у вас есть строка, похожая на строку «I’m a strin», злоумышленник может использовать символ одинарной кавычки (‘) для манипулирования создаваемым запросом к базе данных и вызывать SQL-инъекцию.

Запуск его через mysql_real_escape_string () приводит к появлению строки, которая добавляет обратную косую черту к одиночной кавычке, избегая ее.

В результате вся строка теперь передается в базу данных как безвредная строка вместо возможности участвовать в манипулировании запросами.

У этого подхода есть один недостаток: это действительно очень старая техника, которая согласуется со старыми формами доступа к базе данных в PHP.

Начиная с PHP 7, этой функции больше не существует, что подводит нас к следующему решению.

Используйте готовые операторы

Подготовленные операторы – это способ сделать запросы к базе данных более безопасными и надежными.

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

Это то, что мы подразумеваем под «подготовкой».

Как только оператор подготовлен, мы передаем информацию как параметризованные входные данные, чтобы база данных могла «заполнить пробелы», подключив входные данные к структуре запросов, которую мы отправляли ранее.

Это отнимает любую особую мощность, которую могут иметь входные данные, в результате чего они будут рассматриваться как простые переменные (или полезные нагрузки, если хотите) во всем процессе.

Вот как выглядят подготовленные операторы:

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";



// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);



// Check connection

if ($conn->connect_error) {

    die("Connection failed: " . $conn->connect_error);

}



// prepare and bind

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");

$stmt->bind_param("sss", $firstname, $lastname, $email);



// set parameters and execute

$firstname = "John";

$lastname = "Doe";

$email = "john@example.com";

$stmt->execute();



$firstname = "Mary";

$lastname = "Moe";

$email = "mary@example.com";

$stmt->execute();



$firstname = "Julie";

$lastname = "Dooley";

$email = "julie@example.com";

$stmt->execute();



echo "New records created successfully";



$stmt->close();

$conn->close();

?>

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

Для тех, кто уже знаком с расширением PDO PHP и использует его для создания готовых операторов, у меня есть небольшой совет.

Предупреждение: будьте осторожны при настройке PDO

Используя PDO для доступа к базе данных, мы можем впасть в ложное чувство безопасности. «Ах, хорошо, я использую PDO. Теперь мне не нужно думать ни о чем другом », – таково наше мышление.

Это правда, что PDO (или подготовленные MySQLi операторы) достаточно для предотвращения всевозможных SQL-атак, но вы должны быть осторожны при его настройке.

Обычно просто скопируйте и вставьте код из учебников или из ваших предыдущих проектов и двигайтесь дальше, но этот параметр может отменить все:

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

Решение простое: убедитесь, что для этой эмуляции установлено значение false.

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Теперь PHP-скрипт вынужден использовать подготовленные операторы на уровне базы данных, предотвращая всевозможные SQL-инъекции.

Предотвращение SQLi с использованием WAF

Знаете ли вы, что вы также можете защитить веб-приложения от внедрения SQL с помощью WAF (брандмауэр веб-приложений)?

И не только SQL-инъекция, но и многие другие уязвимости уровня 7, такие как межсайтовый скриптинг, неправильная аутентификация, межсайтовая подделка, раскрытие данных и т. д.

Вы можете использовать самодостаточный хостинг, такой как Mod Security, или облачный, как показано ниже.

Заключение

SQL-инъекция – очень неприятная атака на веб-приложение, но ее легко избежать.

Как мы увидели в этой статье, осторожность при обработке пользовательского ввода (кстати, SQL-инъекция – не единственная угроза, которую приносит обработка пользовательского ввода) и запрос базы данных – это все, что нужно сделать.

Тем не менее, мы не всегда работаем над безопасностью веб-фреймворка, поэтому лучше знать об этом типе атаки и не поддаваться ей.

Статьи по теме:

 



2019-06-03T11:42:45
Закрытие уязвимостей

🦁 Расширение браузера CSS Exfil Protection предлагает защиту от атак с уязвимостью CSS Exfil

Когда мы просматриваем Интернет, мы подвержены множеству уязвимостей, которые могут раскрыть наши данные злоумышленникам.

Но со временем технологии также развивались, чтобы защитить нас от этих атак.

И в то же время злоумышленники постоянно пытаются найти уязвимости и взломать наши системы.

Уязвимость, о которой мы говорим сегодня, заключается в CSS веб-страницы и называется CSS Exfil.

Современные веб-сайты в значительной степени полагаются на CSS для стилизации, и вы не сможете сейчас представить сайт без CSS.

CSS Exfil можно использовать для кражи целевых данных с использованием каскадных таблиц стилей (CSS) в качестве вектора атаки.

Это ставит под угрозу вашу информацию, такую ​​как имя пользователя, пароли, электронные письма.

Существует множество сценариев атак, основанных на CSS Exfil.

Они включают в себя внедрение кода, отслеживание в Интернете, незаконную рекламу, размещение вредоносного кода в DOM и многое другое.

Защита от этой уязвимости обязательна, но большинство современных браузеров, которые мы используем, не имеют мер защиты от этой уязвимости.

Как проверить, уязвим ли ваш браузер к атакам CSS Exfil

Есть замечательный инструмент для тестирования на уязвимости CSS Exfil, который может работать в любом браузере и подтверждать / отклонять статус защиты.

Инструмент проверяет браузер на наличие одного и того же источника и междоменного CSS.

Веб-страница будет пытаться имитировать атаку через CSS Exfil и предоставит результаты тестирования.

Расширение CSS Exfil Protection для Chrome и Firefox

Если ваш браузер оказывается уязвимым, то вам следует подумать о том, чтобы добавить в него немного безопасности.

Для Chrome и Firefox доступно расширение, которое сделает эту работу за вас.

Расширение называется CSS Exfil Protection и доступно для скачивания в Chrome Web Store и Firefox Store.

После установки и включения вы можете снова обратиться к тому же инструменту по поиску уязвимостей, чтобы проверить, защищен ли ваш браузер теперь.

Образы атаки не должны загружаться, и все тесты должны давать положительный результат.

Кроме того, вы сможете заметить некий счетчик с помощью значка расширения рядом с адресной строкой.

Количество указывает на то, что эта веб-страница пыталась использовать уязвимость и была заблокирована.

Таким образом, если вы заметили этот счетчик на каких-либо сайтах, вы должны быть осторожны с ними.

Расширение CSS Exfil Protection работает путем предварительной обработки CSS целевой веб-страницы.

Оно сканирует весь код CSS и ищет любые удаленные вызовы внутри значений атрибутов CSS.

Если такой удаленный вызов существует, он нейтрализует его и очищает CSS.

И счетчик, вероятно, является количеством таких удаленных вызовов, которые он нашел в CSS этой веб-страницы.

CSS Exfil может создать довольно много уязвимостей.

Наличие защиты от них является обязательным.

Это расширение – всего лишь один шаг в правильном направлении, и мы надеемся, что в будущем браузеры начнут обеспечивать больше безопасности пользователей.

CSS Exfil Protection является инструментом с открытым исходным кодом и бесплатным для скачивания.

Вы можете посетить страницу GitHub или напрямую скачать его из магазина расширений вашего веб-браузера.

 



2019-04-11T09:50:32
Закрытие уязвимостей

👨⚕️️ Последние угрозы безопасности Windows 10 и уязвимости (2019)

Windows 10 является безопасной ОС Windows, как и когда-либо существовавшая ранее.

С постоянным потоком автоматических обновлений (даже если они приносят свою долю проблем) и одним из лучших встроенных в него комплектов безопасности для ПК, можно сказать, что вам вообще не о чем беспокоиться, когда используя эту ОС.

Но это не значит, что вы должны испытывать полное спокойствие, а  оставаться в курсе существующих угроз безопасности в Windows 10 – лучший способ их избежать.

Вот некоторые из наиболее серьезных уязвимостей безопасности Windows, которые продолжают влиять на пользователей сегодня.

CVE-2017-11882: Microsoft Office 2016

Эта уязвимость была опубликована в 2017 году, но до этого момента существовала 17 лет!

Эксплойт использует уязвимость в Microsoft Office для захвата вашего компьютера для майнинга криптовалюты, DDoS-атак и других гнусных целей.

Однако это не может повлиять на вас, если у вас просто есть Microsoft Office.

Чтобы подвергнуть ваш компьютер атаке, вам необходимо открыть вредоносный файл, представляющий собой документ Microsoft Office.

Как только вы открываете его, он запускает скрипт Powershell, который заражает ваш компьютер.

Microsoft исправила эту уязвимость еще в 2017 году, поэтому пользователи Windows 7 – Windows 10, которые в курсе последних событий, должны быть в безопасности.

Если вы используете более старую ОС Windows, вы можете быть в опасности.

Так что обновляйтесь и не загружайте какие-либо хитрые файлы.

CVE-2018-8174: Internet Explorer

Эта уязвимость, угрожающе прозванная Double Kill, может быть запущена через устаревший интернет-браузер Microsoft, Internet Explorer.

Он может работать на любой версии Windows, хотя в мае 2018 года Microsoft убрала его из операционных систем, которые она продолжает поддерживать.

Double Kill использует ошибку в файле vbscript.dll, которая позволяет злоумышленнику войти в виртуальную память ПК.

Она известно как уязвимость, связанная с использованием UAF, которая способна удаленно выполнять вредоносный код благодаря тому, что получает доступ на чтение / запись к виртуальной памяти вашего компьютера.

Нужно ли говорить, что на этом этапе никто не должен использовать Internet Explorer?

CVE-2016-0189: Internet Explorer

Говоря об этом далее, в устаревшем браузере Microsoft есть еще одна уязвимость безопасности.

Она вызвала дурную славу в 2016 году, когда она была использована для нападения на ряд организаций в Южной Корее.

Как и в случае с последней уязвимостью, этот баг использует ошибку в необновленном файле VBScript.dll в Windows.

Что особенно подло в этом отношении, так это то, что она не обязательно требует загрузки файла, а может фактически заразить ваш компьютер, если вы попадете на взломанный веб-сайт (обычно будучи перенаправленным с взломанного легального веб-сайта).

Уязвимость была исправлена в IE 9, 10 и 11, но она остается как тревожно заметное средство атаки из-за того, что пользователи не обновляют свои браузеры.

CVE-2018-4878: Adobe Flash

Еще одна опасная уязвимость UAF, она была обнаружена в начале 2018 года и находится в исторически нестабильном Adobe Flash Player (до версии 28.0.0.161).

Как и другие уязвимости UAF, она потенциально может предоставить злоумышленнику выполнение произвольного кода, что, по сути, позволяет им выполнять вредоносные команды в вашей системе.

Так на что стоит обратить внимание?

Странные веб-сайты с Flash-контентом и электронные письма с просьбой посмотреть видео в формате Flash.

Это было исправленоа Adobe вскоре после обнаружения, но она по-прежнему широко используется в наборах эксплойтов, что свидетельствует о том, что она по-прежнему достигает результатов для злоумышленников.

 



2019-03-26T11:37:42
Закрытие уязвимостей

Как вручную включить Retpoline в Windows 10

Я уверен, что вы знаете об аппаратных уязвимостях Spectre и Meltdown, которые были обнаружены в прошлом году в январе.

Эти аппаратные уязвимости позволяют программам украсть данные, которые обрабатываются на компьютере.

Затем прибыл Spectre 2!

Хотя это было пофикшено, решение привело к более существенному снижению производительности.

Retpoline стал новым решением!

В этом руководстве мы увидим, как вы можете настроить Retpoline в Windows 10.

Настроить Retpoline в Windows 10

Интересно отметить, что Retpoline – это метод бинарной модификации, разработанный Google.

Он предназначен для защиты от «Branch target injection», также называемого «Spectre».

Это решение обеспечивает повышение производительности ЦП.

Microsoft разворачивает его поэтапно.

А из-за сложности его реализации, преимущество в производительности у Windows 10 v1809 и более поздних выпусков.

Чтобы вручную включить Rerpoline в Windows, убедитесь, что у вас есть обновление KB4482887.

Затем добавьте следующие обновления конфигурации реестра:

На клиентских SKU:

reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0x400

reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 0x400

Перезагрузитесь

На серверных SKU :

reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0x400

reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 0x401

Перезагрузитесь

Как проверить статус Retpoline в Windows

Чтобы подтвердить, активен ли Retpoline, вы можете использовать командлет Get-SpeculationControlSettings PowerShell.

Этот скрипт PowerShell покажет состояние настраиваемых обновлений Windows для различных уязвимостей.

Включает в себя Spectre 2 и Meltdown.

Как только вы загрузите скрипт и выполните его, вот как это выглядит.

Speculation control settings for CVE-2017-5715 [branch target injection] 



Hardware support for branch target injection mitigation is present: True  

Windows OS support for branch target injection mitigation is present: True 

Windows OS support for branch target injection mitigation is enabled: True 

… 

BTIKernelRetpolineEnabled           : True 

BTIKernelImportOptimizationEnabled  : True 

...

В будущих обновлениях эта функция будет включена по умолчанию.

На данный момент она будет разрешена через облачную конфигурацию.

Microsoft работает над решением, которое больше не требует Retpoline.

Следующее поколение оборудования должно быть способно это исправить, но до обновления они будут исправлять эту уязвимость.

 



2019-03-11T17:32:01
Закрытие уязвимостей

Серьезный недостаток RCE раскрыт в популярных программах LibreOffice и OpenOffice

Это 2019 год, и простое открытие невинного файла офисного документа в вашей системе может позволить хакерам взломать ваш компьютер.

Нет, я не говорю об еще одной уязвимости в Microsoft Office, а о двух других наиболее популярных альтернативах – LibreOffice и Apache OpenOffice – бесплатном офисном программном обеспечении с открытым исходным кодом, используемом миллионами пользователей Windows, MacOS и Linux.

Исследователь безопасности Алекс Инфюр обнаружил серьезную уязвимость в удаленном выполнении кода (RCE) в этих двух офисных пакетах с открытым исходным кодом, которая может быть вызвана простым открытием вредоносного файла ODT (OpenDocument Text).

Атака основывается на использовании уязвимости обхода каталога, идентифицированной как CVE-2018-16858, для автоматического запуска определенной библиотеки python, связанной с программным обеспечением, с использованием скрытого события onmouseover.

Чтобы воспользоваться этой уязвимостью, Inführ создал ODT-файл с гиперссылкой белого цвета (поэтому его не видно), в котором есть событие «onmouseover», чтобы обманным путем заставить жертву запускать локально доступный файл python в своей системе при размещении мыши в любом месте. на невидимую гиперссылку.

По словам исследователя, файл python с именем «pydoc.py», входящий в состав собственного интерпретатора Python LibreOffice, принимает произвольные команды в одном из своих параметров и выполняет их через командную строку или консоль системы.

PoC Exploit и демонстрация видео

Inführ предоставил видео-демонстрацию с проверкой концепции (PoC), показывающую, как он смог обмануть событие, вызвав определенную функцию в файле Python, который в конечном итоге выполнил полезную нагрузку исследователя через командную строку Windows (cmd), не показывая никакого диалогового окна с предупреждением. пользователю.