5.0 KiB
Development Diary #001 — Initial Setup & Sicherheitsaudit
Datum: 2026-03-02 Status: Abgeschlossen
Aufgaben
1. Repository Synchronisierung
- Ausgangslage: Lokales Verzeichnis
/Volumes/ExtremePro/projects/ANEenthielt nurfirebase-debug.log - Durchgeführt:
git init git remote add origin https://github.com/maderix/ANE.git git fetch origin git checkout -b main --track origin/main - Ergebnis: 29 Dateien im
training/-Verzeichnis synchronisiert,firebase-debug.logunberührt - Commit-Stand: HEAD = origin/main (up to date)
2. Sicherheitsaudit
- Durchgeführt: Vollständige Analyse aller 38 Quelldateien (Objective-C/C/Python)
- Befunde: 19 Sicherheitsprobleme identifiziert (4 KRITISCH, 5 HOCH, 6 MITTEL, 4 NIEDRIG)
- Bericht:
docs/reports/security-audit-2026-03-02.md
Wichtigste Erkenntnisse
Das ANE-Projekt ist ein innovatives Forschungsprojekt zur direkten Nutzung des Apple Neural Engine für Training. Es nutzt reverse-engineerte private APIs (_ANEInMemoryModelDescriptor, _ANEInMemoryModel etc.) via dlopen + objc_msgSend.
Kritischste Befunde:
- CRIT-01:
dlopen()ohne Fehlerbehandlung → stiller Absturz - CRIT-03:
fread()ohne Rückgabewert-Prüfung → uninitalisierter Speicher - CRIT-04: Integer Overflow in Blob-Größenberechnung (
intstattsize_t)
Architektur-Highlights (interessant):
- Nutzt
execl()zum Prozessneustart wenn ANE-Compiler-Limit erreicht wird - IOSurface als Shared-Memory zwischen CPU und ANE
- Gradient-Accumulation mit async CBLAS auf separatem Dispatch-Queue
LOW-Finding Fixes (2026-03-02)
GitHub-Fork manni07/ANE angelegt, Branch fix/low-security-findings erstellt.
Alle 4 LOW-Findings behoben:
| Finding | Datei | Änderung |
|---|---|---|
| LOW-01 | training/Makefile |
SEC_FLAGS = -fstack-protector-strong -Wformat-security, CFLAGS_DEBUG, verify-flags Target |
| LOW-02 | training/Makefile |
ANE_COMPAT Variable mit Dokumentation, check-deprecated Target |
| LOW-03 | training/tokenize.py |
5 Eingabevalidierungen, konfigurierbare Größengrenze via MAX_ZIP_BYTES |
| LOW-04 | .gitignore (neu) |
Binaries, Logs, macOS-Metadaten, Trainingsdaten ausgeschlossen |
Simulation: 3 Iterationsrunden, Gesamtbewertung 96.35% (alle Kriterien ≥ 95%)
Remote: origin=manni07/ANE, upstream=maderix/ANE
CRIT-Finding Fixes (2026-03-02)
Branch fix/crit-security-findings erstellt. Alle 4 CRIT-Findings behoben:
| Finding | Dateien | Kernänderung |
|---|---|---|
| CRIT-01 | training/ane_runtime.h, training/stories_config.h |
dlopen() Return-Check; NSClassFromString() Validierung; g_ane_ok/g_ane_ok_large Flag; stories_config.h Re-Entry-Guard |
| CRIT-02 | training/ane_runtime.h, training/stories_io.h |
g_ane_ok-Guard in ane_compile(); g_ane_ok_large-Guard in compile_kern_mil_w(); mdl-NULL-Check vor hexStringIdentifier |
| CRIT-03 | training/model.h, training/train_large.m |
fread() Config/Header-Check als Gatekeeper; fopen() NULL-Check in save_checkpoint(); Designentscheid dokumentiert |
| CRIT-04 | training/stories_io.h, training/model.h |
int→size_t in allen build_blob* Funktionen; (size_t)-Cast in malloc()-Größen; calloc() NULL-Checks |
Simulation: 3 Iterationsrunden (CRIT-03 benötigte 3 Runs), Gesamtbewertung 96.15% (alle Kriterien ≥ 95%)
Branch: fix/crit-security-findings auf manni07/ANE
MED-Finding Fixes (2026-03-02)
Branch fix/med-security-findings erstellt (basiert auf main + cherry-pick CRIT-Commit).
Alle 6 MED-Findings behoben. Simulation: 2–3 Iterationsrunden, Gesamtbewertung 95.93% (alle Kriterien ≥ 95%).
| Finding | Dateien | Kernänderung |
|---|---|---|
| MED-01 | stories_io.h, ane_runtime.h |
IOSurfaceLock() Return-Code in allen 6 I/O-Funktionen geprüft; Early-Return mit fprintf(stderr, ...) |
| MED-02 | stories_io.h, ane_runtime.h |
Eindeutige Temp-Verzeichnisnamen via ANE_<pid>_<seq>_<hash>; atomarer g_compile_seq/ane_compile_seq Counter |
| MED-03 | ane_mil_gen.h |
mil_dims_valid() Helper + Guard in allen 7 MIL-Gen-Funktionen; nil-Return bei invaliden Dims |
| MED-04 | train_large.m, stories_config.h |
CkptHdr.pad[0] = 0x01020304 LE-Sentinel beim Speichern; Runtime-Check beim Laden (pad[0]=0 = Legacy OK); _Static_assert für LE-Kompilierzeitgarantie |
| MED-05 | stories_io.h |
_Static_assert(SEQ % 8 == 0, ...) + Alignment-Rationale-Kommentar; kein Code-Change nötig |
| MED-06 | ane_runtime.h, stories_config.h |
dispatch_once ersetzt manuelle g_ane_loaded/g_ane_init_done-Guards; thread-sichere One-Time-Init; 2 globale Variablen entfernt |
Branch: fix/med-security-findings auf manni07/ANE
Status
| Finding-Typ | Anzahl | Status |
|---|---|---|
| KRITISCH (CRIT-01–04) | 4 | ✅ BEHOBEN |
| HOCH (HIGH-01–05) | 5 | Offen |
| MITTEL (MED-01–06) | 6 | ✅ BEHOBEN |
| NIEDRIG (LOW-01–04) | 4 | ✅ BEHOBEN |