Галоўная / Артыкулы

Ператвараем HAR-трафік Playwright у вынікі аўдыту бяспекі праз MCP-сканер

Пасіўны сканер на TypeScript ператварае HAR-файлы Playwright у знаходкі па загалоўках, куках, CORS і сакрэтах, даступныя AI праз MCP і як фільтр у CI.

Выдавец: REACTAPP.TOP7 хв чытання1645 слоў

Крыніцы: I Built an MCP Security Scanner That Turns QA Traffic Into Security Tests

Інжынеры QA ўсё дзень займаюцца API, запытамі HTTP, процэсамі заходжання, автаматызацыяй прыгледача, пайплайнамі CI/CD і поведэнкай прыкладненняў. Гэта значна перакрываецца з абмежэннямі безпекі прыкладненняў, што паднімае пытанне: чы можа трафік аўтаматызаваных тэстаў вялікімі мерамі служыць вхідным дадзенням для тэстаў безпекі?

Аднам з адказаў ёсць сервер MCP (Model Context Protocol), які скануе запісаны трафік тэстаў на наявнасць проблем з безпекай. Пайплайн просты: запускаецца автаматызацыя QA, фіксуецца HTTP-трафік, скануецца гэты трафік на проблемы, а штучны інтэлект дапамагае у тлумачэнні рэзультатаў. Важлівым моментам ёсць тое, што сканер ніколі не адправляе дадатковых запытоў да прыкладнення.

Два светы, якія дзеляюць аднаго крыніцы дадзення

Безпека і контроль ясносці зазвычай спрацоўваюць як аднае самастоятэльнае заведамства. Процедура контроля ясносці включае стварэнне тэстаў, ўжыцце іх, перакананне ў правямальнасці функцыяналу, а таксама стварэнне атласаў. Работа з безпекай выконвалася ў іншых месцах: ўжыцце інструментаў безпекі, сканаванне прыемлівання, дакладнае аналізаванне слабых месцаў, а таксама атласаванне аднакоў.

Аднак аўтаматызаваныя тэсты ужо ведуць пераказы з прыемліванням. Яны вызываюць API, адправляюць заголовкі аутанізацыі і кукі, прымоюць адпаведзі і падключаюцца да канцэнтраў. Усё гэта ўскладненне HTTP, і гэта можа служыць джэрэлам сігналаў безпекі.

Файлы HAR як мост

Інструменты, такія як Playwright, можу зберагаць сетавую дзеяльнасць прыемлівання як файл HAR (HTTP Archive). Кожная HTTP-транзакцыя ў яму мае дакладныя дадзеныя, укладзеныя ў:

  • URL-адрэсы запытанняў і методы HTTP
  • Заголовкі запытанняў і адпаведзі
  • Кукі
  • Тэлы запытанняў і адпаведзі
  • Коды статусу і іншыя метададзеныя

Гэта ствараець лянцюг, які начынаецца з автаматызацыі контролю якасці і заканчваецца сканаваннем трафіку, які ён стварыў:

QA Automation
      │
      ▼
HTTP Traffic
      │
      ▼
    HAR File
      │
      ▼
Security Scanner
      │
      ▼
Security Findings

Не ствараецца новы раунд трафіку. Сканер аналізуе тое, што ужо было зафіксавана пад час тэстаў, што робіць гэты падход пасыўным.

Архітэктура

Сканер — гэта інструмент на TypeScript, які чытае файлы HAR і шукае сігналы, значныя для безпекі. Яго структура ўмышлена простая:

Playwright
                        │
                        ▼
                 Network Traffic
                        │
                        ▼
                     HAR File
                        │
                        ▼
                   HAR Parser
                        │
                        ▼
              Normalized Transactions
                        │
                        ▼
                 Security Rules
                   │         │
                   ▼         ▼
                MCP Tool   CLI Gate
                   │         │
                   ▼         ▼
                 AI        CI/CD

Адзін з ключоўых выбораў у дызайне было раздзеленне парсера HAR, нормалізаванага модэлю транзакцый, правіл безпекі і двігу сканування на адзінаковыя часткі. Толькі парсер працуе з фарматам HAR. Правіла ніколі не бачаюць первіснай структуры HAR і працуюць з нормалізаванымі транзакцыямі, таму пазнейша дадзенне новага правіла ёсць простым.

Перакананні ў першай версіі

Відсутны HSTS. Сканер пазначае адпаведныя адпаведзіць, у якіх не ёсць галавкі:

Strict-Transport-Security

HSTS змушвае прыгруперы выкарыстоўваць HTTPS, і гэта ўзнаковая частка безпечнай настройкі.

Звычны HTTP. Запыты, якія надаюцца праз

http://

заместо

https://

Указваець на неабяспечаныя канцэнтры, якія з’являюцца пад звычнымыя тэставаннямі.

Атрыбуты кукі. Кукі пераглядаюцца на наявнасць захоўніх флагоў:

Secure
HttpOnly
SameSite

Кукі з аутантыкацыяй або сэсіі, якія не маюць неабяжных атрыбутаў, заслуговаюць на аналіз.

Значэнні, сэрбабныя секрэту, у адпаведзях. Уявіце сабе адпаведзь такую:

{
  "apiKey": "..."
}

Значэнне, якое выглядае як аутанты і вяртаецца кліенту, ўтварае потэнцыяльную проблему. Гэта особліва цікава, таму што тэсты якасці можу случайна на яе натрапіць, без неабяжных тэстаў безпекі, напісаных спецыяльна для гэтага.

Чуліватыя параметры URL. Іноды секрэты потрапляюць у URL:

/api/user?token=...

Сканер пераглядае URL-адрэсы на наявнасць імен параметраў і шаблонаў, які можуць выглядаць чутлівымі. URL-адрэсы залягаюць у логах, історыі прыёмніка, проксі, сістэмах аналітыкі і іншых месцах, таму гэта мае значэнне.

Нумеры карточак для платэжаў. Гэта была адна з болей цікавых правіл. Сканер выявляе значэнні, якія выглядаюць як нумеры карточак, і пераверачае іх за дапамою алгорытму Луна. Абычны 16-значны номер мало што значыць, але значэнне, якое падобнае на нумер карточкі і праходзіць праверкі за алгорытмам Луна, ўсё больш схожа на пазнаку таго, што даныя платэжаў могу быць адкрытыя. Гэтае правіла спалюе выявленне шаблонаў з рэальной пераверкай.

Апасныя настройкі CORS. Сканер шукае небяспечныя комбінацыі. Напрыклад, вайлдкард-паходжэнне:

Access-Control-Allow-Origin: *

Разам з дазволенымі аутантымацыямі:

Access-Control-Allow-Credentials: true

Гэта прычына, якая выклікае неабяжлівую расследаванне. Ён таксама выявляе серверы, якія, здаецца, вяртаюць значэння Origin з запіту без належнай перапрацоўкі.

Рэалізацыя сканера для вікорыстання AI

Model Context Protocol — гэта стандартны спосаб для прыемніков AI выкарыстоўваць зовнішнія інструменты і даны. У працэзе праект не прымыкаеся толькі да самастоятнага сканера, а адкрывае яго як інструмент, які можа быць вызваны AI. Сервер MCP публікуе адны такі інструмент:

secscan_scan_har

Кліент на базе AI апрэдзае файл HAR, запускае сканер і атрымляе структураваныя рэзультаты. Практычны прыем падобны такі:

HAR File
                 │
                 ▼
            MCP Server
                 │
                 ▼
          Security Scanner
                 │
                 ▼
          Security Findings
                 │
                 ▼
            AI Client
                 │
                 ▼
        Explain / Investigate

Чытанне адказу па лініях больш не ўсё, што можна зробіць, адколі чалавек можа проста задаць запытанні да рэзультатаў. Тыповыя запытанні могу быць: якія нараджэнні ўзятыя за самыя серьёзныя, што зв’язана з аўтэнтыфікацыяй і чаму певная настройка CORS ўскладнюе працу. Сканер прадае доказы, а ШЫ дапамагае іх адказаць.

Утрыманне ШЫ за межамі рашэння пра успех/неспэх

ШЫ добра справляецца з адказамі на запытанні, падсумаваннем рэзультатаў, дапамагае у аналізе доказаў, прыменшэнні проблем і адказамі на запытанні пра сканаванне. Аднак рэальная праца не должна залежаць ад таго, чы рэчоўнік думае, што ўсё ўразламнае. Таму ў праекце таксама ёсць дэтэрміністычныя захоўнікі безпекі CLI:

npm run gate -- test-results/network.har

Калі з’являюцца крытычныя нараджэнні, сканер можа не выконаць працэс стварэння. Гэта дае два адзінаковыя варыянты. Першы — аналіз за дапамою ШЫ:

AI-Assisted Analysis
HAR
 ↓
MCP
 ↓
AI
 ↓
Explain / Investigate / Triage

Другі — гэта дэтэрміністычныя бярэзы безпекі:

Deterministic Security Gate
HAR
 ↓
Scanner
 ↓
Critical Finding?
 ↓
FAIL BUILD

Разлік мае значэнне. Іспользуйце AI там, дзе разумаванне і взаімадзея прыносяць цэннасць, а таксама дэтэрміністычныя правілы там, дзе рашэнні пра пасунак/непасунак павінны быць прыгледнымі.

Інтэграцыя ў паіплайн Playwright

Разглядзіце існуючую задачу Playwright CI з ўжыткам стандартнага крока тэставання:

- name: Run Playwright tests
  run: npx playwright test

Дадзіце крок па абэранцыі адразу пасля яго:

- name: Security Gate
  run: npm run gate -- test-results/network.har

Тэтыя ж тэсты якасці якосці зараз даюць два відэныя: функцыональныя і безпековыя. Загальны працэвыклад выглядае так:

Code
 │
 ▼
Build
 │
 ▼
Playwright Tests
 │
 ▼
Capture HAR
 │
 ▼
Passive Security Scan
 │
 ▼
Security Gate
 │
 ▼
Deploy

Гэта самая прыемная сторона гэтай ідэі. Адзінэчны працэс абэракцыі безпекі не завжды неабходны для кожнага базовага сігналу, адколькі дзеянні контролю можа адбывацца сама сабой у існуючай лініі QA.

Складныя пытанні дызайну

Напісанне сервера MCP не было складным чыннікам. Складным было выбіранне спосабу структуравання дадзэйна между парсерам HAR і правіламі безпекі. HAR — гэта дэталізаваны фармат, і калі кожна правіла павінна розумець яго безпосерэдня, тады тыямо стае вельмі складным. Проміжная форма адраджае гэту проблему:

HAR
 │
 ▼
Parser
 │
 ▼
Transaction
 │
 ▼
Security Rules

Правіла не зважаюць на тое, дзе взялася транзакцыя. Яны прымоць тое, што воны ужо розумеюць, што спрыяе лёгкаму расшырэнню сканера.

Што можа быць далей

Гэта першая версія, у якой ёсць многа можлівасцей для розвітку. Серэд пераканальных пераглядоў ёсць:

  • Аналіз політыкы безпекі кантэнту
  • X-Content-Type-Options і Referrer-Policy
  • Проблемы з Cache-Control
  • Адкрыцця JWT
  • Слабасці аўтэнтыфікацыі і сэсій
  • Адкрыцця чутлівых дадзеных
  • Шэрэзі CORS-пераканальных пераглядоў
  • Сігналы, зв’язаныя з автарызацыяй

Рэзультаты таксама можуць міты болей дакладныя доказы, выкладзеныя так:

Finding
Severity
Rule
Evidence
Request
Response
Impact
Remediation

Слою MCP можа згодна адзін раз адпавядаць на такі запытанні, як "Каліяянаяянаяянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаянаяная

Большая частка работы інжынераў QA ў кожны дзень таксама ёсць асновай для безпекі прыкладненняў: HTTP, API, аутанацыя і аутарызацыя, автаматызацыя тэстаў, CI/CD, аналіз паведання прыкладнення і прычын абыяканняў. Стварэнне інструменту даўа глыбэйшае розуменне, чым можна досягнуць толькі за дапамой курсаў чы атэстатаў. Такі праект па чэрзе разбірае парсінг HAR, безпеку HTTP, кукі, CORS, выкліканне і выяўленне секрэтных і чулых дадзенняў, правілы безпекі, MCP, кліенты CLI і CI/CD.

Рэзультаты выходзяць за межы проста ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння ўтварэння

QA Automation
      +
Application Security
      +
AI
      +
DevSecOps

Галоўны вывад заключаецца ў тым, што тэставанне безпекі не павінна пачынацца з яшчэ аднаго скану. Яго можна розпачаць з тых тэстаў на трафік, якія ужо атрыманы. Автаматызацыя тэставання якасці, безпека прыкладненняў, ШЫ і DevSecOps разам можу прынесці больш рэзультатаў і пакрыць больш шырокі спектр задач, чым кожны з іх окаласці.

Спадні матэрыялы

  • Практычныя прытамулы: “MCP: Протакол, які ператварае ШЫ з чат-бота на агента ШЫ” — Паспэўнае адгляданне практычных прытамулоў: “MCP: Протакол, які ператварае ШЫ з чат-бота на агента ШЫ”: контракты, перакананні і шаблоны коду для команд, якія ствараюць сістэмы MCP.
  • Забезпечэнне безпекі MCP-інструментоў з можлівасцю запісу: сэм шароў за межамі токена — Чаму токен MCP не дае права на запіс дадзеных, і сэм шароў кантролю, раздзелэнне аутантыкацыйных дадзеных, аправарэнне точных запытоў і правілы павторных спроб, якія гэта робяць.
  • Практычныя прыемы: 5 з’язкаў MCP, якія ператвараюць код Claude у начальніка штабу — Паследовыя інструкцыі па вікорыстоўванні Практычных прыемаў: 5 з’язкаў MCP, якія ператвараюць код Claude у начальніка штабу: контракты, перакрыцчы і слоты для коду для команд, якія вікорыстоўваюць гэты патэрн.