Başkasının veri kümesi,başkasının puanlayıcısı.
62 gerçek depoda 1762 etiketli zafiyet; hiçbiri burada etiketlenmedi, hiçbiri burada puanlanmadı. Bu sayfa sonucun tamamı — gurur verici olmayan kısımlar dahil: hâlâ sıfıra yakın duran dört aile, etiketli hiçbir şeyin bulunamadığı 0 depo ve bu sayının üç tur önce kör olmaktan çıktığı açıklaması.
secaudit · Tier 0 only (--no-deps --no-scanners, no LLM) — ağ yok, API anahtarı yok, ücretli plan yok.
- 61.2F3 (recall × 9)
- 61.6F2
- 0.656precision
- 0.607recall
- 1070doğru pozitif
- 561yanlış pozitif
- 692kaçırılan
- 248doğru negatif
Aynı puanlayıcı, aynı koşunun daha katı bir okumasını da veriyor: F3 57.0, recall 0.5623; aynı 1070 doğru pozitif üzerinde 141 etiketi daha kaçırılmış sayarak. Bu koşunun dürüst aralığı 57.0 – 61.2. micro alıntılanıyor çünkü kıyaslamanın kendi referans değerleri bu agregada yayımlanmış; başka her amaç için kullanılacak rakam 57.0.
Açık beyansayıyı aktarmadan önce okuyun
Bu sayı kör değil ve üç turdur kör değil.
İlk iki koşu kördü: çekirdek bu veri kümesini hiç görmemişti ve okumadığı kod üzerinde aldığı skor 12.5 idi. Sonraki her koşu, kıyaslamanın kendi yanlış negatifleri okunup eksik kurallar yazıldıktan sonra ölçüldü.
Eklenen kuralların tamamı, herhangi bir SAST aracının zaten içerdiği türdendir — token için zayıf PRNG, çerez bayrakları, CSRF muafiyetleri, commit'lenmiş yedek imza anahtarı, açık yönlendirme, loglara düşen kimlik bilgileri — yani hiçbiri belirli bir fixture'a göre şekillendirilmemiştir. Ancak seçim üç kez veri kümesine bakılarak yapılmıştır ve avantaj birikmektedir. 12.5 ile 61.2 arasındaki fark bu avantajın büyüklüğüdür. Görülmemiş bir kod tabanı için temkinli rakam 12.5'tir; bu ölçümün dürüst devamı, bu deponun hiç görmediği bir kıyaslamadır.
Koşu geçmişitek veri kümesi, 30 koşu
Her turun skoru ve o skorun maliyeti.
Aynı veri kümesi, aynı puanlayıcı, aynı klon. Her tur önce bir önceki çekirdeği güncel checkout üzerinde yeniden puanlıyor ve commit'lenmiş rakamlarını hane hane yeniden üretiyor; hareketi veri kümesine değil çekirdeğe bağlayan şey bu.
| Tur | F3 | F2 | precision | recall | TP / FP / FN | |
|---|---|---|---|---|---|---|
| 2026-08-12 | ilk koşu — kör; çekirdeğin okumadığı bir veri kümesi üzerinde | 12.5 | 13.5 | 0.4072 | 0.1158 | 204 / 297 / 1558 |
| 2026-08-13 | ilk koşunun teşhisine yönelik; veri kümesinin geri kalanına hâlâ kör | 13.3 | 14.4 | 0.3925 | 0.1243 | 219 / 339 / 1543 |
| 2026-08-13 | yapılandırma ve kripto hijyeni turu, veri kümesine bakılarak | 24.6 | 26.1 | 0.5037 | 0.2327 | 410 / 404 / 1352 |
| 2026-08-13 | ilk yapısal tur — yetkilendirme ve ReDoS | 26.0 | 27.5 | 0.5106 | 0.2463 | 434 / 416 / 1328 |
| 2026-08-13 | yapısal analizler: hız sınırı, yüklemeler, toplu atama | 30.9 | 32.5 | 0.5405 | 0.2951 | 520 / 442 / 1242 |
| 2026-08-13 | hız sınırı kuralı daraltıldı (F3 31.5) | 31.5 | 33.0 | 0.5419 | 0.3008 | 530 / 448 / 1232 |
| 2026-08-16 | dil aileleri, vendor'lanmış dosyalar, şablon XSS, Python SQL | 35.8 | 37.7 | 0.6601 | 0.3405 | 600 / 309 / 1162 |
| 2026-08-16 | vendor'lanmış dosya filtresi | 35.9 | 38.0 | 0.7075 | 0.3405 | 600 / 248 / 1162 |
| 2026-08-16 | JavaScript turu: ReDoS ön yüzü, prototype pollution yeniden yazımı, yayımlanan build çıktısı | 35.9 | 38.0 | 0.7075 | 0.3405 | 600 / 248 / 1162 |
| 2026-08-16 | prototype pollution: yalnızca çağıranın seçtiği bir anahtar | 35.9 | 38.0 | 0.7084 | 0.3405 | 600 / 247 / 1162 |
| 2026-08-16 | pathlib: hiçbir şeyin modellemediği sink kütüphanesi | 39.3 | 41.3 | 0.7086 | 0.3740 | 659 / 271 / 1103 |
| 2026-08-16 | req.url: hiçbir şeyin modellemediği Node kaynağı | 39.3 | 41.3 | 0.7086 | 0.3740 | 659 / 271 / 1103 |
| 2026-08-17 | 2026-08-16 turu, yeniden ölçüldü: 271 değil 273 yanlış pozitif | 39.2 | 41.3 | 0.7071 | 0.3740 | 659 / 273 / 1103 |
| 2026-08-17 | karesel ReDoS ve JavaScript deseninin çalıştığı yerde raporlanması | 39.2 | 41.3 | 0.7041 | 0.3740 | 659 / 277 / 1103 |
| 2026-08-17 | prototype pollution: kimsenin sınırlayamadığı fonksiyonlar, callback'in anahtarı ve ağaç gezinmesi | 39.2 | 41.3 | 0.7033 | 0.3740 | 659 / 278 / 1103 |
| 2026-08-17 | import ile çözümlenen shell ve vm alıcıları | 39.2 | 41.3 | 0.7033 | 0.3740 | 659 / 278 / 1103 |
| 2026-08-17 | Yapılandırma + kimlik bilgileri | 41.6 | 43.5 | 0.6718 | 0.3995 | 704 / 344 / 1058 |
| 2026-08-18 | Veri kümesinin hiç karşılığı olmayan dokuz kural ailesi | 59.5 | 60.3 | 0.6760 | 0.5874 | 1035 / 496 / 727 |
| 2026-08-18 | Django view'ları artık varsayılan olarak herkese açık sayılmıyor | 59.7 | 60.4 | 0.6695 | 0.5897 | 1039 / 513 / 723 |
| 2026-08-19 | HttpOnly kuralının gizlediği Secure çerez bayrağı | 60.6 | 61.1 | 0.6559 | 0.6005 | 1058 / 555 / 704 |
| 2026-08-19 | Birleştirmeyle kurulan HTML — JavaScript XSS etiketlerinin yaşadığı yer | 60.5 | 60.9 | 0.6471 | 0.6005 | 1058 / 577 / 704 |
| 2026-08-19 | PHP bir ölçüm aracı kazandı ve araç üç bozuk kural buldu | 60.5 | 60.9 | 0.6471 | 0.6005 | 1058 / 577 / 704 |
| 2026-08-19 | PHP superglobal kuralları — kaynak, sink'in içinde yazılı | 60.5 | 60.9 | 0.6471 | 0.6005 | 1058 / 577 / 704 |
| 2026-08-19 | Dosyayı değil satırı okuyan bir susturma | 60.5 | 60.9 | 0.6471 | 0.6005 | 1058 / 577 / 704 |
| 2026-08-19 | Vendor'lanmış bir kütüphane tek dosya olarak gelmez | 60.5 | 61.1 | 0.6577 | 0.5999 | 1057 / 550 / 705 |
| 2026-08-19 | PHP taint — tek atama sıçraması, tek dosya | 60.5 | 61.1 | 0.6577 | 0.5999 | 1057 / 550 / 705 |
| 2026-08-19 | JavaScript'e sorulamayan üç yapısal soru | 60.5 | 61.1 | 0.6577 | 0.5999 | 1057 / 550 / 705 |
| 2026-08-20 | Gürültü tabanında gerçek bir uygulama ve bulduğu iki kusur | 60.5 | 61.1 | 0.6577 | 0.5999 | 1057 / 550 / 705 |
| 2026-08-20 | Framework'ün kendi login'i: okunacak handler'ı olmayan bir rota | 61.1 | 61.6 | 0.6562 | 0.6067 | 1069 / 560 / 693 |
| 2026-08-20 | SSRF sıradan HTTP yüzeyine ulaşıyor; debug anahtarının dört yazımı | 61.2 | 61.6 | 0.6560 | 0.6073 | 1070 / 561 / 692 |
İlkinden sonraki her turda precision, recall ile birlikte yükseliyor. Depo bunu “bunlar kural, eğri uydurma değil” sinyali sayıyor; precision'ın düştüğü bir tur ise kuralı korumak yerine durup daraltma sinyalidir.
Referans değerler
Kıyaslamanın kendi yayımladığı rakamlara karşı.
RealVuln her kategori için en iyi bildirilen rakamı yayımlar. Aşağıdaki dört satırın üçü RealVuln'a aittir; kalın olan satır bu çekirdektir ve aynı veri kümesinde, aynı puanlayıcıyla ölçülmüştür. Bu sayfadaki her rakam puanlayıcının kendi biriminde bırakılmıştır — F3 0–100 aralığında, precision ve recall kesir olarak — böylece satırlar yayımlanmış tabloyla karşılaştırılabilir kalır. Ana sayfa aynı ölçümleri baştan sona yüzde olarak verir.
| Kategori | En iyi bildirilen | F3 | precision | recall |
|---|---|---|---|---|
| Security-specialized | Kolega.Dev | 73.0 | 0.388 | 0.809 |
| General-purpose LLM | Claude Sonnet 4.6 | 51.7 | 0.785 | 0.498 |
| Rule-based SAST | Semgrep | 17.7 | 0.205 | 0.175 |
| Rule-based SAST + taint + structural | SecAudit Tier 0 | 61.2 | 0.6560 | 0.6073 |
Kural tabanlı SAST'ın üzerinde, her iki metrikte de; genel amaçlı bir modelin ve amaca özel sistemin ise çok altında — ve o ikisi, bunun artık ölçülmediği biçimde ölçülmüştü. Doğru iddia “Semgrep'ten iyi” değil, “sonradan okuduğumuz bir veri kümesinde Semgrep'in üzerinde”.
Recall nereye gidiyor
Her aile, en büyük etiket havuzu önce.
Sıralama, çubuklardan daha önemli: en üstteki dört aile veri kümesindeki bütün etiketlerin yarısından fazlasını tutuyor ve bu katmanın en kötü olduğu dört aile de onlar. Bir skoru büyük havuzlar belirler, tarayıcının kolay bulduğu havuzlar değil.
- other536 / 83165%
- sensitive_data_exposure61 / 14143%
- security_misconfiguration90 / 10883%
- xss49 / 9850%
- broken_access_control2 / 763%
- missing_auth7 / 749%
- sql_injection67 / 7194%
- hardcoded_credentials25 / 5248%
- command_injection39 / 4685%
- denial_of_service31 / 4470%
- open_redirect37 / 4092%
- path_traversal23 / 3959%
- ssrf16 / 3743%
- xxe32 / 3689%
- insecure_deserialization27 / 3479%
- code_injection28 / 3093%
- xpath_injection0 / 40%
- http_header_injection0 / 10%
Desen sınıfları tavanına yakın — komut enjeksiyonu, açık yönlendirme, kod enjeksiyonu ve XXE hepsi %80'in üzerinde. Skoru belirleyen havuzlar ise desen sınıfı değil: sensitive_data_exposure ve security_misconfiguration etiketlerinin yaklaşık 130'u bir fonksiyon tanımının üzerinde duruyor — broken_access_control ve missing_auth ile aynı biçim. Bunlar başka bir kural değil, iş mantığı geçişi istiyor ve burada eklenen hiçbir kural onlara dokunmadı.
Depo bazında66 deponun 62 tanesi
Hepsi, en iyiden başlayarak — hiçbir şey bulunamayanlar dahil.
F3'e göre sıralı. İlk beş yerine tamamı yayımlanıyor; çünkü bu projenin kendi sayfasındaki ilk beş, puanlayıcı çıktısıyla karşılaştırılana kadar iki tur bayattı ve kimsenin denetlemediği bir sıralama kendini kayırır.
| Depo | F3 | precision | recall | TP | FP | FN |
|---|---|---|---|---|---|---|
| vc-codex-high-seeded-v2-marketplace-commerce-fastapi | 85.6 | 0.688 | 0.880 | 22 | 10 | 3 |
| vc-codex-high-seeded-v2-fintech-lending-fastapi | 81.6 | 0.727 | 0.828 | 24 | 9 | 5 |
| vc-codex-seeded-v2-logistics-dispatch-fastapi | 79.7 | 0.774 | 0.800 | 24 | 7 | 6 |
| vc-codex-high-seeded-v2-support-desk-fastapi | 77.5 | 0.688 | 0.786 | 22 | 10 | 6 |
| vc-codex-high-seeded-v2-logistics-dispatch-fastapi | 77.2 | 0.622 | 0.793 | 23 | 14 | 6 |
| vc-codex-high-seeded-v2-property-management-fastapi | 76.6 | 0.525 | 0.808 | 21 | 19 | 5 |
| vc-kimi-code-seeded-v2-property-management-fastapi | 76.4 | 0.742 | 0.767 | 23 | 8 | 7 |
| vc-codex-high-seeded-v2-hr-payroll-django | 76.0 | 0.760 | 0.760 | 19 | 6 | 6 |
| vc-kimi-code-seeded-v2-crm-saas-django | 73.8 | 0.714 | 0.741 | 20 | 8 | 7 |
| vc-kimi-code-seeded-v2-hr-payroll-django | 73.6 | 0.579 | 0.759 | 22 | 16 | 7 |
| vc-codex-seeded-v2-property-management-fastapi | 73.5 | 0.676 | 0.742 | 23 | 11 | 8 |
| vc-codex-high-seeded-v2-crm-saas-django | 73.1 | 0.543 | 0.760 | 19 | 16 | 6 |
| vc-codex-high-seeded-v2-education-lms-django | 73.1 | 0.543 | 0.760 | 19 | 16 | 6 |
| vc-claude-code-seeded-v2-logistics-dispatch-fastapi | 72.7 | 0.727 | 0.727 | 24 | 9 | 9 |
| intentionally-vulnerable-python-app | 72.5 | 0.833 | 0.714 | 5 | 1 | 2 |
| vc-codex-high-seeded-v2-legal-case-django | 71.7 | 0.692 | 0.720 | 18 | 8 | 7 |
| lets-be-bad-guys | 71.1 | 0.739 | 0.708 | 17 | 6 | 7 |
| vc-codex-seeded-v2-support-desk-fastapi | 70.7 | 0.778 | 0.700 | 21 | 6 | 9 |
| vc-kimi-code-seeded-v2-logistics-dispatch-fastapi | 70.7 | 0.688 | 0.710 | 22 | 10 | 9 |
| vc-kimi-code-seeded-v2-legal-case-django | 70.0 | 0.783 | 0.692 | 18 | 5 | 8 |
| vc-claude-code-seeded-v2-marketplace-commerce-fastapi | 69.8 | 0.815 | 0.688 | 22 | 5 | 10 |
| vc-claude-code-seeded-v2-legal-case-django | 69.6 | 0.595 | 0.710 | 22 | 15 | 9 |
| vc-kimi-code-seeded-v2-marketplace-commerce-fastapi | 69.3 | 0.613 | 0.704 | 19 | 12 | 8 |
| vfapi | 69.0 | 1.000 | 0.667 | 6 | 0 | 3 |
| vc-kimi-code-seeded-v2-support-desk-fastapi | 67.9 | 0.679 | 0.679 | 19 | 9 | 9 |
| vc-kimi-code-seeded-v2-healthcare-clinic-django | 67.8 | 0.800 | 0.667 | 20 | 5 | 10 |
| vc-claude-code-seeded-v2-support-desk-fastapi | 67.4 | 0.657 | 0.676 | 23 | 12 | 11 |
| vc-claude-code-seeded-v2-crm-saas-django | 67.1 | 0.613 | 0.679 | 19 | 12 | 9 |
| vc-kimi-code-seeded-v2-fintech-lending-fastapi | 67.1 | 0.710 | 0.667 | 22 | 9 | 11 |
| vc-codex-seeded-v2-marketplace-commerce-fastapi | 66.4 | 0.760 | 0.655 | 19 | 6 | 10 |
| vc-codex-seeded-v2-crm-saas-django | 66.1 | 0.815 | 0.647 | 22 | 5 | 12 |
| vc-codex-high-seeded-v2-healthcare-clinic-django | 65.4 | 0.654 | 0.654 | 17 | 9 | 9 |
| vc-claude-code-seeded-v2-fintech-lending-fastapi | 64.6 | 0.576 | 0.655 | 19 | 14 | 10 |
| vc-codex-seeded-v2-education-lms-django | 64.5 | 0.846 | 0.629 | 22 | 4 | 13 |
| vc-claude-code-seeded-v2-property-management-fastapi | 64.0 | 0.677 | 0.636 | 21 | 10 | 12 |
| vc-codex-seeded-v2-hr-payroll-django | 63.3 | 0.857 | 0.615 | 24 | 4 | 15 |
| vulpy | 63.0 | 0.500 | 0.649 | 37 | 37 | 20 |
| vc-claude-code-seeded-v2-healthcare-clinic-django | 62.7 | 0.452 | 0.655 | 19 | 23 | 10 |
| vc-claude-code-seeded-v2-education-lms-django | 62.3 | 0.606 | 0.625 | 20 | 13 | 12 |
| vc-codex-seeded-v2-legal-case-django | 61.9 | 0.769 | 0.606 | 20 | 6 | 13 |
| vc-codex-seeded-v2-fintech-lending-fastapi | 61.1 | 0.815 | 0.595 | 22 | 5 | 15 |
| vc-kimi-code-seeded-v2-education-lms-django | 60.7 | 0.607 | 0.607 | 17 | 11 | 11 |
| vc-claude-code-seeded-v2-hr-payroll-django | 60.5 | 0.447 | 0.630 | 17 | 21 | 10 |
| dvblab | 60.2 | 0.722 | 0.591 | 13 | 5 | 9 |
| vc-codex-seeded-v2-healthcare-clinic-django | 58.1 | 0.852 | 0.561 | 23 | 4 | 18 |
| insecure-web | 57.5 | 0.833 | 0.556 | 5 | 1 | 4 |
| damn-vulnerable-flask-app | 54.4 | 0.667 | 0.533 | 8 | 4 | 7 |
| threatbyte | 53.6 | 0.518 | 0.538 | 14 | 13 | 12 |
| python-ssti | 52.6 | 1.000 | 0.500 | 1 | 0 | 1 |
| vulnpy | 49.5 | 0.792 | 0.475 | 38 | 10 | 42 |
| vulnerable-flask-app | 42.9 | 0.429 | 0.429 | 9 | 12 | 12 |
| vulnerable-python-apps | 42.3 | 0.600 | 0.409 | 9 | 6 | 13 |
| python-insecure-app | 40.0 | 1.000 | 0.375 | 3 | 0 | 5 |
| vampi | 39.5 | 0.353 | 0.400 | 6 | 11 | 9 |
| djangoat | 37.2 | 0.442 | 0.365 | 19 | 24 | 33 |
| extremely-vulnerable-flask-app | 36.2 | 0.688 | 0.344 | 11 | 5 | 21 |
| dvpwa | 32.3 | 0.700 | 0.304 | 7 | 3 | 16 |
| flask-xss | 31.6 | 0.600 | 0.300 | 9 | 6 | 21 |
| dsvw | 27.9 | 0.875 | 0.259 | 7 | 1 | 20 |
| vulnerable-tornado-app | 22.7 | 0.500 | 0.214 | 3 | 3 | 11 |
| dsvpwa | 20.3 | 0.750 | 0.188 | 6 | 2 | 26 |
| dvga | 14.8 | 0.357 | 0.139 | 5 | 9 | 31 |
62 deponun 0 tanesi 0.0 aldı; ikisinde de etiketli hiçbir bulgu tespit edilmedi. Her ikisi de tablonun sonunda yer alır. Aşağıdaki gerekçe kıyaslama deposundan birebir alındığı için İngilizcedir: çevrilmiş bir kopya, kaynak değiştiğinde sessizce yanlış hâle gelirdi.
Neyin puanlanmadığı ve bunun neden önemli olduğu
realvuln-owasp-web-playgroundrealvuln-pygoatrealvuln-python-apprealvuln-vulnerable-api
Upstream repositories are gone - git clone returns 'Repository not found' for all four. Not a choice made here, and not a random sample: all four are deliberately vulnerable teaching apps, the densest and most pattern-obvious repos in the corpus, so their absence works against this score rather than for it.
Diğer diliki koşu
JavaScript tarafı ne yapıyor — ve bunu okumadan önce ne yapıyordu.
Yukarıdaki her rakam Python'ı anlatıyor. Bu rakam JavaScript'i anlatıyor ve iki kez ölçüldü. İlk koşu kördü — bu çekirdekteki hiçbir kural o an bu kıyaslamanın etiketleri okunarak yazılmamış ya da seçilmemişti — ve 0.2286 aldı. Hiç görülmemiş kodun rakamı odur ve iyileşmez. Kör koşunun getirdiği şey bir teşhis oldu; buradaki sayı ona göre hareket edildikten sonraki sayı. İki veri kümesi hiçbir yönde kıyaslanamaz — o veri kümesi uygulamalardan, bu veri kümesi kütüphanelerden oluşuyor ve bir kütüphanenin, erişilebilirlik analizinin başlayabileceği bir istek işleyicisi yoktur.
- 54.4%recall
- 312bulunan sink
- 573etiketli sink
- 575npm paketi
Burada sağlam olan metrik recall ve yayınlanan tek metrik o. Kıyaslama paket başına tek bir açık etiketliyor ve paketin geri kalanı hakkında hiçbir şey söylemiyor; dolayısıyla eşleşmeyen bulgu oranı bir precision değil, gürültü için bir alt sınır olurdu — onu yukarıdaki rakamın yanına koymak, adı aynı olan iki farklı ölçümü kıyaslamak olurdu.
- redos28 / 8732.2%
- prototype-pollution72 / 18538.9%
- command-injection62 / 10161.4%
- code-injection22 / 3366.7%
- path-traversal128 / 16776.6%
Kör koşu üç şey söyledi; her biri şuna dönüştü. ReDoS sıfır almıştı çünkü o analiz yalnızca Python içindi — tek bir paket çekilmeden önce yol haritasına yazıldı ki sonradan bir keşif gibi sunulamasın; artık JavaScript de okuyor ve 8/87, üstel geri izlemeyi tarif eden kriterlerin, gerçek raporların çoğunun polinomiyal olduğu bir dünyadaki dürüst karşılığı. Prototype pollution hâlâ en kötü sınıf, ama dokuzu bulan kural emekliye ayrıldı; yerine döngüyü değil yazma işlemini raporlayan bir analiz geldi. Ve dist/ ya da build/ altındaki 35 sink için "tespit hatası değil, kapsam kararı" denmişti — çekirdek artık paketin kendi manifesti oraları yayınlıyorsa okuyor, 29'u erişilebilir oldu ve ikisi bulundu. O iddia işin gurur okşayan yarısıydı ve yanlıştı.
Köken
İki digest, bir rakamın üretildiği çekirdekten uzun yaşamasını engeller.
Bir sayı, ancak onu neyin ürettiğini söyleyebiliyorsanız tekrar üretilebilirdir. Ground-truth digest'i veri kümesini sabitler; engine digest'i ölçülen koşunun çıktısını değiştirebilecek her modülü kapsar. Yayımlanmış bir rakamın onu üreten koddan uzun yaşaması burada varsayım değil — bütün kapılar yeşilken gerçekten oldu, çünkü hiçbir şey sonucu çekirdekle karşılaştırmıyordu. Artık bir kapı karşılaştırıyor.
Ground-truth digest'inin Windows'ta yeniden hesaplanması, birebir aynı veri kümesi için farklı bir değer üretir: ham baytlar hash'lenir ve yollar platform ayracıyla birleştirilir, yani hem CRLF hem de ters bölü sonucu değiştirir. LF'ye normalleştirme ve düz bölü kullanımıyla değer birebir yeniden üretilir.
- Ground truthsha256:af5901bffc94380b50f31909655c12edfe0762e82162051d8b1238c66698593f
- Çekirdeksha256:8f426cd2c1196ae15e6d5460220e6fa5041bd473a6d66cc2ad2806c9f8fc0db9
- Kıyaslamahttps://github.com/kolega-ai/Real-Vuln-Benchmark · 2.0.0
- KatmanTier 0 only (--no-deps --no-scanners, no LLM)
- Yeniden doğrulandı2026-08-15
Tekrarlama
Baştan sona yaklaşık on beş dakika.
Buradaki hiçbir şeyi bu depo hesaplamıyor. run.py Semgrep formatında JSON yazar ve otorite kıyaslamanın kendi puanlayıcısıdır — kendini başkasının veri kümesine göre notlandıran bir araç, o veri kümesinin çözmek için var olduğu problemi geri getirmiş olur. 62 deponun tam taraması 1,4 dakika; gerisi klonlama.
66 deponun dördü hiç klonlanamıyor; dolayısıyla her tekrar üretim, bunun indiği yere — 62 depoya — iner.
git clone https://github.com/kolega-ai/Real-Vuln-Benchmark
cd Real-Vuln-Benchmark && python3 clone_repos.py && cd -
python3 eval/realvuln/run.py --benchmark ../Real-Vuln-Benchmark
cd ../Real-Vuln-Benchmark
for r in repos/*/; do python3 score.py --repo "$(basename "$r")" --scanner secaudit; done
python3 dashboard.py --scanners secaudit
Bir sonraki koşunun yeniden keşfetmemesi için dört not
- 1
score.py--repoalır ve tek seferde tek depo puanlar.--all-reposdiye bir bayrak yok. - 2
Windows'ta
PYTHONUTF8=1gerekir; yoksa puanlayıcı UTF-8 olmayan konsol kod sayfasında kendi markdown raporunu yazarken durur. - 3
İkinci bir tarayıcıyı puanlamak, aynı tarihe ait depo bazlı skor kartlarının üzerine yazar. Önceki set, bir sonraki tarayıcı puanlanmadan önce alınmalıdır.
- 4
compute_gt_hash.pyWindows'ta, birebir aynı veri kümesi için yayımlanmış digest ile uyuşmaz. LF'ye normalleştirme ve düz bölü kullanımıyla uyuşur; ilk okuma ground truth'un değiştiğini söyler ki bu, hiçbir koşunun bir diğeriyle kıyaslanamayacağı anlamına gelirdi.
Bu sayının söylemedikleri
Bu rakamın olmadığı üç şey.
- 1
LLM katmanının ölçümü değil
Tier 1, deterministik katmanın yapısal olarak ulaşamadığı sınıflara ulaşması beklenen katman. Ölçmek buradaki her depo için ücretli çıkarım gerektiriyor ve bu, backlog değil açıkça belirtilmiş bir hedef-dışı. Katman varsayılan kapalı geliyor; onun yerine iddia daraltıldı.
- 2
JavaScript çekirdeğinin ölçümü değil
RealVuln v1 yalnızca Python. Yapısal analizler bir JavaScript/TypeScript ön ucu kazandı; artık aynı dört soru iki dile de soruluyor ama iki cevaptan yalnızca biri başkası tarafından puanlandı. JS tarafı skor olarak değil, regresyon tabanı olarak geliyor.
- 3
Başka bir depo hakkında bir iddia değil
Etiketlerin çoğunu tutan aileler hâlâ sıfıra yakın olanlar ve burada eklenen hiçbir desen onlara dokunmuyor. Kasten zafiyetli uygulamalardan oluşan bir veri kümesi, üretim kod tabanının biçimi de değil — iki yönde birden.
Bunların hiçbiri sonradan eklenmiş bir çekince değil. Her biri bu ölçümün ilk koşudan beri taşıdığı bir sınır — ve aracın yazdığı rapor da kendi sınırlarını aynı şekilde belirtir.
Rakamı üreten kodu inceleyin.
Puanlayıcı çıktısı depoda commit'lidir, koşum tek komuttur ve bu sayfadaki bir rakam ham sonuçla uyuşmadığında CI kapısı derlemeyi durdurur.