Benchmarki / Drupal AI 1.5.1
Drupal AI 1.5.1: skill kontra sam model
Moduł AI dla Drupala w wersji 1.5.1 ma osiem advisory opublikowanych przez drupal.org 28 października 2026, wszystkie naprawione w 1.5.2. Sprawdziliśmy, kto wskaże podatne linie: sam model poproszony o przegląd bezpieczeństwa czy ten sam model ze skillem.
Ze skillem /security-audit modele wskazały 3–4 z 8 advisory, same 0–1. Żaden przebieg nie zgłosił funkcji, którą naprawia 1.5.2. Skill kosztował średnio 11 razy więcej i trwał 9 razy dłużej. Dla porównania skill security-audit Cloudflare na tym samym kodzie: 2/8 (Claude Opus 5.5), 1/8 (Fable 5.2 + Opus 5.5).
- 4/8najlepszy wynik ze skillem /security-audit
- 1/8najlepszy wynik samego modelu
- 1/8advisory, których nie wskazał nikt
- 0naprawionych funkcji zgłoszonych w 1.5.2, 3 kontrole
Wynik, czas i koszt na wersji 1.5.1
Jeden przebieg na zawodnika. Każda kolumna słupków ma własną skalę.
| Zawodnik | Trafione advisory z 8, więcej = lepiej | Czas min | Koszt USD po cenach API | Zgłoszone w raporcie końcowym | Spoza klucza tylko liczba |
|---|---|---|---|---|---|
| Claude Opus 5.5sam model, prompt „sprawdź bezpieczeństwo” | 5 | 4 | |||
| Claude Fable 5.2sam model, prompt „sprawdź bezpieczeństwo” | 11 | 10 | |||
| Claude Opus 5.5skill /security-audit | 35 | 28 | |||
| Claude Fable 5.2skill /security-audit | 66 | 55 | |||
| Opus 5.5 + Fable 5.2skill: audytorzy Opus, weryfikator Fable | 41 | 34 | |||
| Claude Opus 5.5skill Cloudflare, wszyscy agenci Opus | 16 | 14 | |||
| Fable 5.2 + Opus 5.5skill Cloudflare: sesja Fable, podagenci Opus | 23 | 22 |
Które advisory znalazł który zawodnik
SA-270 dotyczy cache wyników, a ten należy do modułu search_api, którego nie ma w paczce AI. Klucz wskazuje więc linię w ai_search, gdzie wynik jest filtrowany po uprawnieniach użytkownika i skąd trafia do cache. Jedyne trafienie, u skilla Cloudflare na Opusie, wskazało tę linię, ale opis znaleziska dotyczy innego mechanizmu niż cache. Liczymy je, bo reguła oceny to plik i linia, a nie opis.
A najgroźniejszy błąd? Jedyne advisory z poziomem „krytyczne” według drupal.org to SA-269, obejście filtra linków Markdown bez logowania. Znalazł je każdy wariant skilla /security-audit, żaden model bez skilla i żaden przebieg skilla Cloudflare. Nasz skill nie wyróżnił go jednak w raporcie: ocenił je na MEDIUM, a to najwyższa ocena, jaką dał w tym benchmarku, bo wszystkie jego znaleziska to MEDIUM albo LOW. Kolejności „od najgroźniejszych” też nie widać: skill zawsze trafiał SA-271, najsłabsze advisory, a pomijał SA-266 i SA-272, które drupal.org ocenia wyżej.
| Advisory | Claude Opus 5.5sam model | Claude Fable 5.2sam model | Claude Opus 5.5skill | Claude Fable 5.2skill | Opus 5.5 + Fable 5.2skill, mieszany | Claude Opus 5.5skill Cloudflare | Fable 5.2 + Opus 5.5skill Cloudflare |
|---|---|---|---|---|---|---|---|
| SA-CONTRIB-2026-266 CVE-2026-118545tooltip wstawia atrybut data jako HTML (DOM XSS)drupal.org: umiarkowanie krytyczne | nie | znalezione | nie | nie | nie | nie | nie |
| SA-CONTRIB-2026-267 CVE-2026-118546szerokość i wysokość bloku chatbota trafiają do strony bez escapowania (XSS)drupal.org: umiarkowanie krytyczne | nie | nie | znalezione | znalezione | znalezione | znalezione | nie |
| SA-CONTRIB-2026-268 CVE-2026-118548filtr hostów przepuszcza adresy /\host i \\hostdrupal.org: umiarkowanie krytyczne | nie | nie | nie | znalezione | nie | nie | nie |
| SA-CONTRIB-2026-269 CVE-2026-118549filtr linków Markdown oparty na regexie da się obejść (XSS bez uprawnień)drupal.org: krytyczne | nie | nie | znalezione | znalezione | znalezione | nie | nie |
| SA-CONTRIB-2026-270 CVE-2026-118550wyniki AI Search trafiają do wspólnego cache mimo sprawdzania dostępu (przyczyna poza paczką)drupal.org: umiarkowanie krytyczne | nie | nie | nie | nie | nie | znalezione | nie |
| SA-CONTRIB-2026-271 CVE-2026-118551speech-to-text zapisuje każde nagranie do jednego wspólnego plikudrupal.org: mniej krytyczne | nie | nie | znalezione | znalezione | znalezione | nie | nie |
| SA-CONTRIB-2026-272 CVE-2026-118552filtr hostów zostawia atrybuty hx-* i data-hx-* (XSS przez HTMX)drupal.org: umiarkowanie krytyczne | nie | nie | nie | nie | nie | nie | nie |
| SA-CONTRIB-2026-273 CVE-2026-118553automatory zapisują tekst w formacie, którego zapisujący nie może używaćdrupal.org: umiarkowanie krytyczne | nie | nie | nie | nie | znalezione | nie | znalezione |
Kontrola na wersji naprawionej
Ten sam audyt na 1.5.2. Klucz kontroli zawiera całe naprawione funkcje jako pułapki: zgłoszenie którejkolwiek z nich byłoby fałszywym alarmem. Kontroli skilla na samym Opusie i samym Fable ani skilla Cloudflare nie robiliśmy, żeby oszczędzić limit.
- Claude Opus 5.5, sam model, prompt „sprawdź bezpieczeństwo”
- 0 z 8 · 5,0 min · 3,85 USD
- Claude Fable 5.2, sam model, prompt „sprawdź bezpieczeństwo”
- 0 z 8 · 8,7 min · 10,62 USD
- Opus 5.5 + Fable 5.2, skill: audytorzy Opus, weryfikator Fable
- 0 z 8 · 48,1 min · 53,19 USD
Skill security-audit od Cloudflare
Cloudflare udostępnił skill security-audit, od którego zaczął się ich wewnętrzny system do szukania podatności. Audyt ma sześć faz: rekonesans z rejestrem pokrycia, fale hunterów i krytyków pokrycia, osobny weryfikator dla każdego kandydata, zapis do findings.json według schematu, druga niezależna weryfikacja i raport. Puściliśmy go na tej samej paczce 1.5.1, z tą samą izolacją i tą samą oceną.
- Claude Opus 5.5, skill Cloudflare, wszyscy agenci Opus
- 2/8 (SA-267, 270) · 67,6 min · 86,51 USD
- Fable 5.2 + Opus 5.5, skill Cloudflare: sesja Fable, podagenci Opus
- 1/8 (SA-273) · 74,1 min · 106,28 USD
- Polecenie.
/security-auditz prośbą o pełny audyt, profilstandard, bez limitu agentów, wyniki zapisywane poza kodem modułu. Skill w commicie c1c8a8c. - Modele. Skill nie ma osobnych ustawień modelu dla ról, więc model podagentów ustawiliśmy zmienną
CLAUDE_CODE_SUBAGENT_MODEL. Wariant mieszany to koordynator na Fable 5.2 i wszyscy podagenci na Opus 5.5, weryfikatorzy też. To inny podział niż w naszym wariancie mieszanym, gdzie weryfikował Fable. W przebiegu na Opusie koordynator sam zlecił 2 z 64 podagentów rekonesansu modelowi Sonnet. - Co liczymy. Rekordy
confirmedineeds_validation: Claude Opus 5.5: 7 i 9; Fable 5.2 + Opus 5.5: 12 i 11. Bez piaskownicy systemowej skill nie uruchamia kodu, więc niesprawdzone tropy zostają jakoneeds_validation. Każdy rekord ma jedną lokalizację: pierwsze ujście (sink) ze śladu, a bez niego pierwszy dowód.
Co, jak i gdzie badaliśmy
Co
- Kod. Oficjalna paczka
ai-1.5.1.tar.gzz drupal.org, sprawdzona sumą sha256, iai-1.5.2.tar.gzjako kontrola. - Zakres. Wszyscy dostali to samo przycięte drzewo, około 95 tys. linii:
src,assets,config,templates,modules/ai_automators,modules/ai_chatbot,modules/ai_search,modules/ai_ckeditor,modules/ai_api_explorer,modules/ai_assistant_api,modules/ai_observability. Pięć submodułów zawiera poprawki, dwa są tłem. Bez katalogów testów i bez zbudowanegodeepchat.bundle.js. - Klucz. Dla każdego advisory zakresy linii całej podatnej funkcji, ustalone z commitów poprawek między 1.5.1 a 1.5.2. Na 1.5.2 te same funkcje po poprawce są pułapkami.
Jak
- Sam model. Prompt: przejrzyj moduł pod kątem bezpieczeństwa, nie zmieniaj plików, nie uruchamiaj kodu, wypisz znaleziska z plikiem i linią. Bez nazw plików i bez wzmianki o advisory. Narzędzia tylko Read, Grep i Glob.
- Skill. Samo polecenie
/security-audit, bez zawężania zakresu. Wariant mieszany: koordynator i weryfikator na Fable 5.2, audytorzy na Opus 5.5 (--auditor-model opus). - Izolacja. Bez ustawień użytkownika, CLAUDE.md, pamięci, serwerów MCP i wyszukiwania w sieci. Skill jako wtyczka sesji, skopiowana bez danych benchmarku. Po każdym przebiegu skrypt przejrzał transkrypty, z subagentami: żaden nie użył MCP ani sieci i nie otworzył klucza.
- Ocena. Znalezisko liczy się, gdy wskazuje plik i linię w zakresie z klucza, z tolerancją ±2 linii. U skilla liczy się raport po weryfikacji.
Gdzie
- Środowisko. Claude Code 2.1.322 na lokalnej maszynie, abonament Claude Max, effort
highdla wszystkich. Skill w commicie 2d57189. - Kiedy. 11 listopada 2026, przebiegi jeden po drugim; skill Cloudflare w nocy z 11 na 12 listopada.
- Koszt. Pole
total_cost_usdz Claude Code, czyli tokeny po cenach API. Abonament nie nalicza tych kwot. - Sprawdź u siebie. Skrypt
fetch.mjspobiera paczkę, sprawdza sumę i przycina drzewo,score.mjsocenia raport. Instrukcja i klucze.
Czego to nie mówi
- Jeden przebieg na zawodnika. Różnica jednego advisory może być szumem: wcześniejszy, nieizolowany przebieg Opusa bez skilla trafił 3 z 8, ten 0 z 8.
- Znaleziska spoza klucza podajemy tylko liczbą. Część może być prawdziwymi błędami w kodzie open source, część fałszywymi alarmami; to, co nadal jest w najnowszej wersji, zgłaszamy prywatnie opiekunom modułu.
- Znalezienie publicznego, już naprawionego błędu to dolna granica tego, co narzędzie robi na nieznanym kodzie, a nie dowód, że znalazłoby go pierwsze. Nie sprawdzaliśmy, czy kod modułu był w danych treningowych modeli.
- Skill Cloudflare oceniamy naszą regułą pliku i linii. Jego rekord opisuje cały ślad od wejścia do ujścia, a liczymy jedno miejsce. Co najmniej jeden rekord opisywał mechanizm z advisory, ale wskazywał inny plik niż poprawka, więc się nie liczy.
- Skill dopisał swój katalog
.security-auditdo.gitignore. Kodu modułu nie zmienił żaden przebieg. - Pozostałe benchmarki modeli i agentów są na stronie Benchmarki.