Skip to content

Commit 964deb0

Browse files
authored
Added organization in vulnerability (#2258)
added organization in vulnerability in backend
1 parent d0ed307 commit 964deb0

8 files changed

Lines changed: 40 additions & 10 deletions

File tree

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
id;name;progress;is_active;create_date;update_date;user_id;description;short_description;language;related_link;vulnerability_identifier
2-
1;"CVE-2022-22978";98;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"In Spring Security versions 5.5.6 and 5.6.3 and older unsupported versions, RegexRequestMatcher can easily be misconfigured to be bypassed on some servlet containers. Applications using RegexRequestMatcher with `.` in the regular expression are possibly vulnerable to an authorization bypass";Incorrect Authorization;JAVA;https://spring.io/security/cve-2022-22978;
3-
2;"CVE-2022-44697";78;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;
4-
3;"CVE-2023-22475";61;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;
5-
4;"CVE-2022-25365";78;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;
6-
5;"CVE-2022-25296";73;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;
1+
id;name;progress;is_active;create_date;update_date;user_id;description;short_description;language;related_link;vulnerability_identifier;organization_id
2+
1;"CVE-2022-22978";98;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"In Spring Security versions 5.5.6 and 5.6.3 and older unsupported versions, RegexRequestMatcher can easily be misconfigured to be bypassed on some servlet containers. Applications using RegexRequestMatcher with `.` in the regular expression are possibly vulnerable to an authorization bypass";Incorrect Authorization;JAVA;https://spring.io/security/cve-2022-22978;;1
3+
2;"CVE-2022-44697";78;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;;
4+
3;"CVE-2023-22475";61;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;;
5+
4;"CVE-2022-25365";78;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;;
6+
5;"CVE-2022-25296";73;1;"2021-01-01 00:00:00";"2021-01-01 00:00:00";1;"New description";Short description;JAVA;;;

db/test-data/vulnerability-insert.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<column header="language" name="language" type="varchar(64)"/>
1919
<column header="related_link" name="related_link" type="varchar(64)"/>
2020
<column header="vulnerability_identifier" name="vulnerability_identifier" type="varchar(64)"/>
21+
<column header="organization_id" name="organization_id" type="bigint"/>
2122
</loadData>
2223
</changeSet>
2324

db/v-2/tables/vulnerability.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,10 @@
7676
</addColumn>
7777
</changeSet>
7878

79+
<changeSet id="vulnerability-9" author="frolov" context="dev or prod">
80+
<addColumn tableName="vulnerability">
81+
<column name="organization_id" type="bigint"/>
82+
</addColumn>
83+
</changeSet>
84+
7985
</databaseChangeLog>

save-backend/src/main/kotlin/com/saveourtool/save/backend/service/vulnerability/VulnerabilityService.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.saveourtool.save.backend.service.vulnerability
22

33
import com.saveourtool.save.authservice.utils.AuthenticationDetails
4+
import com.saveourtool.save.backend.repository.OrganizationRepository
45
import com.saveourtool.save.backend.repository.UserRepository
56
import com.saveourtool.save.backend.repository.vulnerability.VulnerabilityProjectRepository
67
import com.saveourtool.save.backend.repository.vulnerability.VulnerabilityRepository
@@ -27,6 +28,7 @@ class VulnerabilityService(
2728
private val vulnerabilityRepository: VulnerabilityRepository,
2829
private val vulnerabilityProjectRepository: VulnerabilityProjectRepository,
2930
private val userRepository: UserRepository,
31+
private val organizationRepository: OrganizationRepository,
3032
) {
3133
/**
3234
* @param vulnerabilityIdentifier identifier of vulnerability
@@ -136,6 +138,7 @@ class VulnerabilityService(
136138
) {
137139
val userId = (authentication.details as AuthenticationDetails).id
138140
val user = userRepository.getByIdOrNotFound(userId)
141+
val organizationNew = vulnerabilityDto.organization?.name?.let { organizationRepository.findByName(it) }
139142
val vulnerability = Vulnerability(
140143
name = "default-${Random.nextInt()}",
141144
vulnerabilityIdentifier = vulnerabilityDto.vulnerabilityIdentifier,
@@ -147,6 +150,7 @@ class VulnerabilityService(
147150
projects = emptyList(),
148151
isActive = false,
149152
userId = user.requiredId(),
153+
organization = organizationNew,
150154
)
151155
val vulnerabilityNew = vulnerabilityRepository.saveAndFlush(vulnerability)
152156
val newName = "SOTV-${LocalDateTime.now().year}-${vulnerabilityNew.id}"
@@ -206,9 +210,15 @@ class VulnerabilityService(
206210

207211
val user = userRepository.getByIdOrNotFound(vulnerability.userId)
208212
user.apply {
209-
rating += VULNERABILITY_RATING
213+
rating += VULNERABILITY_OWNER_RATING
210214
}
211215
userRepository.save(user)
216+
217+
vulnerabilityDto.organization?.name?.let { organizationName ->
218+
val organizationNew = organizationRepository.findByName(organizationName).orNotFound { "Not found organization by name = $organizationName" }
219+
organizationNew.apply { rating += VULNERABILITY_ORGANIZATION_RATING }
220+
organizationRepository.save(organizationNew)
221+
}
212222
}
213223

214224
/**
@@ -250,6 +260,7 @@ class VulnerabilityService(
250260
fun deleteProject(name: String, vulnerabilityName: String) = vulnerabilityProjectRepository.deleteByNameAndVulnerabilityName(name, vulnerabilityName)
251261

252262
companion object {
253-
private const val VULNERABILITY_RATING = 10
263+
private const val VULNERABILITY_ORGANIZATION_RATING = 10
264+
private const val VULNERABILITY_OWNER_RATING = 10
254265
}
255266
}

save-cloud-common/src/commonMain/kotlin/com/saveourtool/save/entities/vulnerability/VulnerabilityDto.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.saveourtool.save.entities.vulnerability
22

3+
import com.saveourtool.save.entities.OrganizationDto
34
import kotlinx.serialization.Serializable
45

56
/**
@@ -13,6 +14,7 @@ import kotlinx.serialization.Serializable
1314
* @property relatedLink
1415
* @property language
1516
* @property vulnerabilityIdentifier
17+
* @property organization
1618
*/
1719
@Serializable
1820
data class VulnerabilityDto(
@@ -26,6 +28,7 @@ data class VulnerabilityDto(
2628
val language: VulnerabilityLanguage,
2729
val isActive: Boolean,
2830
val userId: Long,
31+
val organization: OrganizationDto?
2932
) {
3033
companion object {
3134
val empty = VulnerabilityDto(
@@ -39,6 +42,7 @@ data class VulnerabilityDto(
3942
VulnerabilityLanguage.OTHER,
4043
false,
4144
-1,
45+
null,
4246
)
4347
}
4448
}

save-cloud-common/src/jvmMain/kotlin/com/saveourtool/save/entities/vulnerabilities/Vulnerability.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.saveourtool.save.entities.vulnerabilities
22

3+
import com.saveourtool.save.entities.Organization
34
import com.saveourtool.save.entities.vulnerability.VulnerabilityDto
45
import com.saveourtool.save.entities.vulnerability.VulnerabilityLanguage
56
import com.saveourtool.save.spring.entity.BaseEntityWithDateAndDto
@@ -19,6 +20,7 @@ import javax.persistence.*
1920
* @property shortDescription short description of vulnerability
2021
* @property relatedLink
2122
* @property language
23+
* @property organization
2224
**/
2325
@Entity
2426
@Suppress("LongParameterList")
@@ -52,6 +54,10 @@ class Vulnerability(
5254

5355
var vulnerabilityIdentifier: String?,
5456

57+
@ManyToOne
58+
@JoinColumn(name = "organization_id")
59+
var organization: Organization?,
60+
5561
) : BaseEntityWithDateAndDto<VulnerabilityDto>() {
5662
/**
5763
* @return a vulnerability dto
@@ -67,6 +73,7 @@ class Vulnerability(
6773
language = language,
6874
isActive = isActive,
6975
userId = userId,
76+
organization = organization?.toDto(),
7077
)
7178

7279
/**
@@ -83,5 +90,6 @@ class Vulnerability(
8390
language = language,
8491
isActive = isActive,
8592
userId = userId,
93+
organization = organization?.toDto(),
8694
)
8795
}

save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/fossgraph/CreateVulnerabilityView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ val createVulnerabilityView: VFC = VFC {
204204
textValue = vulnerability.vulnerabilityIdentifier
205205
validInput = !duplicateVulnerability.isNotNull()
206206
classes = "col-12 mt-3 mb-3 pl-2 pr-2 text-left"
207-
name = "Vulnerability identifier"
207+
name = "Original vulnerability identifier"
208208
onChangeFun = { event ->
209209
setVulnerability { it.copy(vulnerabilityIdentifier = event.target.value) }
210210
setDuplicateVulnerability(null)

save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/fossgraph/FossGraphView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ val fossGraph: FC<FossGraphViewProps> = FC { props ->
190190
hr { }
191191
h6 {
192192
className = ClassName("font-weight-bold text-primary mb-4")
193-
+"Identifier"
193+
+"Original Identifier"
194194
}
195195
div {
196196
+"${vulnerability.vulnerabilityIdentifier}"

0 commit comments

Comments
 (0)