3.7 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
Status
| Finding-Typ | Anzahl | Status |
|---|---|---|
| KRITISCH (CRIT-01–04) | 4 | ✅ BEHOBEN |
| HOCH (HIGH-01–05) | 5 | Offen |
| MITTEL (MED-01–06) | 6 | Offen |
| NIEDRIG (LOW-01–04) | 4 | ✅ BEHOBEN |