Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PT AI без купюр

PT AI без купюр

Avatar for Vladimir Kochetkov

Vladimir Kochetkov

May 30, 2025
Tweet

Other Decks in Programming

Transcript

  1. Поддержка Поддержка любых фичей, не описанных в документации к продукту,

    не осуществляется Риски Использование не описанных в документации фичей — на свой страх и риск Разработка Фичи, не представленные в текущем релизе, могут быть изменены Дисклеймер Актуальность информации: 24.05.2025
  2. Web Плагины IDE https://ptsecurity.com/ru-ru/products/ai/ Коммерческая, масштабируемая полнофункциональная https://posidev.io/#materials Для VSCode

    и IntelliJ, бесплатные, локальные, включены не все модули Редакции PT AI DC SCA Config PM/Taint JSA WebEngine Web Плагины
  3. конечных автоматов аппроксимаций модели кода за полиномиальное время за экспоненциальное

    время Что может SAST-анализатор Несмотря на теоретическую неразрешимость, задача статического анализа кода может быть решена в частных случаях, для: Все существующие анализаторы используют подходы, основанные на аппроксимации модели исследуемого кода.
  4. Модели кода Модель определяет, какие свойства кода она позволяет разрешать,

    и какие ограничения и требования при этом накладывает Все существующие анализаторы используют подходы, основанные на аппроксимации модели исследуемого кода. Синтаксические Множество символов или поток токенов Семантические Поток токенов или AST, размеченные отдельными семантическими свойствами Символьные Модель памяти, описывающая побочные эффекты в результате упрощенной интерпретации кода
  5. Откуда берутся фолзы • Любая модель — это компромисс между

    скоростью анализа, затратами памяти и процентов ложных и истинных результатов. • Множество состояний любого нетривиального приложения сравнимо с бесконечным. • Задача анализатора — найти такие состояния, в которых возможна реализация какой-либо угрозы. • Невозможно перечислить бесконечное множество состояний за конечное время. • Какие-то состояния будут теряться из-за аппроксимации и приводить к FP и FN.
  6. Интерпретация кода Гибридное символьное выполнение анализируемого кода Контроль сложности На

    сложных участках кода интерпретатор переключается в аналог taint-анализа Вывод условий и эксплоитов Построение для каждой уязвимости условий достижимости и способов эксплуатации Концепции JSA
  7. Как работает JSA Консоль Проект AST-провайдеры: • JVM — Java

    • NET — C# UST-провайдеры: • Go Байткод-провайдеры: • ECMA — JS, TS • Python • Ruby • PHP Экспертиза Внутренняя, внешняя JSA.Common Общая кодовая база Сервер
  8. Важные общие параметры --dependencies-dir Путь к каталогу с загруженными зависимостями

    --logs-dir Путь к каталогу с логами (в т.ч. vulnerabilities.log и stats.log) --log-level Уровень логирования --separate-log-files Логирование каждого потока анализа в отдельный файл --disable-packages-restoring Отключение восстановления зависимостей --disable-pm Отключение режима public-функций --disable-mt Отключение многопоточного режима сканирования --disable-memory-limit Отключение контроля расхода памяти
  9. Важные общие параметры --scan-threads-count Количество потоков сканирования --detect-threads-count Количество потоков

    детектирования --use-same-pool Использование общего пула потоков для сканирования и детектирования --free-memory-percent-limit Порог выделения памяти --global-timeout Таймаут времени анализа проекта
  10. Важные общие параметры --complexity Порог сложности для переключения в упрощенный

    режим анализа с учетом условий достижимости --full-complexity Порог сложности для переключения в упрощенный режим анализа без учета условий достижимости --max-expression-complexity Ограничение на количество узлов в деревьях выражений --max-expression-complexity- strategy Стратегия подсчета кол-ва узлов в дереве выражений
  11. Важные общие параметры --script-path Путь к внешним скриптам --script-encoding Кодировка

    внешних скриптов --script-extension Файловые расширения внешних скриптов Внешние скрипты — механизм расширения базы знаний провайдеров через определение обработчиков внешних зависимостей и работы с моделью памяти на языке C#. Примеры реализованных скриптов — в каталогах CoreScripts соответствующих провайдеров: /python/CoreScripts, /jvm/CoreScripts и т.п • Внутренняя фича • Не реализована в Ruby и NET • Не поддерживается!
  12. Ecma Python PHP Ruby Go NET JVM Байт-код --dump-bytecode —

    выгрузка байт-кода, полученного из исходных текстов в каталог - -logs-dir
  13. Ecma Python PHP Ruby Go NET JVM Скоуп анализа --disable-thorough-mode

    — отключение перебора всех файлов проекта, как первоначальных точек входа
  14. Ecma Python PHP Ruby Go NET JVM Интерпретация зависимостей --interpret-dependencies

    — включение интерпретации внешних зависимостей проекта --detect-in-dependencies — включение детектирования уязвимостей во внешних зависимостях
  15. Ecma • ExpressJs • React • path • swig •

    cluster • fs • fs-extra • net • body-parser • child_process • consolidate • htmlencode • libxmljs • log4js • mathjs • mongodb • mongoose • mysql • nodejs-base64 • node-serialize • nunjucks • pg-promise • pug • sequelize • shelljs • ES 5, ES 6+ (частично) • Поддержка TS через транспиляцию в JS • Сканируются файлы: .js, .mjs, .jsx, .ts, .tsx, , .cjs , .mts , .cts • Не сканируются файлы: bower_components, test, tests, test-lib, .d.ts, .d.mts , .d.cts • Аппроксимации: циклы (кроме for-of, for-in), рекурсия, генераторы, исключения, delete • Эвалюация: солвинг — без ограничений Экспертиза:
  16. • <=Python v3.11 • Сканируются файлы: .py • Аппроксимации: циклы,

    рекурсия, исключения • Эвалюация: интерпретация — белый список, солвинг — без ограничений Python • django • flask • tornado.web • sqlalchemy • dataclasses • html • os • pathlib • pty • sqlite3 • subprocess • Bottle • configparser • io • logging • psycopg2 • requests • sanic Экспертиза:
  17. • Go v1.1-1.24.0 • Сканируются файлы: .go • Не сканируются

    *_test.go • Аппроксимации: циклы, рекурсия, исключения, defer, goroutine • Эвалюация: отсутствует Go • BeeGo • Gin • Iris • https://github.com /labstack/echo • github.com/revel/r evel • net/http • github.com/juliens chmidt/httprouter • gorilla/mux • bufio • builtin • github.com/gofrs/ uuid • database/sql • fmt • gorilla/sessions • gorm/io • html/escape • html/template • io/util • logrus • net/url • os/exec • os • regexp • strings • Strconv • syscall • time • mime/multipart • github.com/unroll ed/secure • github.com/xorm- io/xorm • encodings/base64 • spf13/cobra • urfave/cli • urfave/cli/v2 • urfave/cli/v3 • github.com/apaxa -go/eval • github.com/Paessl erAG/gval Экспертиза:
  18. • <= Ruby v3.2.1 • Сканируются файлы: .rb. .ru •

    Аппроксимации: циклы, рекурсия, исключения • Эвалюация: интерпретация и солвинг — без ограничений Ruby • Rails • Sinatra • Rack • IO • File • json • pty • libxml • nokogiri • open3 • xml • require_all Экспертиза:
  19. JVM • JspServletSpring • CoreSpring • MVCSpring • LDAPPlay •

    1Play • 2Struts • 1Struts • 2PortletJax • RSVaadinApache • WicketJavaServer • FacesOracle • ATGHibernateIbatisMyba tisAndroid • SDKApache • SparkLombokApache • CommonsLog4JApache • HttpComponentsApache • CayenneJacksonSqlbrite • Java v8-21 • Поддержка .class и .jsp через декомпиляцию • Сканируются файлы: .java, .class, .jsp • Аппроксимации: циклы, рекурсия, исключения, labeled break/continue • Эвалюация: интерпретация и солвинг — белый список Экспертиза:
  20. Специфичные параметры JVM --remember-type-casts Кэширование приведений типов (увеличивает точность, но

    влияет на память) --enable-vc Включение полного резолва виртуальных методов (увеличивает покрытие, но влияет на время и память) --enable-kotlin --enable-scala Включение поддержки соответствующих языков --jvm-args Параметры JDK, с которыми будет запускаться пречекер --user-package-prefix Префиксы пакетов, которые необходимо дополнительно распаковать из jar для анализа
  21. • C# 11, .NET 8 (.NET classic — только под

    Windows) • Сканируются файлы: .cs, .razor, .cshtml, .aspx, .asax, .ascx, .master, .ashx, .asmx, .svc • Аппроксимации: циклы, рекурсия, исключения, goto, финализация • Эвалюация: интерпретация и солвинг — белый список Net
  22. Net • AngleSharp • AntiXssLibrary • Blazor • BouncyCastle.Crypto •

    Castle.Core • Dapper • DevExpress.Web.v12.2 • EntityFramework • Fake • Fake.FM • Fake.Http • Fake.Mono.Android • Fake.Mvc • fastJSON • FM • Grpc.Core • HtmlAgilityPack • log4net • Microsoft.AspNetCore • Microsoft.EntityFrameworkCore • Microsoft.Extensions.Primitives • Microsoft.Owin • Mono.Android • Mono.Data.Sqlite • MySql.Data • Newtonsoft.Json • NHibernate • NLog • Npgsql • Oracle.DataAccess • Oracle.ManagedDataAccess • Orchard.Framework • Progress.o4glrt • protobuf-net • RabbitMQ.Client • RestSharp • Serilog • SignalR • SignalR.Client • StackExchange.Redis • System.Configuration • System.Data.Linq • System.Data.OracleClient • System.Data.SQLite • System.Data.SqlServerCe • System.DirectoryServices • System.DirectoryServices.Protocols • System.Linq.Dynamic • System.Net.Http.Formatting • System.Runtime.Serialization • System.Text.Encodings.Web • System.Web • System.Web.Extensions • System.Web.Http • System.Web.Http.WebHost • System.Web.Mvc • System.Web.Services • System.Web.WebPages • Telerik.Web.UI • Xamarin.iOS • XmlPrime • Xtensive.Orm Экспертиза:
  23. Специфичные параметры NET --solution-file Путь к .sln-файлу --website-directory Путь к

    каталогу веб-сайта --nuget-config-file Путь к пользовательскому Nuget.config.
  24. • PHP v7.0-8.2 • Сканируются файлы: .php, .html, любой файл,

    транспилируемый Zend Engine • Аппроксимации: циклы, рекурсия, исключения • Эвалюация: интерпретация и солвинг — белый список PHP • Symfony • Laravel • Bitrix v24.0.796 • Apache • DOM • Multibyte strings • Php data objects • SimpleXML • XMLReader • Mysql • Mysqli • Sqlite3 • PostgreSQL • Firebird/InterBase • Cubrid • Microsoft SQL Server • OCI8 • Db2 • ODBC • Sybase • Dbx • Ingres • Informix • FTP • Exchange image information (EXIF) • Ssh2 • GD Экспертиза: