@blamejs/exceptd-skills 0.13.2 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/bin/exceptd.js +105 -1
- package/data/_indexes/_meta.json +12 -12
- package/data/_indexes/activity-feed.json +3 -3
- package/data/_indexes/catalog-summaries.json +3 -3
- package/data/_indexes/chains.json +125 -0
- package/data/_indexes/frequency.json +12 -0
- package/data/_indexes/section-offsets.json +88 -88
- package/data/_indexes/token-budget.json +37 -37
- package/data/attack-techniques.json +2 -0
- package/data/cve-catalog.json +96 -1
- package/data/cwe-catalog.json +1 -0
- package/data/framework-control-gaps.json +409 -0
- package/data/zeroday-lessons.json +71 -0
- package/lib/lint-skills.js +17 -13
- package/lib/source-advisories.js +26 -0
- package/manifest.json +47 -47
- package/orchestrator/index.js +147 -2
- package/package.json +1 -1
- package/sbom.cdx.json +22 -22
- package/skills/api-security/skill.md +14 -4
- package/skills/cloud-iam-incident/skill.md +1 -1
- package/skills/email-security-anti-phishing/skill.md +14 -4
|
@@ -3261,93 +3261,93 @@
|
|
|
3261
3261
|
},
|
|
3262
3262
|
"api-security": {
|
|
3263
3263
|
"path": "skills/api-security/skill.md",
|
|
3264
|
-
"total_bytes":
|
|
3265
|
-
"total_lines":
|
|
3264
|
+
"total_bytes": 39261,
|
|
3265
|
+
"total_lines": 304,
|
|
3266
3266
|
"frontmatter": {
|
|
3267
3267
|
"line_start": 1,
|
|
3268
|
-
"line_end":
|
|
3268
|
+
"line_end": 71,
|
|
3269
3269
|
"byte_start": 0,
|
|
3270
|
-
"byte_end":
|
|
3270
|
+
"byte_end": 1959
|
|
3271
3271
|
},
|
|
3272
3272
|
"sections": [
|
|
3273
3273
|
{
|
|
3274
3274
|
"name": "Threat Context (mid-2026)",
|
|
3275
3275
|
"normalized_name": "threat-context",
|
|
3276
|
-
"line":
|
|
3277
|
-
"byte_start":
|
|
3278
|
-
"byte_end":
|
|
3276
|
+
"line": 75,
|
|
3277
|
+
"byte_start": 1987,
|
|
3278
|
+
"byte_end": 7167,
|
|
3279
3279
|
"bytes": 5180,
|
|
3280
3280
|
"h3_count": 0
|
|
3281
3281
|
},
|
|
3282
3282
|
{
|
|
3283
3283
|
"name": "Framework Lag Declaration",
|
|
3284
3284
|
"normalized_name": "framework-lag-declaration",
|
|
3285
|
-
"line":
|
|
3286
|
-
"byte_start":
|
|
3287
|
-
"byte_end":
|
|
3285
|
+
"line": 101,
|
|
3286
|
+
"byte_start": 7167,
|
|
3287
|
+
"byte_end": 12457,
|
|
3288
3288
|
"bytes": 5290,
|
|
3289
3289
|
"h3_count": 0
|
|
3290
3290
|
},
|
|
3291
3291
|
{
|
|
3292
3292
|
"name": "TTP Mapping (MITRE ATT&CK Enterprise + ATLAS v5.4.0)",
|
|
3293
3293
|
"normalized_name": "ttp-mapping",
|
|
3294
|
-
"line":
|
|
3295
|
-
"byte_start":
|
|
3296
|
-
"byte_end":
|
|
3297
|
-
"bytes":
|
|
3294
|
+
"line": 129,
|
|
3295
|
+
"byte_start": 12457,
|
|
3296
|
+
"byte_end": 15207,
|
|
3297
|
+
"bytes": 2750,
|
|
3298
3298
|
"h3_count": 0
|
|
3299
3299
|
},
|
|
3300
3300
|
{
|
|
3301
3301
|
"name": "Exploit Availability Matrix",
|
|
3302
3302
|
"normalized_name": "exploit-availability-matrix",
|
|
3303
|
-
"line":
|
|
3304
|
-
"byte_start":
|
|
3305
|
-
"byte_end":
|
|
3303
|
+
"line": 143,
|
|
3304
|
+
"byte_start": 15207,
|
|
3305
|
+
"byte_end": 19675,
|
|
3306
3306
|
"bytes": 4468,
|
|
3307
3307
|
"h3_count": 0
|
|
3308
3308
|
},
|
|
3309
3309
|
{
|
|
3310
3310
|
"name": "Analysis Procedure",
|
|
3311
3311
|
"normalized_name": "analysis-procedure",
|
|
3312
|
-
"line":
|
|
3313
|
-
"byte_start":
|
|
3314
|
-
"byte_end":
|
|
3315
|
-
"bytes":
|
|
3312
|
+
"line": 163,
|
|
3313
|
+
"byte_start": 19675,
|
|
3314
|
+
"byte_end": 28154,
|
|
3315
|
+
"bytes": 8479,
|
|
3316
3316
|
"h3_count": 1
|
|
3317
3317
|
},
|
|
3318
3318
|
{
|
|
3319
3319
|
"name": "Output Format",
|
|
3320
3320
|
"normalized_name": "output-format",
|
|
3321
|
-
"line":
|
|
3322
|
-
"byte_start":
|
|
3323
|
-
"byte_end":
|
|
3321
|
+
"line": 213,
|
|
3322
|
+
"byte_start": 28154,
|
|
3323
|
+
"byte_end": 31872,
|
|
3324
3324
|
"bytes": 3718,
|
|
3325
3325
|
"h3_count": 9
|
|
3326
3326
|
},
|
|
3327
3327
|
{
|
|
3328
3328
|
"name": "Compliance Theater Check",
|
|
3329
3329
|
"normalized_name": "compliance-theater-check",
|
|
3330
|
-
"line":
|
|
3331
|
-
"byte_start":
|
|
3332
|
-
"byte_end":
|
|
3330
|
+
"line": 266,
|
|
3331
|
+
"byte_start": 31872,
|
|
3332
|
+
"byte_end": 34230,
|
|
3333
3333
|
"bytes": 2358,
|
|
3334
3334
|
"h3_count": 0
|
|
3335
3335
|
},
|
|
3336
3336
|
{
|
|
3337
3337
|
"name": "Defensive Countermeasure Mapping",
|
|
3338
3338
|
"normalized_name": "defensive-countermeasure-mapping",
|
|
3339
|
-
"line":
|
|
3340
|
-
"byte_start":
|
|
3341
|
-
"byte_end":
|
|
3342
|
-
"bytes":
|
|
3339
|
+
"line": 280,
|
|
3340
|
+
"byte_start": 34230,
|
|
3341
|
+
"byte_end": 38056,
|
|
3342
|
+
"bytes": 3826,
|
|
3343
3343
|
"h3_count": 0
|
|
3344
3344
|
},
|
|
3345
3345
|
{
|
|
3346
3346
|
"name": "Hand-Off / Related Skills",
|
|
3347
3347
|
"normalized_name": "hand-off",
|
|
3348
|
-
"line":
|
|
3349
|
-
"byte_start":
|
|
3350
|
-
"byte_end":
|
|
3348
|
+
"line": 296,
|
|
3349
|
+
"byte_start": 38056,
|
|
3350
|
+
"byte_end": 39261,
|
|
3351
3351
|
"bytes": 1205,
|
|
3352
3352
|
"h3_count": 0
|
|
3353
3353
|
}
|
|
@@ -3825,93 +3825,93 @@
|
|
|
3825
3825
|
},
|
|
3826
3826
|
"email-security-anti-phishing": {
|
|
3827
3827
|
"path": "skills/email-security-anti-phishing/skill.md",
|
|
3828
|
-
"total_bytes":
|
|
3829
|
-
"total_lines":
|
|
3828
|
+
"total_bytes": 29232,
|
|
3829
|
+
"total_lines": 219,
|
|
3830
3830
|
"frontmatter": {
|
|
3831
3831
|
"line_start": 1,
|
|
3832
|
-
"line_end":
|
|
3832
|
+
"line_end": 58,
|
|
3833
3833
|
"byte_start": 0,
|
|
3834
|
-
"byte_end":
|
|
3834
|
+
"byte_end": 1333
|
|
3835
3835
|
},
|
|
3836
3836
|
"sections": [
|
|
3837
3837
|
{
|
|
3838
3838
|
"name": "Threat Context (mid-2026)",
|
|
3839
3839
|
"normalized_name": "threat-context",
|
|
3840
|
-
"line":
|
|
3841
|
-
"byte_start":
|
|
3842
|
-
"byte_end":
|
|
3840
|
+
"line": 62,
|
|
3841
|
+
"byte_start": 1381,
|
|
3842
|
+
"byte_end": 5811,
|
|
3843
3843
|
"bytes": 4430,
|
|
3844
3844
|
"h3_count": 0
|
|
3845
3845
|
},
|
|
3846
3846
|
{
|
|
3847
3847
|
"name": "Framework Lag Declaration",
|
|
3848
3848
|
"normalized_name": "framework-lag-declaration",
|
|
3849
|
-
"line":
|
|
3850
|
-
"byte_start":
|
|
3851
|
-
"byte_end":
|
|
3852
|
-
"bytes":
|
|
3849
|
+
"line": 80,
|
|
3850
|
+
"byte_start": 5811,
|
|
3851
|
+
"byte_end": 9893,
|
|
3852
|
+
"bytes": 4082,
|
|
3853
3853
|
"h3_count": 0
|
|
3854
3854
|
},
|
|
3855
3855
|
{
|
|
3856
3856
|
"name": "TTP Mapping",
|
|
3857
3857
|
"normalized_name": "ttp-mapping",
|
|
3858
|
-
"line":
|
|
3859
|
-
"byte_start":
|
|
3860
|
-
"byte_end":
|
|
3861
|
-
"bytes":
|
|
3858
|
+
"line": 102,
|
|
3859
|
+
"byte_start": 9893,
|
|
3860
|
+
"byte_end": 11985,
|
|
3861
|
+
"bytes": 2092,
|
|
3862
3862
|
"h3_count": 0
|
|
3863
3863
|
},
|
|
3864
3864
|
{
|
|
3865
3865
|
"name": "Exploit Availability Matrix",
|
|
3866
3866
|
"normalized_name": "exploit-availability-matrix",
|
|
3867
|
-
"line":
|
|
3868
|
-
"byte_start":
|
|
3869
|
-
"byte_end":
|
|
3867
|
+
"line": 116,
|
|
3868
|
+
"byte_start": 11985,
|
|
3869
|
+
"byte_end": 13825,
|
|
3870
3870
|
"bytes": 1840,
|
|
3871
3871
|
"h3_count": 0
|
|
3872
3872
|
},
|
|
3873
3873
|
{
|
|
3874
3874
|
"name": "Analysis Procedure",
|
|
3875
3875
|
"normalized_name": "analysis-procedure",
|
|
3876
|
-
"line":
|
|
3877
|
-
"byte_start":
|
|
3878
|
-
"byte_end":
|
|
3879
|
-
"bytes":
|
|
3876
|
+
"line": 135,
|
|
3877
|
+
"byte_start": 13825,
|
|
3878
|
+
"byte_end": 21267,
|
|
3879
|
+
"bytes": 7442,
|
|
3880
3880
|
"h3_count": 0
|
|
3881
3881
|
},
|
|
3882
3882
|
{
|
|
3883
3883
|
"name": "Output Format",
|
|
3884
3884
|
"normalized_name": "output-format",
|
|
3885
|
-
"line":
|
|
3886
|
-
"byte_start":
|
|
3887
|
-
"byte_end":
|
|
3885
|
+
"line": 164,
|
|
3886
|
+
"byte_start": 21267,
|
|
3887
|
+
"byte_end": 23088,
|
|
3888
3888
|
"bytes": 1821,
|
|
3889
3889
|
"h3_count": 0
|
|
3890
3890
|
},
|
|
3891
3891
|
{
|
|
3892
3892
|
"name": "Compliance Theater Check",
|
|
3893
3893
|
"normalized_name": "compliance-theater-check",
|
|
3894
|
-
"line":
|
|
3895
|
-
"byte_start":
|
|
3896
|
-
"byte_end":
|
|
3894
|
+
"line": 181,
|
|
3895
|
+
"byte_start": 23088,
|
|
3896
|
+
"byte_end": 24890,
|
|
3897
3897
|
"bytes": 1802,
|
|
3898
3898
|
"h3_count": 0
|
|
3899
3899
|
},
|
|
3900
3900
|
{
|
|
3901
3901
|
"name": "Defensive Countermeasure Mapping",
|
|
3902
3902
|
"normalized_name": "defensive-countermeasure-mapping",
|
|
3903
|
-
"line":
|
|
3904
|
-
"byte_start":
|
|
3905
|
-
"byte_end":
|
|
3906
|
-
"bytes":
|
|
3903
|
+
"line": 192,
|
|
3904
|
+
"byte_start": 24890,
|
|
3905
|
+
"byte_end": 28097,
|
|
3906
|
+
"bytes": 3207,
|
|
3907
3907
|
"h3_count": 0
|
|
3908
3908
|
},
|
|
3909
3909
|
{
|
|
3910
3910
|
"name": "Hand-Off / Related Skills",
|
|
3911
3911
|
"normalized_name": "hand-off",
|
|
3912
|
-
"line":
|
|
3913
|
-
"byte_start":
|
|
3914
|
-
"byte_end":
|
|
3912
|
+
"line": 207,
|
|
3913
|
+
"byte_start": 28097,
|
|
3914
|
+
"byte_end": 29232,
|
|
3915
3915
|
"bytes": 1135,
|
|
3916
3916
|
"h3_count": 0
|
|
3917
3917
|
}
|
|
@@ -4013,7 +4013,7 @@
|
|
|
4013
4013
|
},
|
|
4014
4014
|
"cloud-iam-incident": {
|
|
4015
4015
|
"path": "skills/cloud-iam-incident/skill.md",
|
|
4016
|
-
"total_bytes":
|
|
4016
|
+
"total_bytes": 44474,
|
|
4017
4017
|
"total_lines": 416,
|
|
4018
4018
|
"frontmatter": {
|
|
4019
4019
|
"line_start": 1,
|
|
@@ -4027,16 +4027,16 @@
|
|
|
4027
4027
|
"normalized_name": "threat-context",
|
|
4028
4028
|
"line": 81,
|
|
4029
4029
|
"byte_start": 2782,
|
|
4030
|
-
"byte_end":
|
|
4031
|
-
"bytes":
|
|
4030
|
+
"byte_end": 8575,
|
|
4031
|
+
"bytes": 5793,
|
|
4032
4032
|
"h3_count": 0
|
|
4033
4033
|
},
|
|
4034
4034
|
{
|
|
4035
4035
|
"name": "Framework Lag Declaration",
|
|
4036
4036
|
"normalized_name": "framework-lag-declaration",
|
|
4037
4037
|
"line": 114,
|
|
4038
|
-
"byte_start":
|
|
4039
|
-
"byte_end":
|
|
4038
|
+
"byte_start": 8575,
|
|
4039
|
+
"byte_end": 14891,
|
|
4040
4040
|
"bytes": 6316,
|
|
4041
4041
|
"h3_count": 0
|
|
4042
4042
|
},
|
|
@@ -4044,8 +4044,8 @@
|
|
|
4044
4044
|
"name": "TTP Mapping",
|
|
4045
4045
|
"normalized_name": "ttp-mapping",
|
|
4046
4046
|
"line": 143,
|
|
4047
|
-
"byte_start":
|
|
4048
|
-
"byte_end":
|
|
4047
|
+
"byte_start": 14891,
|
|
4048
|
+
"byte_end": 19431,
|
|
4049
4049
|
"bytes": 4540,
|
|
4050
4050
|
"h3_count": 0
|
|
4051
4051
|
},
|
|
@@ -4053,8 +4053,8 @@
|
|
|
4053
4053
|
"name": "Exploit Availability Matrix",
|
|
4054
4054
|
"normalized_name": "exploit-availability-matrix",
|
|
4055
4055
|
"line": 163,
|
|
4056
|
-
"byte_start":
|
|
4057
|
-
"byte_end":
|
|
4056
|
+
"byte_start": 19431,
|
|
4057
|
+
"byte_end": 22803,
|
|
4058
4058
|
"bytes": 3372,
|
|
4059
4059
|
"h3_count": 0
|
|
4060
4060
|
},
|
|
@@ -4062,8 +4062,8 @@
|
|
|
4062
4062
|
"name": "Analysis Procedure",
|
|
4063
4063
|
"normalized_name": "analysis-procedure",
|
|
4064
4064
|
"line": 185,
|
|
4065
|
-
"byte_start":
|
|
4066
|
-
"byte_end":
|
|
4065
|
+
"byte_start": 22803,
|
|
4066
|
+
"byte_end": 30428,
|
|
4067
4067
|
"bytes": 7625,
|
|
4068
4068
|
"h3_count": 12
|
|
4069
4069
|
},
|
|
@@ -4071,8 +4071,8 @@
|
|
|
4071
4071
|
"name": "Output Format",
|
|
4072
4072
|
"normalized_name": "output-format",
|
|
4073
4073
|
"line": 275,
|
|
4074
|
-
"byte_start":
|
|
4075
|
-
"byte_end":
|
|
4074
|
+
"byte_start": 30428,
|
|
4075
|
+
"byte_end": 32626,
|
|
4076
4076
|
"bytes": 2198,
|
|
4077
4077
|
"h3_count": 15
|
|
4078
4078
|
},
|
|
@@ -4080,8 +4080,8 @@
|
|
|
4080
4080
|
"name": "Compliance Theater Check",
|
|
4081
4081
|
"normalized_name": "compliance-theater-check",
|
|
4082
4082
|
"line": 338,
|
|
4083
|
-
"byte_start":
|
|
4084
|
-
"byte_end":
|
|
4083
|
+
"byte_start": 32626,
|
|
4084
|
+
"byte_end": 37225,
|
|
4085
4085
|
"bytes": 4599,
|
|
4086
4086
|
"h3_count": 0
|
|
4087
4087
|
},
|
|
@@ -4089,8 +4089,8 @@
|
|
|
4089
4089
|
"name": "Defensive Countermeasure Mapping",
|
|
4090
4090
|
"normalized_name": "defensive-countermeasure-mapping",
|
|
4091
4091
|
"line": 374,
|
|
4092
|
-
"byte_start":
|
|
4093
|
-
"byte_end":
|
|
4092
|
+
"byte_start": 37225,
|
|
4093
|
+
"byte_end": 41301,
|
|
4094
4094
|
"bytes": 4076,
|
|
4095
4095
|
"h3_count": 0
|
|
4096
4096
|
},
|
|
@@ -4098,8 +4098,8 @@
|
|
|
4098
4098
|
"name": "Hand-Off / Related Skills",
|
|
4099
4099
|
"normalized_name": "hand-off",
|
|
4100
4100
|
"line": 396,
|
|
4101
|
-
"byte_start":
|
|
4102
|
-
"byte_end":
|
|
4101
|
+
"byte_start": 41301,
|
|
4102
|
+
"byte_end": 44474,
|
|
4103
4103
|
"bytes": 3173,
|
|
4104
4104
|
"h3_count": 0
|
|
4105
4105
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"schema_version": "1.0.0",
|
|
4
4
|
"tokenizer_note": "Character-density approximation: 1 token ≈ 4 chars. This is the canonical rule-of-thumb for OpenAI tokenizers on English+technical text. Claude's tokenizer is typically more efficient on prose; treat this as an upper-bound budget for both. Consumers with stricter precision needs should re-tokenize with their own tokenizer.",
|
|
5
5
|
"approx_chars_per_token": 4,
|
|
6
|
-
"total_chars":
|
|
7
|
-
"total_approx_tokens":
|
|
6
|
+
"total_chars": 1617909,
|
|
7
|
+
"total_approx_tokens": 404483,
|
|
8
8
|
"skill_count": 42
|
|
9
9
|
},
|
|
10
10
|
"skills": {
|
|
@@ -1900,10 +1900,10 @@
|
|
|
1900
1900
|
},
|
|
1901
1901
|
"api-security": {
|
|
1902
1902
|
"path": "skills/api-security/skill.md",
|
|
1903
|
-
"bytes":
|
|
1904
|
-
"chars":
|
|
1905
|
-
"lines":
|
|
1906
|
-
"approx_tokens":
|
|
1903
|
+
"bytes": 39261,
|
|
1904
|
+
"chars": 39026,
|
|
1905
|
+
"lines": 304,
|
|
1906
|
+
"approx_tokens": 9757,
|
|
1907
1907
|
"approx_chars_per_token": 4,
|
|
1908
1908
|
"sections": {
|
|
1909
1909
|
"threat-context": {
|
|
@@ -1917,9 +1917,9 @@
|
|
|
1917
1917
|
"approx_tokens": 1320
|
|
1918
1918
|
},
|
|
1919
1919
|
"ttp-mapping": {
|
|
1920
|
-
"bytes":
|
|
1921
|
-
"chars":
|
|
1922
|
-
"approx_tokens":
|
|
1920
|
+
"bytes": 2750,
|
|
1921
|
+
"chars": 2720,
|
|
1922
|
+
"approx_tokens": 680
|
|
1923
1923
|
},
|
|
1924
1924
|
"exploit-availability-matrix": {
|
|
1925
1925
|
"bytes": 4468,
|
|
@@ -1927,9 +1927,9 @@
|
|
|
1927
1927
|
"approx_tokens": 1103
|
|
1928
1928
|
},
|
|
1929
1929
|
"analysis-procedure": {
|
|
1930
|
-
"bytes":
|
|
1931
|
-
"chars":
|
|
1932
|
-
"approx_tokens":
|
|
1930
|
+
"bytes": 8479,
|
|
1931
|
+
"chars": 8436,
|
|
1932
|
+
"approx_tokens": 2109
|
|
1933
1933
|
},
|
|
1934
1934
|
"output-format": {
|
|
1935
1935
|
"bytes": 3718,
|
|
@@ -1942,9 +1942,9 @@
|
|
|
1942
1942
|
"approx_tokens": 587
|
|
1943
1943
|
},
|
|
1944
1944
|
"defensive-countermeasure-mapping": {
|
|
1945
|
-
"bytes":
|
|
1946
|
-
"chars":
|
|
1947
|
-
"approx_tokens":
|
|
1945
|
+
"bytes": 3826,
|
|
1946
|
+
"chars": 3806,
|
|
1947
|
+
"approx_tokens": 952
|
|
1948
1948
|
},
|
|
1949
1949
|
"hand-off": {
|
|
1950
1950
|
"bytes": 1205,
|
|
@@ -2230,10 +2230,10 @@
|
|
|
2230
2230
|
},
|
|
2231
2231
|
"email-security-anti-phishing": {
|
|
2232
2232
|
"path": "skills/email-security-anti-phishing/skill.md",
|
|
2233
|
-
"bytes":
|
|
2234
|
-
"chars":
|
|
2235
|
-
"lines":
|
|
2236
|
-
"approx_tokens":
|
|
2233
|
+
"bytes": 29232,
|
|
2234
|
+
"chars": 29116,
|
|
2235
|
+
"lines": 219,
|
|
2236
|
+
"approx_tokens": 7279,
|
|
2237
2237
|
"approx_chars_per_token": 4,
|
|
2238
2238
|
"sections": {
|
|
2239
2239
|
"threat-context": {
|
|
@@ -2242,14 +2242,14 @@
|
|
|
2242
2242
|
"approx_tokens": 1104
|
|
2243
2243
|
},
|
|
2244
2244
|
"framework-lag-declaration": {
|
|
2245
|
-
"bytes":
|
|
2246
|
-
"chars":
|
|
2247
|
-
"approx_tokens":
|
|
2245
|
+
"bytes": 4082,
|
|
2246
|
+
"chars": 4077,
|
|
2247
|
+
"approx_tokens": 1019
|
|
2248
2248
|
},
|
|
2249
2249
|
"ttp-mapping": {
|
|
2250
|
-
"bytes":
|
|
2251
|
-
"chars":
|
|
2252
|
-
"approx_tokens":
|
|
2250
|
+
"bytes": 2092,
|
|
2251
|
+
"chars": 2080,
|
|
2252
|
+
"approx_tokens": 520
|
|
2253
2253
|
},
|
|
2254
2254
|
"exploit-availability-matrix": {
|
|
2255
2255
|
"bytes": 1840,
|
|
@@ -2257,9 +2257,9 @@
|
|
|
2257
2257
|
"approx_tokens": 460
|
|
2258
2258
|
},
|
|
2259
2259
|
"analysis-procedure": {
|
|
2260
|
-
"bytes":
|
|
2261
|
-
"chars":
|
|
2262
|
-
"approx_tokens":
|
|
2260
|
+
"bytes": 7442,
|
|
2261
|
+
"chars": 7416,
|
|
2262
|
+
"approx_tokens": 1854
|
|
2263
2263
|
},
|
|
2264
2264
|
"output-format": {
|
|
2265
2265
|
"bytes": 1821,
|
|
@@ -2272,9 +2272,9 @@
|
|
|
2272
2272
|
"approx_tokens": 450
|
|
2273
2273
|
},
|
|
2274
2274
|
"defensive-countermeasure-mapping": {
|
|
2275
|
-
"bytes":
|
|
2276
|
-
"chars":
|
|
2277
|
-
"approx_tokens":
|
|
2275
|
+
"bytes": 3207,
|
|
2276
|
+
"chars": 3187,
|
|
2277
|
+
"approx_tokens": 797
|
|
2278
2278
|
},
|
|
2279
2279
|
"hand-off": {
|
|
2280
2280
|
"bytes": 1135,
|
|
@@ -2340,16 +2340,16 @@
|
|
|
2340
2340
|
},
|
|
2341
2341
|
"cloud-iam-incident": {
|
|
2342
2342
|
"path": "skills/cloud-iam-incident/skill.md",
|
|
2343
|
-
"bytes":
|
|
2344
|
-
"chars":
|
|
2343
|
+
"bytes": 44474,
|
|
2344
|
+
"chars": 44316,
|
|
2345
2345
|
"lines": 416,
|
|
2346
|
-
"approx_tokens":
|
|
2346
|
+
"approx_tokens": 11079,
|
|
2347
2347
|
"approx_chars_per_token": 4,
|
|
2348
2348
|
"sections": {
|
|
2349
2349
|
"threat-context": {
|
|
2350
|
-
"bytes":
|
|
2351
|
-
"chars":
|
|
2352
|
-
"approx_tokens":
|
|
2350
|
+
"bytes": 5793,
|
|
2351
|
+
"chars": 5779,
|
|
2352
|
+
"approx_tokens": 1445
|
|
2353
2353
|
},
|
|
2354
2354
|
"framework-lag-declaration": {
|
|
2355
2355
|
"bytes": 6316,
|
|
@@ -217,6 +217,7 @@
|
|
|
217
217
|
"name": "External Remote Services",
|
|
218
218
|
"version": "v19",
|
|
219
219
|
"cve_refs": [
|
|
220
|
+
"CVE-2024-21762",
|
|
220
221
|
"CVE-2026-0300",
|
|
221
222
|
"CVE-2026-39987"
|
|
222
223
|
]
|
|
@@ -232,6 +233,7 @@
|
|
|
232
233
|
"CVE-2020-10148",
|
|
233
234
|
"CVE-2023-3519",
|
|
234
235
|
"CVE-2024-1709",
|
|
236
|
+
"CVE-2024-21762",
|
|
235
237
|
"CVE-2025-12686",
|
|
236
238
|
"CVE-2025-53773",
|
|
237
239
|
"CVE-2025-59389",
|
package/data/cve-catalog.json
CHANGED
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"ai_discovery_methodology": {
|
|
56
56
|
"field_added": "2026-05-15",
|
|
57
57
|
"agents_md_target": "Hard Rule #7 — '41% of 2025 zero-days were AI-discovered'. Catalog target rate floor: 0.40.",
|
|
58
|
-
"current_rate": 0.
|
|
58
|
+
"current_rate": 0.15,
|
|
59
59
|
"current_floor_enforced_by_test": 0.15,
|
|
60
60
|
"ladder_to_target": [
|
|
61
61
|
0.15,
|
|
@@ -3704,5 +3704,100 @@
|
|
|
3704
3704
|
],
|
|
3705
3705
|
"last_updated": "2026-05-17",
|
|
3706
3706
|
"discovery_attribution_note": "TeamPCP threat-actor framework, not a vulnerability discovery. The framework was open-sourced 2026-05-12 on GitHub under MIT license by the same actor group responsible for the September 2025 / November 2025 / May 2026 Shai-Hulud npm-worm waves. TeamPCP self-describes the framework as \"vibe coded\" — AI-coding-assistant-mediated authoring. Adoption-side weaponization is accelerated by AI coding assistants + the BreachForums-hosted $1,000 USD bounty contest."
|
|
3707
|
+
},
|
|
3708
|
+
"CVE-2024-21762": {
|
|
3709
|
+
"ai_assisted_weaponization": false,
|
|
3710
|
+
"name": "Fortinet FortiOS / FortiProxy SSL-VPN out-of-bounds write (sslvpnd preauth RCE)",
|
|
3711
|
+
"type": "out-of-bounds-write-preauth-rce",
|
|
3712
|
+
"cvss_score": 9.8,
|
|
3713
|
+
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
3714
|
+
"cvss_note": "NVD 9.8. Fortinet PSIRT FG-IR-24-015 advisory scored 9.6; the 0.2 delta is the scope (S:U vs S:C) interpretation. Operationally treated as 9.8 — unauthenticated network reach to the SSL-VPN web surface with code execution on the appliance.",
|
|
3715
|
+
"cisa_kev": true,
|
|
3716
|
+
"cisa_kev_date": "2024-02-09",
|
|
3717
|
+
"cisa_kev_due_date": "2024-02-16",
|
|
3718
|
+
"poc_available": true,
|
|
3719
|
+
"poc_description": "Multiple public PoCs published within days of Fortinet's 2024-02-08 disclosure (h4x0r-dz/CVE-2024-21762 on GitHub among the earliest). The vulnerability is an out-of-bounds write in sslvpnd reachable via a specially crafted unauthenticated HTTP request to the SSL-VPN web surface.",
|
|
3720
|
+
"ai_discovered": false,
|
|
3721
|
+
"ai_discovery_source": "vendor_research",
|
|
3722
|
+
"ai_discovery_notes": "Vendor-internal discovery by Fortinet PSIRT; no AI tooling credited.",
|
|
3723
|
+
"active_exploitation": "confirmed",
|
|
3724
|
+
"active_exploitation_notes": "Fortinet's 2024-02-08 advisory stated the vulnerability was 'potentially being exploited in the wild'; CISA KEV-listed the next day (2024-02-09) with a 7-day federal remediation deadline. Multiple state-aligned and ransomware-affiliate clusters subsequently observed exploiting the bug for initial access. Canadian Centre for Cyber Security joint advisory (2024) bundled CVE-2024-21762 with CVE-2022-42475 and CVE-2023-27997 as the canonical FortiGate persistent-access trio. Fortinet's 2025-04-11 advisory documented a post-exploitation technique establishing persistence on devices patched after compromise — read-only symlinks left behind in the SSL-VPN language-file directory grant ongoing filesystem read access even on fully patched firmware, requiring an additional cleanup step beyond the patch itself.",
|
|
3725
|
+
"affected": "Fortinet FortiOS and FortiProxy SSL-VPN feature on FortiGate appliances. Any internet-facing FortiGate with SSL-VPN enabled is in scope; FortiGates without SSL-VPN enabled are not reachable via this vector.",
|
|
3726
|
+
"affected_versions": [
|
|
3727
|
+
"fortios 7.6.0 (pre-7.6.2)",
|
|
3728
|
+
"fortios 7.4.0-7.4.6 (pre-7.4.7)",
|
|
3729
|
+
"fortios 7.2.0-7.2.10 (pre-7.2.11)",
|
|
3730
|
+
"fortios 7.0.0-7.0.16 (pre-7.0.17)",
|
|
3731
|
+
"fortios 6.4.0-6.4.15 (pre-6.4.16)",
|
|
3732
|
+
"fortiproxy 7.4.0-7.4.2 (pre-7.4.3)",
|
|
3733
|
+
"fortiproxy 7.2.0-7.2.8 (pre-7.2.9)",
|
|
3734
|
+
"fortiproxy 7.0.0-7.0.14 (pre-7.0.15)",
|
|
3735
|
+
"fortiproxy 2.0.0-2.0.13 (pre-2.0.14)"
|
|
3736
|
+
],
|
|
3737
|
+
"vector": "Out-of-bounds write in the sslvpnd daemon's HTTP request handling. An unauthenticated remote attacker sends a specially crafted HTTP request to the SSL-VPN web surface, corrupting memory and achieving code execution as the sslvpnd process on the appliance. Workaround pre-patch: disable SSL-VPN entirely (Fortinet's recommended interim mitigation).",
|
|
3738
|
+
"complexity": "low",
|
|
3739
|
+
"complexity_notes": "Single-request exploitation, no preconditions beyond SSL-VPN being enabled and network-reachable. Public PoCs available; mass-scanning observed within hours of disclosure.",
|
|
3740
|
+
"patch_available": true,
|
|
3741
|
+
"patch_required_reboot": true,
|
|
3742
|
+
"live_patch_available": false,
|
|
3743
|
+
"live_patch_tools": [],
|
|
3744
|
+
"live_patch_notes": "FortiOS firmware updates require a device reboot. No live-patching primitive exists for FortiGate appliances. Fortinet's 2025-04 post-exploitation advisory adds an additional cleanup requirement on top of the firmware update — operators must follow the FortiGuard remediation steps to remove read-only symlinks left behind by attackers who compromised the device before patching.",
|
|
3745
|
+
"vendor_update_paths": [
|
|
3746
|
+
"FortiOS 7.6.2+",
|
|
3747
|
+
"FortiOS 7.4.7+",
|
|
3748
|
+
"FortiOS 7.2.11+",
|
|
3749
|
+
"FortiOS 7.0.17+",
|
|
3750
|
+
"FortiOS 6.4.16+",
|
|
3751
|
+
"FortiProxy 7.4.3+",
|
|
3752
|
+
"FortiProxy 7.2.9+",
|
|
3753
|
+
"FortiProxy 7.0.15+",
|
|
3754
|
+
"FortiProxy 2.0.14+"
|
|
3755
|
+
],
|
|
3756
|
+
"framework_control_gaps": {
|
|
3757
|
+
"NIST-800-53-SI-2": "30-day patch SLA is multiple orders of magnitude longer than the observed exploitation window (hours from disclosure to mass-scanning). Reboot-required nature breaks the standard maintenance-window assumption; many operators delayed patching until the next scheduled window, extending exposure.",
|
|
3758
|
+
"ISO-27001-2022-A.8.8": "'Appropriate timescales' undefined; standard 30-day interpretation is unsafe for an unauthenticated preauth RCE on an internet-facing security appliance with public PoCs and confirmed in-wild exploitation.",
|
|
3759
|
+
"NIS2-Art21-network-security": "EU NIS2 treats VPN concentrators as essential-function infrastructure but lacks a CISA-KEV-style compressed remediation SLA. Operators in NIS2 sectors typically discovered the vulnerability via vendor advisory, not via the regulatory channel.",
|
|
3760
|
+
"DORA-Art-9": "ICT incident management presumes vendor-patch cadence; the appliance-reboot requirement breaks the standard SLA assumption for financial-entity SSL-VPN concentrators.",
|
|
3761
|
+
"UK-CAF-B4": "System security principle is silent on the operational reality that fully patched FortiGates can carry attacker persistence (symlink-based filesystem read access) seeded before the patch was applied. Patch alone is insufficient; cleanup verification is required.",
|
|
3762
|
+
"AU-ISM-1546": "Essential 8 patch-applications ML3 (48h) is closer to the operational reality than NIST SI-2 but still misses the mass-scanning window. Internet-facing-appliance class deserves a tighter SLA than general application patching.",
|
|
3763
|
+
"PCI-DSS-4.0-6.3.3": "30-day critical patch window is exploitation acceptance for an unauthenticated preauth RCE on a perimeter SSL-VPN appliance carrying CDE traffic."
|
|
3764
|
+
},
|
|
3765
|
+
"atlas_refs": [],
|
|
3766
|
+
"attack_refs": [
|
|
3767
|
+
"T1190",
|
|
3768
|
+
"T1133"
|
|
3769
|
+
],
|
|
3770
|
+
"rwep_score": 85,
|
|
3771
|
+
"rwep_factors": {
|
|
3772
|
+
"cisa_kev": 25,
|
|
3773
|
+
"poc_available": 20,
|
|
3774
|
+
"ai_factor": 0,
|
|
3775
|
+
"active_exploitation": 20,
|
|
3776
|
+
"blast_radius": 30,
|
|
3777
|
+
"patch_available": -15,
|
|
3778
|
+
"live_patch_available": 0,
|
|
3779
|
+
"reboot_required": 5
|
|
3780
|
+
},
|
|
3781
|
+
"rwep_notes": "RWEP 85. cisa_kev (+25) + poc_available (+20) + active_exploitation confirmed (+20) + blast_radius 30 (every internet-facing FortiGate with SSL-VPN enabled — global perimeter-appliance install base, frequently used as ransomware initial-access vector through 2024-2026) - patch_available (-15) + reboot_required (+5). Live-patch credit not available — FortiOS has no live-patching primitive. Operationally exceeds the live-patching ceiling because patching requires a maintenance window; many fleets remained exposed for weeks after the patch shipped.",
|
|
3782
|
+
"epss_score": null,
|
|
3783
|
+
"epss_date": null,
|
|
3784
|
+
"cwe_refs": [
|
|
3785
|
+
"CWE-787"
|
|
3786
|
+
],
|
|
3787
|
+
"source_verified": "2026-05-17",
|
|
3788
|
+
"verification_sources": [
|
|
3789
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2024-21762",
|
|
3790
|
+
"https://www.fortiguard.com/psirt/FG-IR-24-015",
|
|
3791
|
+
"https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
|
|
3792
|
+
"https://www.tenable.com/blog/cve-2024-21762-critical-fortinet-fortios-out-of-bound-write-ssl-vpn-vulnerability",
|
|
3793
|
+
"https://www.rapid7.com/blog/post/2024/02/12/etr-critical-fortinet-fortios-cve-2024-21762-exploited/",
|
|
3794
|
+
"https://www.huntress.com/threat-library/vulnerabilities/cve-2024-21762",
|
|
3795
|
+
"https://www.helpnetsecurity.com/2024/02/12/critical-fortinet-fortios-flaw-exploited-in-the-wild-cve-2024-21762/",
|
|
3796
|
+
"https://www.cisa.gov/news-events/alerts/2025/04/11/fortinet-releases-advisory-new-post-exploitation-technique-known-vulnerabilities",
|
|
3797
|
+
"https://www.cyber.gc.ca/en/alerts-advisories/compromise-persistent-access-fortinet-fortios-products-cve-2022-42475-cve-2023-27997-cve-2024-21762"
|
|
3798
|
+
],
|
|
3799
|
+
"_draft": false,
|
|
3800
|
+
"last_updated": "2026-05-17",
|
|
3801
|
+
"discovery_attribution_note": "Vendor-internal discovery by Fortinet PSIRT, disclosed 2024-02-08 via advisory FG-IR-24-015. No external researcher byline. CISA KEV-listed 2024-02-09 with a 7-day federal remediation deadline. Post-exploitation symlink-persistence technique documented in Fortinet's 2025-04-11 advisory after operators reported residual filesystem access on devices patched after compromise."
|
|
3707
3802
|
}
|
|
3708
3803
|
}
|