Moved from jsonb to arrays for olevba results and macros

This commit is contained in:
Johannes Bülow 2025-06-17 17:02:41 +02:00
parent 38feee1360
commit a381ef8cf6
Signed by: jmb
GPG key ID: B56971CF7B8F83A6
4 changed files with 25 additions and 23 deletions

View file

@ -63,8 +63,8 @@ CREATE TABLE IF NOT EXISTS msoffice (
nb_iocs INTEGER, nb_iocs INTEGER,
nb_macros INTEGER, nb_macros INTEGER,
nb_suspicious INTEGER, nb_suspicious INTEGER,
olevba_results JSONB, olevba_results TEXT[][],
macros JSONB macros TEXT[][]
); );
@ -84,6 +84,6 @@ CREATE INDEX idx_processing_jobs_file_id ON processing_jobs (file_id);
CREATE INDEX idx_msoffice_oleid_file_id ON msoffice_oleid (file_id); CREATE INDEX idx_msoffice_oleid_file_id ON msoffice_oleid (file_id);
CREATE INDEX idx_msoffice_olevba_file_id ON msoffice_olevba (file_id); CREATE INDEX idx_msoffice_olevba_file_id ON msoffice_olevba (file_id);
CREATE INDEX idx_msoffice_mraptor_file_id ON msoffice_mraptor (file_id); CREATE INDEX idx_msoffice_mraptor_file_id ON msoffice_mraptor (file_id);
CREATE INDEX idx_msoffice_results_file_id ON msoffice_results (file_id); CREATE INDEX idx_msoffice_results_file_id ON msoffice (file_id);
CREATE INDEX idx_file_properties_id ON file_properties (id); CREATE INDEX idx_file_properties_id ON file_properties (id);
CREATE INDEX idx_file_id ON files (id); CREATE INDEX idx_file_id ON files (id);

View file

@ -1,9 +1,6 @@
package msoffice package msoffice
import ( import (
"encoding/json"
"log/slog"
"git.jmbit.de/jmb/scanfile/server/internal/database" "git.jmbit.de/jmb/scanfile/server/internal/database"
"git.jmbit.de/jmb/scanfile/server/internal/sqlc" "git.jmbit.de/jmb/scanfile/server/internal/sqlc"
) )
@ -24,29 +21,34 @@ func MSOfficeProcessing(job sqlc.ProcessingJob) error {
FileID: job.FileID, FileID: job.FileID,
} }
params.ContainerFormat.String = oleidResp.ContainerFormat params.ContainerFormat.String = oleidResp.ContainerFormat
params.ContainerFormat.Valid = true
params.Encrypted.Bool = oleidResp.Encrypted params.Encrypted.Bool = oleidResp.Encrypted
params.Encrypted.Valid = true
params.FileFormat.String = oleidResp.FileFormat params.FileFormat.String = oleidResp.FileFormat
params.FileFormat.Valid = true
params.VbaMacros.String = oleidResp.VBAMacros params.VbaMacros.String = oleidResp.VBAMacros
params.VbaMacros.Valid = true
params.XlmMacros.String = oleidResp.XLMMacros params.XlmMacros.String = oleidResp.XLMMacros
params.XlmMacros.Valid = true
params.VbaStomping.Bool = olevbaResp.Stomping params.VbaStomping.Bool = olevbaResp.Stomping
params.VbaStomping.Valid = true
params.NbAutoexec.Int32 = int32(olevbaResp.NbAutoexec) params.NbAutoexec.Int32 = int32(olevbaResp.NbAutoexec)
params.NbAutoexec.Valid = true
params.NbIocs.Int32 = int32(olevbaResp.NbIocs) params.NbIocs.Int32 = int32(olevbaResp.NbIocs)
params.NbIocs.Valid = true
params.NbMacros.Int32 = int32(olevbaResp.NbMacros) params.NbMacros.Int32 = int32(olevbaResp.NbMacros)
params.NbIocs.Valid = true
params.NbSuspicious.Int32 = int32(olevbaResp.NbSuspicious) params.NbSuspicious.Int32 = int32(olevbaResp.NbSuspicious)
params.NbSuspicious.Valid = true
params.OlevbaResults, err = json.Marshal(olevbaResp.Results) params.OlevbaResults = olevbaResp.Results
if err != nil { params.Macros = olevbaResp.Macros
slog.Error("Error in MSOfficeProcessing while marshaling olevba results to json", "file-uuid", job.FileID.String(), "error", err, "job-id", job.ID) if olevbaResp.NbSuspicious > 0 || olevbaResp.NbIocs > 0 || olevbaResp.NbAutoexec > 0 {
database.FailProcessingJob(job.ID, err) params.Verdict.String = "suspicious"
return err } else {
} params.Verdict.String = "inconspicous"
}
params.Macros, err = json.Marshal(olevbaResp.Macros) params.Verdict.Valid = true
if err != nil {
slog.Error("Error in MSOfficeProcessing while marshaling macros to json", "file-uuid", job.FileID.String(), "error", err, "job-id", job.ID)
database.FailProcessingJob(job.ID, err)
return err
}
err = database.InsertMSOfficeResults(params) err = database.InsertMSOfficeResults(params)
if err != nil { if err != nil {

View file

@ -48,8 +48,8 @@ type Msoffice struct {
NbIocs pgtype.Int4 NbIocs pgtype.Int4
NbMacros pgtype.Int4 NbMacros pgtype.Int4
NbSuspicious pgtype.Int4 NbSuspicious pgtype.Int4
OlevbaResults []byte OlevbaResults [][]string
Macros []byte Macros [][]string
} }
type MsofficeMraptor struct { type MsofficeMraptor struct {

View file

@ -137,8 +137,8 @@ type InsertMSOfficeResultsParams struct {
NbIocs pgtype.Int4 NbIocs pgtype.Int4
NbMacros pgtype.Int4 NbMacros pgtype.Int4
NbSuspicious pgtype.Int4 NbSuspicious pgtype.Int4
OlevbaResults []byte OlevbaResults [][]string
Macros []byte Macros [][]string
} }
func (q *Queries) InsertMSOfficeResults(ctx context.Context, arg InsertMSOfficeResultsParams) error { func (q *Queries) InsertMSOfficeResults(ctx context.Context, arg InsertMSOfficeResultsParams) error {