Проверка php кода безопасность

PHP Проверка кода на безопасность

PHP – один из наиболее популярных языков для веб-разработки. В ежегодном отчете GitHub за 2021 г. он по уровню популярности находится на шестом месте, а в индексе TIOBE – на восьмом. Язык используется для создания сайтов и веб-приложений, в том числе и корпоративных. На нем написаны популярные CMS (Joomla, WordPress, Drupal), на которых работает огромное количество веб-ресурсов. К примеру, только на WordPress функционирует около 1/3 сайтов в интернете.

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

Безопасность PHP и анализ исходного кода SAST-инструментами

При разработке анализатора исходного кода Solar appScreener мы делали упор на SAST-анализ (метод белого ящика). Одна из его ключевых особенностей – возможность эксплуатации средств анализа не только разработчиками, но и конечными пользователями программных продуктов и информационных систем, написанных на языке PHP. SAST-анализ безопасности PHP-приложений позволяет организовать регулярное тестирование собственными силами. В нашем продукте результаты тестирования предоставляются в удобном для восприятия виде. Для работы с ними не нужен бэкграунд в разработке. С интерпретацией результатов без проблем справляются специалисты в области информационной безопасности или администраторы корпоративных информационных систем.

При использовании этого метода нет необходимости в развертывании отдельных сред для анализа ПО. Он покрывает практически 100% исходного кода. PHP-анализатор уязвимости, использующий технологию SAST, проверяет не только код самого приложения, но и связанных с ним внешних компонентов, библиотеки фреймворков (Laravel, Yii, Symphony, Zend Framework, FuelPHP и проч.) и так далее.

Читайте также:  Коды завершения программы python

Типовые проблемы, которые обнаруживаются в PHP при проверке на уязвимости

SAST-анализ безопасности позволяет выявлять большинство типовых проблем, характерных для приложений, написанных на PHP. В программах, написанных на этом языке, встречаются как «универсальные» уязвимости, которые характерные для других языков программирования, так и специфичные, характерные именно для PHP.

Уязвимости, связанные с получением данных

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

Уязвимости могут быть связаны с:

  • вводимыми пользователями данными. Слабые места – контактные и другие типы форм, в которые пользователи вводят информацию. Уязвимости появляются из-за слабой валидации и фильтрации данных;
  • SQL-запросами на запись/ зменение. Довольно частое явление – внедрение SQL-запросов во входных данных таким образом, чтобы они исполнялись в теле основных SQL-запросов. Опять же, реализация связанных с этим обстоятельством угроз становится возможной из-за слабой фильтрации и валидации данных перед выполнением запросов;
  • POST/GET-запросами. Если приложение или сайт их принимает, то требуется надлежащая их обработка. Иначе через POST/GET-запросы могут реализовываться URL-атаки с целью получения доступа к файлам на сервере, внедрение вредоносного кода (например, через svg/onload), а также другие действия.

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

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

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

Глобальные переменные

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

Еще несколько характерных для PHP уязвимостей

При анализе PHP и проведении тестов безопасности следует уделять внимание следующим проблемам/уязвимостям, которые могут появляться в написанных на этом языке приложениях:

  • XSS или межсайтовый скриптинг. При реализации угрозы злоумышленники могут получать конфиденциальные данные, которые хранятся в браузере пользователя. Говорить о вероятном наличии угрозы можно при обнаружении проблем с фильтрацией данных и, в частности, HTML-тегов.
  • Различные виды инъекций: PHP, SQL, e-mail, через загрузку файлов.
  • Пароли доступа к административным страницам. Довольно часто уровню их сложности не уделяется должное внимание. Также пароли могут храниться в открытом доступе без какого-либо шифрования (например, md5). Получив доступ к файлам с этими данными, злоумышленники могут реализовывать угрозы.

Еще один момент, на который часто указывают специалисты по информационной безопасности, – разрешение пользователям вывода/демонстрации информации об ошибках. Но это момент спорный. С одной стороны, данная информация может быть использована злоумышленниками для поиска уязвимых мест, которые они потом эксплуатируют. С другой – отключение демонстрации ошибок создает трудности при обслуживании кода: разработчики и команды поддержки могут пропустить важные ошибки.

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

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

AMWScan (PHP Antimalware Scanner) is a free tool to scan php files and analyze your project to find any malicious code inside it.

License

marcocesarato/PHP-Antimalware-Scanner

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

If this project helped you out, please support us with a star ⭐

PHP Antimalware Scanner is a free tool to scan PHP files and analyze your project to find any malicious code inside it.

It provides an interactive text terminal console interface to scan a file, or all files in a given directory (file paths can also be managed using —filter-paths or —ignore-paths ), and find PHP code files that seem to contain malicious code. When a probable malware is detected, will be asked what action to take (like add to the whitelist, delete files, try clean infected code, etc).

The package can also scan the PHP files in a report mode ( —report|-r ), so without interacting and outputting anything to the terminal console. In that case, the results will be stored in a report file in HTML (default) or text format ( —report-format ).

This scanner can work on your own php projects and on a lot of other platforms using the right combination of configurations (ex. using —lite|-l flag can help to find less false positivity).

⚠️ Remember that you will be solely responsible for any damage to your computer system or loss of data that results from such activities. You are solely responsible for adequate protection and backup of the data before executing the scanner.

Have an idea? Found a bug? Please raise to ISSUES or PULL REQUEST. Contributions are welcome and are greatly appreciated! Every little bit helps.

  • php 5.5+
    • php-xml
    • php-zip
    • php-mbstring
    • php-json
    • php-common
    • php-curl
    • php-gd

    You can use one of these methods to install the scanner by downloading it from GitHub or directly from the console.

    Go to the GitHub page and press on the Releases tab or download the raw file from:

    1. Run this command from the console (the scanner will be downloaded to your current directory): wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner
    2. Run the scanner: php scanner ./dir-to-scan -l .
    3. (Optional) Install as bin command (Unix Bash) Run this command:
    wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner -O /usr/bin/awscan.phar && \ printf "#!/bin/bash\nphp /usr/bin/awscan.phar \$@" > /usr/bin/awscan && \ chmod u+x,g+x /usr/bin/awscan.phar && \ chmod u+x,g+x /usr/bin/awscan && \ export PATH=$PATH":/usr/bin"

    Click the GitHub page «Clone or download» or download from:

    1. Install git
    2. Copy the command and link from below in your terminal: git clone https://github.com/marcocesarato/PHP-Antimalware-Scanner
    3. Change directories to the new ~/PHP-Antimalware-Scanner directory: cd ~/PHP-Antimalware-Scanner/
    4. To ensure that your master branch is up-to-date, use the pull command: git pull https://github.com/marcocesarato/PHP-Antimalware-Scanner
    5. Enjoy
    1. Download the source
    2. Build command docker build —tag amwscan-docker .
    3. Run command docker run -it —rm amwscan-docker bash

    The first think you need to decide is the strength, you need to calibrate your scan to find less false positive as possible during scanning without miss for real malware. For this you can choose the aggression level.

    The scanner permit to have some predefined modes:

    Mode Alias 🚀 Description
    None (default) 🔴 Search for all functions, exploits and malware signs without any restrictions
    Only exploits -e 🟠 Search only for exploits definitions
    Use flag: —only-exploits
    Lite mode -l 🟡 Search for exploits with some restrictions and malware signs (on WordPress and others platform could detect less false positivity)
    Use flag: —lite
    Only functions -f 🟡 Search only for functions (on some obfuscated code functions couldn’t be detected)
    Use flag: —only-functions
    Only signatures -s 🟢 Search only for malware signatures (could be a good solution for WordPress and others platform to detect less false positivity)
    Use flag: —only-signatures
    php amwscan ./mywebsite/http/ -l -s --only-exploits php amwscan -s --max-filesize="5MB" php amwscan -s -logs="/user/marco/scanner.log" php amwscan --lite --only-exploits php amwscan --exploits="double_var2" --functions="eval, str_replace" php amwscan --ignore-paths="/my/path/*.log,/my/path/*/cache/*" 

    To check all options check the Documentation

    If you are running the scanner on a WordPress project or other popular platform use —only-signatures or —lite flag to have check with less false positive but this could miss some dangerous exploits like nano .

    On programmatically silent mode and auto skip are automatically enabled.

    use AMWScan\Scanner; $app = new Scanner(); $report = $app->setPathScan("my/path/to/scan") ->enableBackups() ->setPathBackups("/my/path/backups") ->enableLiteMode() ->setAutoClean() ->run();
    object(stdClass) (7) < ["scanned"] => int(0) ["detected"] => int(0) ["removed"] => array(0) <> ["ignored"] => array(0) <> ["edited"] => array(0) <> ["quarantine"] => array(0) <> ["whitelist"] => array(0) <> >

    Screen Report

    Screen Full

    About

    AMWScan (PHP Antimalware Scanner) is a free tool to scan php files and analyze your project to find any malicious code inside it.

    Источник

Оцените статью