Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
83efd78
Edge Case Submission Fixes
thompaar003 Apr 6, 2026
8981d31
Test fixes
thompaar003 Apr 6, 2026
2b87726
Remove Redundant Imports
thompaar003 Apr 6, 2026
7aa85ec
They Were Not Redundant
thompaar003 Apr 6, 2026
22ef034
Attack Submission Fixes
thompaar003 Apr 6, 2026
50bf3df
I'm Losing It
thompaar003 Apr 6, 2026
2166ffc
Test Fixes
thompaar003 Apr 6, 2026
10e252e
Multiple Worker Containers
thompaar003 Apr 6, 2026
ed9bfca
Merge pull request #63 from m4x1m03/aaron-submission-fixes
gmgrahamgm Apr 6, 2026
03b6c7a
Added optional seeding flag
gmgrahamgm Apr 6, 2026
6eedf3e
Added more error handling to evaluate task
gmgrahamgm Apr 6, 2026
e7d78ea
Fixed admin page auto-close overriding manual open close; close 52
gmgrahamgm Apr 6, 2026
fcd018c
Fixed semver spilling; close #52 (forgot the # last time), close #56
gmgrahamgm Apr 6, 2026
7ba647e
Fixed submit alert not having a close button and the page not being s…
gmgrahamgm Apr 6, 2026
857d50e
Cache Monitor Fixes for Concurrency
thompaar003 Apr 6, 2026
0069960
Cache Size Control
thompaar003 Apr 6, 2026
a8ccbbc
Added mobile hamburger, fixed leaderboard mobile view, set leaderboar…
gmgrahamgm Apr 7, 2026
cc767c7
Implemented export CSV's to admin competition page; close #54
gmgrahamgm Apr 7, 2026
e08c6ef
Added cooldown, now appears in submission; close #59
gmgrahamgm Apr 7, 2026
5b8d74e
Added more info to admin job logs. It's not too much- idk specificall…
gmgrahamgm Apr 7, 2026
15eb7c2
Added more information to submission dropdowns (hash, time, source, e…
gmgrahamgm Apr 7, 2026
0d21502
Changed 'Submit Model' to 'Submit Defense', changed color gradient to…
gmgrahamgm Apr 7, 2026
f952a5b
Fixed github [object Object] issue, added more error response handlin…
gmgrahamgm Apr 7, 2026
baa5838
Changed string error message
gmgrahamgm Apr 8, 2026
363087a
Updated tests.
gmgrahamgm Apr 8, 2026
af4f62f
Added git branch-specific model downloading, added tests to boot.
gmgrahamgm Apr 9, 2026
0199d88
Fixed tests- bug was stripping .git from repos
gmgrahamgm Apr 9, 2026
dec6ac0
Added more info for admin job, fixed skip heurval
gmgrahamgm Apr 10, 2026
5a3dc98
Fixed duration and error columns in admin
gmgrahamgm Apr 11, 2026
4c05970
Switched httpx to asyncio.to_thread and requests because httpx was se…
gmgrahamgm Apr 12, 2026
122cab2
Updated to activate on validate, deactivate on evaluation error. Fixe…
gmgrahamgm Apr 12, 2026
2f8df00
Added basic responsiveness to admin
gmgrahamgm Apr 12, 2026
0ea19f8
Added logo
gmgrahamgm Apr 12, 2026
679201c
Adjusted page titles
gmgrahamgm Apr 12, 2026
f53b5ca
Adjusted eval page to be more mobile friendly, added labels to axes
gmgrahamgm Apr 12, 2026
54a6ea0
Merge pull request #69 from m4x1m03/aaron-concurrency-finalization
gmgrahamgm Apr 13, 2026
b3cefd1
Password overhaul, default passwords are listed in .env. Fixed some c…
gmgrahamgm Apr 13, 2026
a60bb42
Prepped NGINX for HTTPS deployment
gmgrahamgm Apr 13, 2026
0aae7e9
Added more coverage for API
gmgrahamgm Apr 13, 2026
f80ab02
Merge pull request #72 from m4x1m03/karl-mfa
thompaar003 Apr 13, 2026
5ae5338
Merge branch 'main' into gram-bugfixing
thompaar003 Apr 13, 2026
ead9cb1
Merge pull request #71 from m4x1m03/gram-bugfixing
thompaar003 Apr 13, 2026
e3a3b22
Merge branch 'aaron-prod-uat' into main
thompaar003 Apr 13, 2026
9a12c98
Revert "Merge branch 'aaron-prod-uat' into main"
thompaar003 Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions .env-example
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
# PostgreSQL
# (Currently hardcoded in docker-compose.yaml)
POSTGRES_USER=mlsec2
POSTGRES_PASSWORD=mlsec2_pw

# MinIO
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
# MinIO Object Storage
MINIO_ROOT_USER=mlsec2
MINIO_ROOT_PASSWORD=mlsec2_pw

# Docker Configuration
DOCKER_GID=999
# RabbitMQ
RABBITMQ_USER=mlsec2
RABBITMQ_PASSWORD=mlsec2_pw

# Gateway Secret
# (Currently hardcoded in docker-compose.yaml, could be moved here if needed)
GATEWAY_SECRET=welovemarcus
GATEWAY_SECRET=mlsec2_pw

# Docker Configuration
DOCKER_GID=999

# VirusTotal API key (for attack similarity evaluation)
# VirusTotal API key (for attack behavioral evaluation)
VIRUSTOTAL_API_KEY=

# Email MFA (SMTP) configuration
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/api_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
--health-retries 5

env:
DATABASE_URL: postgresql://postgres:password123@localhost:5433/mlsec_test
DATABASE_URL: postgresql://mlsec2:mlsec2_pw@localhost:5433/mlsec_test
REDIS_URL: redis://localhost:6379/0

steps:
Expand All @@ -33,7 +33,7 @@ jobs:
- name: Wait for test database readiness
run: |
for i in {1..30}; do
if docker exec test-postgres-db pg_isready -U postgres -d mlsec_test; then
if docker exec test-postgres-db pg_isready -U mlsec2 -d mlsec_test; then
exit 0
fi
sleep 2
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/worker_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ jobs:
runs-on: ubuntu-latest

env:
DATABASE_URL: postgresql://postgres:password123@localhost:5433/mlsec_test
DATABASE_URL: postgresql://mlsec2:mlsec2_pw@localhost:5433/mlsec_test
REDIS_URL: redis://localhost:6379/0
MINIO_ENDPOINT: localhost:9000
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
MINIO_ACCESS_KEY: mlsec2
MINIO_SECRET_KEY: mlsec2_pw
CELERY_BROKER_URL: redis://localhost:6379/1
CELERY_RESULT_BACKEND: redis://localhost:6379/2

Expand All @@ -39,7 +39,7 @@ jobs:
- name: Wait for test database readiness
run: |
for i in {1..30}; do
if docker exec test-postgres-db pg_isready -U postgres -d mlsec_test; then
if docker exec test-postgres-db pg_isready -U mlsec2 -d mlsec_test; then
exit 0
fi
sleep 2
Expand Down
23 changes: 23 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.PHONY: up down build ps logs worker-count

# Parse num_workers from config.yaml
NUM_WORKERS=$(shell awk '/worker:/ {found=1} found && /num_workers:/ {print $$2; exit}' config.yaml)

up:
@echo "Starting platform with $(NUM_WORKERS) workers..."
docker compose up --scale worker=$(NUM_WORKERS)

down:
docker compose down

build:
docker compose build

ps:
docker compose ps

logs:
docker compose logs -f

worker-count:
@echo $(NUM_WORKERS)
14 changes: 8 additions & 6 deletions config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
worker:
num_workers: 4 # number of concurrent Celery worker processes (maps to --concurrency)
num_workers: 4 # number of concurrent Worker containers (Total Possible Competitor Containers = num_workers*batch_size)
defense_job:
mem_limit: "1g"
nano_cpus: 1000000000
Expand All @@ -8,19 +8,19 @@ worker:
max_uncompressed_size_mb: 1024
evaluation:
requests_timeout_seconds: 5
batch_size: 4
batch_size: 2
defense_max_ram: 1024 # MB - soft RAM threshold; sample marked evaded and container restarted if exceeded
defense_max_time: 5000 # ms - per-sample time limit; exceeded = evaded
defense_max_timeout: 20000 # ms - forced restart threshold (must be >= defense_max_time)
defense_max_restarts: 3 # max container restarts before error state
stats_sampling_rate: 25 # Number of samples evaluated before checking container stats again (This has a massive impact on total evaluation time)
heuristic_validation:
enable_heuristic_validation: true
enable_heuristic_validation: false
heurval_malware_fpr_minimum: 0.0
heurval_malware_tpr_minimum: 0.30
heurval_goodware_fpr_minimum: 0.0
heurval_goodware_tpr_minimum: 0.30
reject_heurval_failures: true
reject_heurval_failures: false
source:
# Resource limits
max_zip_size_mb: 512
Expand All @@ -41,9 +41,8 @@ worker:
cleanup_pulled_images: true # Remove pulled images after evaluation (Docker Hub sources only)
minio:
bucket_name: "mlsec-submissions"
access_key: "mlsec_minio_admin"
secret_key: "mlsec_minio_password_change_in_production"
attack:
skip_seeding: true # true = skip template seeding and all behavioral checks
check_similarity: false # false = skip evaluation, accept all validated attacks
reject_dissimilar_attacks: false # only applies when check_similarity=true
# true = reject if score < minimum_attack_similarity
Expand All @@ -52,7 +51,10 @@ worker:
max_zip_size_mb: 100
sandbox_backend: "virustotal" # "virustotal" | "local"
cache_persistence_duration: 300 # seconds of inactivity before clearing the sample cache
cache_max_size_gb: 10 # Maximum size of local sample cache before pruning

application:
login_code: 'ABC'
defense_submission_cooldown: 30 # seconds between defense submissions per user; 0 = no cooldown
attack_submission_cooldown: 30 # seconds between attack submissions per user; 0 = no cooldown
email_mfa_enabled: true
169 changes: 0 additions & 169 deletions docker-compose.prod.yaml

This file was deleted.

Loading
Loading