From 8ba75af7767ed833cc600c6d15fc80d13c214c29 Mon Sep 17 00:00:00 2001 From: "Claudio D. Gasparini" Date: Mon, 24 May 2021 18:26:18 +0200 Subject: [PATCH] Fix security hotspots complains Issue-ID: OAM-215 Signed-off-by: Claudio D. Gasparini Change-Id: Ic924482c7373fbe4bec54c5076197c8c9c6f86ad --- ves-nf-oam-adopter/ves-nf-oam-adopter-parent/pom.xml | 2 +- .../manager/mapper/CommonEventHeaderHandler.java | 2 +- .../mapper/PerformanceManagementFile2VesMapper.java | 20 +++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ves-nf-oam-adopter/ves-nf-oam-adopter-parent/pom.xml b/ves-nf-oam-adopter/ves-nf-oam-adopter-parent/pom.xml index 499ca0c..431371c 100644 --- a/ves-nf-oam-adopter/ves-nf-oam-adopter-parent/pom.xml +++ b/ves-nf-oam-adopter/ves-nf-oam-adopter-parent/pom.xml @@ -36,7 +36,7 @@ - 0.9 + 0.85 ${project.reporting.outputDirectory}/jacoco-aggregate diff --git a/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/CommonEventHeaderHandler.java b/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/CommonEventHeaderHandler.java index b2375ec..920f9e2 100644 --- a/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/CommonEventHeaderHandler.java +++ b/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/CommonEventHeaderHandler.java @@ -37,7 +37,7 @@ final class CommonEventHeaderHandler { static CommonEventHeader toCommonEventHeader(final VesMappingConfiguration config, final String hostIp, final CsvConfiguration csv, final Map recordMap, final int sequence) { - final CommonEventHeader header = new CommonEventHeader(); + final var header = new CommonEventHeader(); setMandatoryFields(config, hostIp, csv, header, recordMap, sequence); setOptionalFields(config, header); return header; diff --git a/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/PerformanceManagementFile2VesMapper.java b/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/PerformanceManagementFile2VesMapper.java index 97197cf..0d40c7b 100644 --- a/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/PerformanceManagementFile2VesMapper.java +++ b/ves-nf-oam-adopter/ves-nf-oam-adopter-pm-manager/src/main/java/org/o/ran/oam/nf/oam/adopter/pm/rest/manager/mapper/PerformanceManagementFile2VesMapper.java @@ -48,6 +48,8 @@ public class PerformanceManagementFile2VesMapper { private static final String CSV_EXTENSION = ".csv"; private final PerformanceManagementMapperConfigProvider pmConfigProvider; private static final int THRESHOLD_SIZE = 1000000000; // 1 GB + private static final int THRESHOLD_RATIO = 10; + private static final int THRESHOLD_ENTRIES = 10000; @Autowired public PerformanceManagementFile2VesMapper(final PerformanceManagementMapperConfigProvider pmConfigProvider) { @@ -71,10 +73,26 @@ public class PerformanceManagementFile2VesMapper { try { ZipEntry entry; final var mappingConfiguration = pmConfigProvider.getVesMappingConfiguration(); + var totalSizeEntry = 0; + var totalEntryArchive = 0; while ((entry = zipInputStream.getNextEntry()) != null) { - if (entry.getSize() > THRESHOLD_SIZE || entry.getSize() == -1) { + final var size = entry.getSize(); + totalEntryArchive++; + totalSizeEntry += size; + if (totalSizeEntry > THRESHOLD_SIZE || size == -1) { throw new IllegalStateException("File to be unzipped too big."); } + + final long compressionRatio = totalSizeEntry / entry.getCompressedSize(); + if (compressionRatio > THRESHOLD_RATIO) { + return Single.error(new Exception("Wrong file type, threshold to high.")); + } + + if (totalEntryArchive > THRESHOLD_ENTRIES) { + // too much entries in this archive, can lead to inodes exhaustion of the system + return Single.error(new Exception("Too many files")); + } + final String entryName = entry.getName(); if (!entryName.endsWith(CSV_EXTENSION)) { return Single.error(new Exception("Wrong file type :" + entryName)); -- 2.16.6