Skip to content

Commit

Permalink
简化重命名
Browse files Browse the repository at this point in the history
  • Loading branch information
cn-kali-team committed Jul 26, 2023
1 parent 8eca987 commit 68b9a99
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 98 deletions.
27 changes: 8 additions & 19 deletions cve/src/cve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize};

// 单个CVE信息
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
#[allow(clippy::upper_case_acronyms)]
pub struct CVEItem {
// CVE 信息
Expand All @@ -12,57 +13,45 @@ pub struct CVEItem {
// 配置
pub configurations: Configurations,
// 公开时间
#[serde(rename = "publishedDate")]
pub published_date: String,
// 最后修改时间
#[serde(rename = "lastModifiedDate")]
pub last_modified_date: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Impact {
// TODO: Implement V1?
// cvssV2 过期
#[serde(rename = "baseMetricV2")]
pub metric_v2: Option<ImpactMetricV2>,
pub base_metric_v2: Option<ImpactMetricV2>,
// cvssV3
#[serde(rename = "baseMetricV3")]
pub metric_v3: Option<ImpactMetricV3>,
pub base_metric_v3: Option<ImpactMetricV3>,
// TODO: Implement V4?
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ImpactMetricV2 {
#[serde(rename = "cvssV2")]
pub cvss: cvss::v2::CVSS,
pub cvss_v2: cvss::v2::CVSS,
// 漏洞的可利用 评分
#[serde(rename = "exploitabilityScore")]
pub exploitability_score: f32,
// 评分
#[serde(rename = "impactScore")]
pub impact_score: f32,
// 评级
pub severity: String,
#[serde(rename = "acInsufInfo")]
pub ac_insuf_info: Option<bool>,
#[serde(rename = "obtainAllPrivilege")]
pub obtain_all_privilege: bool,
#[serde(rename = "obtainUserPrivilege")]
pub obtain_user_privilege: bool,
#[serde(rename = "obtainOtherPrivilege")]
pub obtain_other_privilege: bool,
// 用户交互
#[serde(rename = "userInteractionRequired")]
pub user_interaction_required: Option<bool>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ImpactMetricV3 {
#[serde(rename = "cvssV3")]
pub cvss: cvss::v3::CVSS,
pub cvss_v3: cvss::v3::CVSS,
// 漏洞的可利用 评分
#[serde(rename = "exploitabilityScore")]
pub exploitability_score: f32,
// cvss 评分
#[serde(rename = "impactScore")]
pub impact_score: f32,
}

Expand Down
63 changes: 13 additions & 50 deletions cve/src/cvss.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,127 +6,104 @@ pub mod v3 {
use serde::{Deserialize, Serialize};
// AV
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum AttackVectorType {
// AV:N
#[serde(rename = "NETWORK")]
Network,
// AV:A
#[serde(rename = "ADJACENT_NETWORK")]
AdjacentNetwork,
// AV:L
#[serde(rename = "LOCAL")]
Local,
// AV:P
#[serde(rename = "PHYSICAL")]
Physical,
}
// AC
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum AttackComplexityType {
// AC:H
#[serde(rename = "HIGH")]
High,
// AC:L
#[serde(rename = "LOW")]
Low,
}
// PR
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum PrivilegesRequiredType {
// PR:H
#[serde(rename = "HIGH")]
High,
// PR:L
#[serde(rename = "LOW")]
Low,
// PR:N
#[serde(rename = "NONE")]
None,
}
// UI
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum UserInteractionType {
// UI:R
#[serde(rename = "REQUIRED")]
Required,
// UI:N
#[serde(rename = "NONE")]
None,
}
// CIA 影响指标 原json schema为ciaType
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum ImpactMetricsType {
#[serde(rename = "HIGH")]
High,
#[serde(rename = "LOW")]
Low,
#[serde(rename = "NONE")]
None,
}
// S
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum ScopeType {
// S:U
#[serde(rename = "UNCHANGED")]
Unchanged,
// S:C
#[serde(rename = "CHANGED")]
Changed,
}
// 严重性
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum SeverityType {
// 未校正
#[serde(rename = "NONE")]
None,
// 低危
#[serde(rename = "LOW")]
Low,
// 中危
#[serde(rename = "MEDIUM")]
Medium,
// 高危
#[serde(rename = "HIGH")]
High,
// 严重
#[serde(rename = "CRITICAL")]
Critical,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CVSS {
// 版本: 3.0 和 3.1
pub version: String,
// 向量: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
#[serde(rename = "vectorString")]
pub vector_string: String,
// 访问途径(AV)
#[serde(rename = "attackVector")]
pub attack_vector: AttackVectorType,
// 攻击复杂度(AC)
#[serde(rename = "attackComplexity")]
pub attack_complexity: AttackComplexityType,
// 所需权限(PR)
#[serde(rename = "privilegesRequired")]
pub privileges_required: PrivilegesRequiredType,
// 用户交互(UI)
#[serde(rename = "userInteraction")]
pub user_interaction: UserInteractionType,
// 影响范围(S)
pub scope: ScopeType,
// 机密性影响(C)
#[serde(rename = "confidentialityImpact")]
pub confidentiality_impact: ImpactMetricsType,
// 完整性影响(I)
#[serde(rename = "integrityImpact")]
pub integrity_impact: ImpactMetricsType,
// 可用性影响(A)
#[serde(rename = "availabilityImpact")]
pub availability_impact: ImpactMetricsType,
// 基础评分
#[serde(rename = "baseScore")]
pub base_score: f64,
// 基础评级
#[serde(rename = "baseSeverity")]
pub base_severity: SeverityType,
}
}
Expand All @@ -136,79 +113,65 @@ pub mod v2 {
use serde::{Deserialize, Serialize};
// AV
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum AccessVectorType {
// AV:N
#[serde(rename = "NETWORK")]
Network,
// AV:A
#[serde(rename = "ADJACENT_NETWORK")]
AdjacentNetwork,
// AV:L
#[serde(rename = "LOCAL")]
Local,
}
// AC
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum AccessComplexityType {
// AC:H
#[serde(rename = "HIGH")]
High,
// AC:M
#[serde(rename = "MEDIUM")]
Medium,
// AC:L
#[serde(rename = "LOW")]
Low,
}
// Au
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum AuthenticationType {
// Au:M
#[serde(rename = "MULTIPLE")]
Multiple,
// Au:S
#[serde(rename = "SINGLE")]
Single,
// Au:N
#[serde(rename = "NONE")]
None,
}
// CIA 影响指标 原json schema为ciaType
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum ImpactMetricsType {
#[serde(rename = "NONE")]
None,
#[serde(rename = "PARTIAL")]
Partial,
#[serde(rename = "COMPLETE")]
Complete,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CVSS {
// 版本
pub version: String,
// 向量: CVSS:2.0/AV:L/AC:L/Au:N/C:C/I:C/A:C
#[serde(rename = "vectorString")]
pub vector_string: String,
// 访问向量
#[serde(rename = "accessVector")]
pub access_vector: AccessVectorType,
// 访问复杂性
#[serde(rename = "accessComplexity")]
pub access_complexity: AccessComplexityType,
// 认证
pub authentication: AuthenticationType,
// 完整性影响(I)
#[serde(rename = "confidentialityImpact")]
pub confidentiality_impact: ImpactMetricsType,
// 完整性影响(I)
#[serde(rename = "integrityImpact")]
pub integrity_impact: ImpactMetricsType,
// 可用性影响(A)
#[serde(rename = "availabilityImpact")]
pub availability_impact: ImpactMetricsType,
// 基础评分
#[serde(rename = "baseScore")]
pub base_score: f64,
}
}
Loading

0 comments on commit 68b9a99

Please sign in to comment.