Compare commits
122 Commits
c840028470
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
368cba01a7 | ||
|
|
60c699f2d5 | ||
|
|
afc57a583f | ||
|
|
477e543dee | ||
|
|
86e5dc060e | ||
|
|
f026546362 | ||
|
|
efbf3e60f7 | ||
|
|
146c8bd44b | ||
|
|
456799ca2a | ||
|
|
35f223ecc5 | ||
|
|
f0f945fc58 | ||
|
|
6af1ec4dfe | ||
|
|
ba65f7175c | ||
|
|
e1a9573f1d | ||
|
|
6550706ce3 | ||
|
|
ffbdaf4b7d | ||
|
|
5ce63b3f93 | ||
|
|
1f128b41fa | ||
|
|
b0f066c10b | ||
|
|
45614bdaf5 | ||
|
|
d19f8e0e22 | ||
|
|
644780fbce | ||
|
|
5335f705e2 | ||
|
|
971371e701 | ||
|
|
a75b09d105 | ||
|
|
24d587bf35 | ||
|
|
7a49f1a58c | ||
|
|
6ad35890c5 | ||
|
|
cc1d239abb | ||
|
|
b3883b2fa7 | ||
|
|
b37cd96c89 | ||
|
|
c3fa137fd6 | ||
|
|
e04e064198 | ||
|
|
02ecae0a7f | ||
|
|
f1a7d913c3 | ||
|
|
d7a2481978 | ||
|
|
2f71ec89a1 | ||
|
|
2630eb58fe | ||
|
|
16add5bb69 | ||
|
|
17273fc41a | ||
| b236120978 | |||
|
|
cd22a48d5d | ||
|
|
c6ee57c118 | ||
|
|
189ac1e47c | ||
|
|
a5b9867d64 | ||
|
|
b9732958f9 | ||
|
|
a4766c22b8 | ||
|
|
d54847eac9 | ||
|
|
ebc36f7500 | ||
|
|
547bd6769c | ||
|
|
4c9c6f275e | ||
|
|
2f5edf775e | ||
|
|
c596a8a628 | ||
|
|
857e95621e | ||
|
|
f669f497d9 | ||
|
|
7a21560c97 | ||
|
|
f5e595ea7c | ||
|
|
90af0c99bc | ||
|
|
996e2ae74b | ||
|
|
728765d2df | ||
|
|
4813346dd6 | ||
|
|
eaa4c8ec19 | ||
|
|
1d413aae0e | ||
|
|
2450a46406 | ||
|
|
b8a1cadd92 | ||
|
|
a7af5c230a | ||
|
|
48d97a3db7 | ||
|
|
8b233034de | ||
|
|
17218c8978 | ||
|
|
294d740970 | ||
|
|
3b777ae2ee | ||
|
|
6e2231f44c | ||
|
|
35e0f2d187 | ||
|
|
b0e0a8fa70 | ||
|
|
2885ce1441 | ||
|
|
3af17ae7bc | ||
|
|
1e93d90c3f | ||
|
|
baedc4622e | ||
|
|
fa12c7278b | ||
|
|
04defeb142 | ||
|
|
3f90017f8f | ||
|
|
a3a7490342 | ||
|
|
cf55f25256 | ||
|
|
c63a93671c | ||
|
|
f4a6c2ef1d | ||
|
|
703395f30f | ||
|
|
c0e065f689 | ||
|
|
d44420356a | ||
|
|
e0b4cc02bc | ||
|
|
c0e2c1a0f0 | ||
|
|
40303884ae | ||
|
|
90eba803e5 | ||
|
|
f067286caf | ||
|
|
5f23bb69f6 | ||
|
|
86f0dbeff9 | ||
|
|
7c2b30d317 | ||
|
|
67788162f4 | ||
|
|
1eb9055a06 | ||
|
|
54e46d6b0c | ||
|
|
1f45fb84c8 | ||
|
|
42e32e81ab | ||
|
|
55fff3e83e | ||
|
|
99c63222d1 | ||
|
|
f5d5d16550 | ||
|
|
c9a32aa34f | ||
|
|
dd6fa33567 | ||
|
|
96f486fb50 | ||
|
|
a7d6e06dc5 | ||
|
|
00c38ad8c6 | ||
|
|
9e3a9c0c46 | ||
|
|
2ba20e1022 | ||
|
|
edd7dd79de | ||
|
|
a83db9b79d | ||
|
|
204c731d49 | ||
|
|
105570c6d3 | ||
|
|
13332a5f4b | ||
|
|
38c696687b | ||
|
|
f4f661ddbc | ||
|
|
61500dd1c5 | ||
|
|
20f51f2788 | ||
|
|
7ecd88c7e7 | ||
|
|
f5148e7e85 |
130
content/posts/alert-agent-claude-api-fr.md
Normal file
130
content/posts/alert-agent-claude-api-fr.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: "Remplacer Ollama par Claude API dans un Alert-Agent Docker Swarm"
|
||||
date: 2026-07-21T00:00:00+00:00
|
||||
draft: false
|
||||
tags: ["cybersecurity", "infosec", "homelab", "docker-swarm", "docker", "devops", "selfhosted", "opensource", "build-in-public", "french-tech", "apprendre-la-cyber", "threat-intelligence"]
|
||||
summary: "Mon alert-agent appelait Ollama/Mistral pour prendre des décisions de remédiation. Problème : 40+ secondes de latence, timeouts, et une sévérité figée à 'warning'. Voilà comment j'ai branché Claude Haiku à la place — et pourquoi ça change vraiment quelque chose."
|
||||
description: "Intégration de Claude API (Anthropic) dans un alert-agent Prometheus/Docker Swarm pour remplacer Ollama. Sévérité dynamique, latence réduite de 40s à 2s, architecture multi-backend."
|
||||
author: "Bojemoi"
|
||||
ShowToc: true
|
||||
ShowReadingTime: true
|
||||
---
|
||||
|
||||
Mon homelab tourne sur Docker Swarm avec un pipeline de sécurité continu. Quand Prometheus déclenche une alerte — swap élevé, service crashé, disk plein — un composant que j'appelle l'**alert-agent** reçoit le webhook, enrichit le contexte avec des infos Docker, consulte un LLM pour décider quoi faire, et envoie le résultat sur Telegram.
|
||||
|
||||
Jusqu'ici, ce LLM c'était Ollama avec Mistral:latest, tournant en local sur meta-68.
|
||||
|
||||
Le problème : ça ne fonctionnait plus vraiment.
|
||||
|
||||
## Le Problème avec Ollama
|
||||
|
||||
Ollama était là depuis le début, mais au fil des mois, meta-68 est devenu de plus en plus chargé : MSF teamserver (6 GB RAM), ZAP qui scanne en continu, 15 replicas bm12, 3 replicas uzi... Le modèle Mistral avait du mal à répondre dans les temps.
|
||||
|
||||
En mesurant directement :
|
||||
|
||||
```
|
||||
status: 200 time: 42.9 s
|
||||
{"action":"assistant_response","message":"Understood. I have received a test message..."}
|
||||
```
|
||||
|
||||
**43 secondes.** Et même là, Mistral ignorait le format JSON demandé et répondait en texte libre.
|
||||
|
||||
Avec un timeout à 30s dans le code, chaque alerte finissait en `notify_only` par défaut, sans décision LLM réelle. Le fallback prenait le relais — ce qui était mieux que rien, mais l'agent ne servait plus à grand chose.
|
||||
|
||||
## L'autre Problème : la Sévérité Figée
|
||||
|
||||
Toutes mes alertes arrivaient comme `⚠️ Severity: warning`. Pourquoi ? Parce que la sévérité affichée dans Telegram venait directement du label Prometheus, qui est défini statiquement dans les règles d'alerting.
|
||||
|
||||
`HighSeverityFindingsFound` → `warning`. `NodeHighSwapUsage` → `warning`. `DiskAlmostFull` → `warning`.
|
||||
|
||||
Tout est `warning`. C'est inutile — un swap à 85% sur le manager n'a pas le même impact qu'un disk à 99% sur le worker qui héberge la base MSF.
|
||||
|
||||
## La Solution : Claude API avec Évaluation Dynamique
|
||||
|
||||
J'ai intégré Claude Haiku (Anthropic) comme backend LLM, avec deux changements clés.
|
||||
|
||||
### 1. Architecture multi-backend
|
||||
|
||||
Le backend LLM est maintenant configurable via une variable d'environnement `LLM_BACKEND` :
|
||||
|
||||
```python
|
||||
async def _call_claude(messages: list) -> dict:
|
||||
client = anthropic.AsyncAnthropic(api_key=settings.claude_api_key)
|
||||
system = next((m["content"] for m in messages if m["role"] == "system"), "")
|
||||
user_messages = [m for m in messages if m["role"] != "system"]
|
||||
response = await client.messages.create(
|
||||
model=settings.claude_model,
|
||||
max_tokens=256,
|
||||
system=system,
|
||||
messages=user_messages,
|
||||
)
|
||||
return _extract_json(response.content[0].text)
|
||||
```
|
||||
|
||||
`LLM_BACKEND=claude` active Claude. `LLM_BACKEND=ollama` revient à Mistral local. `LLM_BACKEND=kimi` appellerait Kimi K3 via Moonshot AI. Pas de rebuild nécessaire pour switcher.
|
||||
|
||||
### 2. Sévérité évaluée par le LLM
|
||||
|
||||
J'ai modifié le system prompt pour demander au LLM d'évaluer la sévérité réelle de l'alerte, indépendamment du label Prometheus :
|
||||
|
||||
```
|
||||
Severity levels (assess based on actual risk, ignore Prometheus label):
|
||||
- critical: immediate risk of data loss, service outage, or security breach
|
||||
- high: significant degradation, likely to escalate without action
|
||||
- medium: noticeable issue, should be addressed soon
|
||||
- low: minor issue, informational
|
||||
- info: no real impact
|
||||
|
||||
Respond with ONLY a JSON object:
|
||||
{"action": "<action>", "severity": "<severity>", "reason": "<brief reason>", "params": {}}
|
||||
```
|
||||
|
||||
Le JSON de réponse inclut maintenant un champ `severity` que le LLM choisit lui-même. Ce champ remplace le label Prometheus dans le message Telegram.
|
||||
|
||||
### 3. Emojis adaptatifs
|
||||
|
||||
```python
|
||||
severity_emoji = {
|
||||
"critical": "🔴",
|
||||
"high": "🟠",
|
||||
"medium": "🟡",
|
||||
"low": "🔵",
|
||||
"info": "⚪",
|
||||
}.get(severity or "", "⚠️")
|
||||
```
|
||||
|
||||
## Résultat
|
||||
|
||||
Avant :
|
||||
```
|
||||
🤖 Alert-Agent
|
||||
🔔 Alert: NodeHighSwapUsage
|
||||
⚠️ Severity: warning
|
||||
🧠 LLM decision: notify_only
|
||||
💬 Reason: LLM unavailable: ReadTimeout
|
||||
✅ Action: notify_only
|
||||
```
|
||||
|
||||
Après :
|
||||
```
|
||||
🤖 Alert-Agent
|
||||
🔔 Alert: NodeHighSwapUsage
|
||||
🟠 Severity: high
|
||||
🧠 LLM decision: notify_only
|
||||
💬 Reason: Swap at 85% on the Swarm manager — no Docker service to restart, but warrants monitoring. Escalate if it reaches 95%.
|
||||
✅ Action: notify_only
|
||||
```
|
||||
|
||||
Latence : **2.4 secondes** au lieu de 40+. La sévérité est maintenant contextuelle — le même `NodeHighSwapUsage` peut être `medium` à 60% et `high` à 85%.
|
||||
|
||||
## Ce que j'ai Gardé d'Ollama
|
||||
|
||||
Le stack `51-service-ollama.yml` est conservé avec `replicas: 0`. Si un jour Claude API est indisponible ou trop coûteux, un `docker service scale ollama_ollama=1` + `LLM_BACKEND=ollama` suffit à revenir en arrière.
|
||||
|
||||
C'est l'avantage de l'architecture multi-backend : pas de couplage fort avec un provider.
|
||||
|
||||
## Leçon
|
||||
|
||||
Un LLM local gratuit peut sembler idéal pour ce genre d'usage. Mais quand le node est déjà à 90% de sa capacité RAM/CPU, l'inference locale devient le goulot d'étranglement. À 0.25$ / million de tokens d'input pour Haiku, et avec des alertes qui se déclenchent quelques dizaines de fois par jour au max, le coût mensuel sera probablement inférieur à 1$.
|
||||
|
||||
Parfois, l'API cloud est la solution pragmatique.
|
||||
@@ -20,9 +20,9 @@ author: "Betty"
|
||||
|
||||
### Description
|
||||
|
||||
- Grafana datasources: remplacer \${POSTGRES_PASSWORD} par \$__file{/run/secrets/postgres_password}
|
||||
- Grafana datasources: remplacer ${POSTGRES_PASSWORD} par $__file{/run/secrets/postgres_password}
|
||||
pour PostgreSQL-MSF et PostgreSQL-ThreatIntel (la var d'env était vide → no data)
|
||||
- Sentinel DB: utiliser \$__file{/run/secrets/sentinel_pg_pass}
|
||||
- Sentinel DB: utiliser $__file{/run/secrets/sentinel_pg_pass}
|
||||
- Ajouter sentinel_pg_pass aux secrets Grafana
|
||||
- Bump config grafana-datasources_v5 → v6 (Docker configs immuables)
|
||||
- postfix-exporter: ajouter règle rsyslog (postfix_rsyslog_maillog Docker config)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "[bojemoi] fix(grafana): corriger variable \$node dans Docker Container & Host Metrics"
|
||||
title: "[bojemoi] fix(grafana): corriger variable $node dans Docker Container & Host Metrics"
|
||||
date: 2026-05-29T22:31:56+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "[bojemoi] fix(grafana): ajouter filtre instance=~\$node sur tous les panels Docker Container & Host Metrics"
|
||||
title: "[bojemoi] fix(grafana): ajouter filtre instance=~$node sur tous les panels Docker Container & Host Metrics"
|
||||
date: 2026-05-29T22:28:06+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
|
||||
@@ -20,8 +20,8 @@ author: "Betty"
|
||||
|
||||
### Description
|
||||
|
||||
- Suppression variable \$port (instance=meta-76, pas meta-76:8080)
|
||||
- Remplacement \$node:\$port → \$node dans les queries
|
||||
- Suppression variable $port (instance=meta-76, pas meta-76:8080)
|
||||
- Remplacement $node:$port → $node dans les queries
|
||||
- Variables job et node passées en multi-select avec All
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
|
||||
|
||||
32
content/posts/commits/2026-07-15-commit-fb72e45.md
Normal file
32
content/posts/commits/2026-07-15-commit-fb72e45.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer borodino/thearm_sliver comme traité (2026-07)"
|
||||
date: 2026-07-15T09:00:14+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit fb72e45 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `fb72e45`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `fb72e45a411a280b0b8bc35d4beda0079308b6e3` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-16-commit-10b603b.md
Normal file
39
content/posts/commits/2026-07-16-commit-10b603b.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[bojemoi] fix(pipeline): corriger UID datasource dans dashboard Grafana"
|
||||
date: 2026-07-16T22:07:57+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 10b603b par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `10b603b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `10b603b124a1f1975b71c7f13cb3796c2c93f195` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Remplace ${DS_POSTGRESQL_THREATINTEL} par l'UID réel PD38AB5DA57252E20
|
||||
(PostgreSQL-MSF) pour que les 3 panels chargent sans variable de template.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M volumes/grafana/dashboards/pentest/pipeline.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
volumes/grafana/dashboards/pentest/pipeline.json | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-16-commit-251964d.md
Normal file
32
content/posts/commits/2026-07-16-commit-251964d.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer borodino/thearm_logpull comme traité (2026-07)"
|
||||
date: 2026-07-16T09:01:01+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 251964d par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `251964d`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `251964df3a761229c35be2a7c8bddc01c0cc901c` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
41
content/posts/commits/2026-07-16-commit-751aeb7.md
Normal file
41
content/posts/commits/2026-07-16-commit-751aeb7.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "[bojemoi] fix(pipeline): déplacer pipeline.json vers le bon répertoire Grafana"
|
||||
date: 2026-07-16T21:48:29+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 751aeb7 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `751aeb7`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `751aeb7b227738a55f5226858eab66bf26ad6699` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
volumes/grafana/provisioning/dashboards/ → volumes/grafana/dashboards/pentest/
|
||||
(provisioning path réel = /var/lib/grafana/dashboards, pas /etc/grafana/provisioning)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A volumes/grafana/dashboards/pentest/pipeline.json
|
||||
D volumes/grafana/provisioning/dashboards/pipeline.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
volumes/grafana/dashboards/pentest/pipeline.json | 209 +++++++++++++++++++++
|
||||
.../grafana/provisioning/dashboards/pipeline.json | 209 ---------------------
|
||||
2 files changed, 209 insertions(+), 209 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-16-commit-992ca1f.md
Normal file
39
content/posts/commits/2026-07-16-commit-992ca1f.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[bojemoi] fix(pipeline): dashboard table = 1 ligne par worker (flash en-cours)"
|
||||
date: 2026-07-16T22:21:28+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 992ca1f par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `992ca1f`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `992ca1ff6f94987d92ac74b9f0f1823e4e5ebe60` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
DISTINCT ON (worker) ORDER BY worker, started_at DESC
|
||||
→ affiche uniquement le module le plus récent de chaque worker
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M volumes/grafana/dashboards/pentest/pipeline.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
volumes/grafana/dashboards/pentest/pipeline.json | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
50
content/posts/commits/2026-07-16-commit-b4518c6.md
Normal file
50
content/posts/commits/2026-07-16-commit-b4518c6.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "[borodino] feat(pipeline): table pipeline + tracking par module pour uzi/nuclei/sliver"
|
||||
date: 2026-07-16T21:35:04+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b4518c6 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `b4518c6`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `b4518c6da30d72150b3b6c836156df6de1ef8f48` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Ajoute une table `pipeline` (CREATE TABLE IF NOT EXISTS au boot de chaque
|
||||
worker) pour tracer la progression en temps réel :
|
||||
- UZI : 1 ligne par module exploit (status running→ok/pwned/failed)
|
||||
- Nuclei : 1 ligne par target scannée (detail = findings count)
|
||||
- Sliver : 1 ligne par tentative de déploiement (detail = session info)
|
||||
|
||||
Fonctions helpers : pipeline_start/end dans chaque worker.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
M thearm_nuclei
|
||||
M thearm_sliver/thearm_sliver
|
||||
M thearm_uzi
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 1 +
|
||||
thearm_nuclei | 69 ++++++++++++++++++++++++++++++++
|
||||
thearm_sliver/thearm_sliver | 59 +++++++++++++++++++++++++++-
|
||||
thearm_uzi | 91 +++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 219 insertions(+), 1 deletion(-)
|
||||
```
|
||||
43
content/posts/commits/2026-07-16-commit-b662979.md
Normal file
43
content/posts/commits/2026-07-16-commit-b662979.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] feat(pipeline): tracking ZAP + dashboard Grafana Borodino Pipeline"
|
||||
date: 2026-07-16T21:37:05+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b662979 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `b662979`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `b662979b8df3196512b77b07df0834233a2d5fee` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- zap_scanner.py : pipeline_start/end_zap dans ActiveScan, ensure_pipeline_table
|
||||
au démarrage — 1 ligne par scan avec étapes spider_start→ok/failed/skipped
|
||||
- pipeline.json : dashboard Grafana (refresh 30s) avec 3 panels :
|
||||
table état courant workers, timeseries modules/min (1h), piechart résultats (24h)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M oblast-1/zap_scanner.py
|
||||
A volumes/grafana/provisioning/dashboards/pipeline.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
oblast-1/zap_scanner.py | 75 +++++++-
|
||||
.../grafana/provisioning/dashboards/pipeline.json | 209 +++++++++++++++++++++
|
||||
2 files changed, 279 insertions(+), 5 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-16-commit-c01fa0c.md
Normal file
39
content/posts/commits/2026-07-16-commit-c01fa0c.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[borodino] fix(nuclei): strip CIDR /32 de l'adresse dans pipeline"
|
||||
date: 2026-07-16T22:13:46+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit c01fa0c par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `c01fa0c`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `c01fa0c28c43ad0306b3e6c6c62a4b287cc2e359` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
h.address::text → host(h.address) dans pick_target (DB fallback)
|
||||
+ split('/')[0] sur les adresses issues de la queue Valkey
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_nuclei
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_nuclei | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-17-commit-1e73eb0.md
Normal file
39
content/posts/commits/2026-07-17-commit-1e73eb0.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[bojemoi] fix(zap): flush session ZAP immédiatement après chaque scan terminé"
|
||||
date: 2026-07-17T23:46:49+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 1e73eb0 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `1e73eb0`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `1e73eb06e8372e8d59bb98f7794109fbf0b4adec` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Appel zap_new_session() après la fin de l'active scan pour libérer
|
||||
la mémoire JVM/tmpfs sans attendre le scan suivant.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M oblast-1/zap_scanner.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
oblast-1/zap_scanner.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
```
|
||||
32
content/posts/commits/2026-07-17-commit-e679b62.md
Normal file
32
content/posts/commits/2026-07-17-commit-e679b62.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer borodino/msf_import.py comme traité (2026-07)"
|
||||
date: 2026-07-17T09:00:44+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit e679b62 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `e679b62`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `e679b621c0324f87ebf943e3a6d5f8484d16356e` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
45
content/posts/commits/2026-07-18-commit-12f85bb.md
Normal file
45
content/posts/commits/2026-07-18-commit-12f85bb.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: "[bojemoi] feat(nuclei): bake template CVE-2026-63030 wp2shell dans l'image"
|
||||
date: 2026-07-18T23:20:59+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 12f85bb par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `12f85bb`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `12f85bb451abfd660d2654753addecfcdc29353a` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- Dockerfile.nuclei : COPY nuclei-templates/ → /root/nuclei-templates/
|
||||
- nuclei-templates/cves/2026/cve-2026-63030-wp2shell.yaml : détection
|
||||
WordPress 6.9.0-6.9.4 / 7.0.0-7.0.1 via flow conditionnel
|
||||
(version check + batch route-confusion probe /wp-json/batch/v1)
|
||||
- Tag wordpress dans PRODUCT_TAG_MAP → sélection automatique par nuclei-worker
|
||||
- Image rebuiltée et service borodino_nuclei updaté (2026-07-18)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M samsonov/Dockerfile.nuclei
|
||||
A samsonov/nuclei-templates/cves/2026/cve-2026-63030-wp2shell.yaml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
samsonov/Dockerfile.nuclei | 3 +
|
||||
.../cves/2026/cve-2026-63030-wp2shell.yaml | 89 ++++++++++++++++++++++
|
||||
2 files changed, 92 insertions(+)
|
||||
```
|
||||
32
content/posts/commits/2026-07-18-commit-b532897.md
Normal file
32
content/posts/commits/2026-07-18-commit-b532897.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer borodino/osint_lookup.py comme traité (2026-07)"
|
||||
date: 2026-07-18T09:00:58+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b532897 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `b532897`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `b5328970349dbeca28037d502eec8b0a207ef8e1` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
42
content/posts/commits/2026-07-19-commit-2b1a9dc.md
Normal file
42
content/posts/commits/2026-07-19-commit-2b1a9dc.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "[borodino] feat(uzi): prioriser SSH et HTTP panels dans pick_next_host"
|
||||
date: 2026-07-19T23:57:54+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 2b1a9dc par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `2b1a9dc`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `2b1a9dc5781a291193bd14e0e8097c6bd00d3b79` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Avant: TABLESAMPLE SYSTEM(0.5) purement aléatoire.
|
||||
Après: 3 niveaux de priorité basés sur l'historique des pwns :
|
||||
1. Priorité 1 — port 22/tcp ouvert (ssh_login : 5 pwns historiques)
|
||||
2. Priorité 2 — panel HTTP (login/admin/panel/phpmyadmin/webmin)
|
||||
3. Fallback — TABLESAMPLE aléatoire (comportement précédent)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_uzi
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_uzi | 42 +++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 39 insertions(+), 3 deletions(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-19-commit-30f5a54.md
Normal file
32
content/posts/commits/2026-07-19-commit-30f5a54.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/39-service-borodino-msf.yml comme traité (2026-07)"
|
||||
date: 2026-07-19T09:00:41+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 30f5a54 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `30f5a54`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `30f5a541832ca98d8878a4d0c5dc0f2b4a54b6ed` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
42
content/posts/commits/2026-07-19-commit-4ceae78.md
Normal file
42
content/posts/commits/2026-07-19-commit-4ceae78.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "[borodino] feat(uzi): prioriser SSH et HTTP panels dans pick_next_host"
|
||||
date: 2026-07-19T23:57:54+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 4ceae78 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `4ceae78`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `4ceae7831f8bfdb619853cb38a3dce6357715eff` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Avant: TABLESAMPLE SYSTEM(0.5) purement aléatoire.
|
||||
Après: 3 niveaux de priorité basés sur l'historique des pwns :
|
||||
1. Priorité 1 — port 22/tcp ouvert (ssh_login : 5 pwns historiques)
|
||||
2. Priorité 2 — panel HTTP (login/admin/panel/phpmyadmin/webmin)
|
||||
3. Fallback — TABLESAMPLE aléatoire (comportement précédent)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_uzi
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_uzi | 42 +++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 39 insertions(+), 3 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-20-commit-338422a.md
Normal file
39
content/posts/commits/2026-07-20-commit-338422a.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[bojemoi] fix(opsec): désactiver Traefik dashboard insecure sur port 8080"
|
||||
date: 2026-07-20T15:02:38+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 338422a par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `338422a`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `338422a10268d977ae51757c778c7c6b671faba4` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Supprime --api.insecure=true de la config Traefik.
|
||||
Dashboard accessible uniquement via HTTPS + basicauth sur traefik.bojemoi.lab.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/00-service-boot.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/00-service-boot.yml | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
```
|
||||
57
content/posts/commits/2026-07-20-commit-504fd85.md
Normal file
57
content/posts/commits/2026-07-20-commit-504fd85.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: "[borodino] feat(campagne-nginx): campagne CVE-2026-42533 + misconfigs nginx"
|
||||
date: 2026-07-20T16:58:17+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 504fd85 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `504fd85`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `504fd8567391b36a0dac1efb76aec8f76700bc19` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- thearm_campagne_nginx: worker qui sélectionne les hosts nginx (bm12_v3)
|
||||
depuis MSF DB, probe HTTP (version + misconfigs), dispatch vers nuclei queue
|
||||
- Templates Nuclei: cve-2026-42533, alias-traversal, stub-status,
|
||||
crlf-injection, proxy-headers-ssrf
|
||||
- Service campagne-nginx-service (1 replica, meta-68)
|
||||
- Findings pushés vers DefectDojo + Telegram sur vuln/misconfig détectée
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M Dockerfile.borodino
|
||||
A nuclei-templates/cves/2026/cve-2026-42533-nginx.yaml
|
||||
A nuclei-templates/misconfigs/nginx/nginx-alias-traversal.yaml
|
||||
A nuclei-templates/misconfigs/nginx/nginx-crlf-injection.yaml
|
||||
A nuclei-templates/misconfigs/nginx/nginx-proxy-headers-ssrf.yaml
|
||||
A nuclei-templates/misconfigs/nginx/nginx-stub-status.yaml
|
||||
M stack/40-service-borodino.yml
|
||||
A thearm_campagne_nginx
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
Dockerfile.borodino | 1 +
|
||||
.../cves/2026/cve-2026-42533-nginx.yaml | 42 ++
|
||||
.../misconfigs/nginx/nginx-alias-traversal.yaml | 36 ++
|
||||
.../misconfigs/nginx/nginx-crlf-injection.yaml | 26 ++
|
||||
.../misconfigs/nginx/nginx-proxy-headers-ssrf.yaml | 43 +++
|
||||
.../misconfigs/nginx/nginx-stub-status.yaml | 37 ++
|
||||
stack/40-service-borodino.yml | 30 ++
|
||||
thearm_campagne_nginx | 429 +++++++++++++++++++++
|
||||
8 files changed, 644 insertions(+)
|
||||
```
|
||||
40
content/posts/commits/2026-07-20-commit-5d00256.md
Normal file
40
content/posts/commits/2026-07-20-commit-5d00256.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[bojemoi] fix(opsec): fermer port 4444 sur bojemoi.me (nginx lightsail)"
|
||||
date: 2026-07-20T14:21:11+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 5d00256 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `5d00256`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `5d00256035180a1bc365d0aadca0223b18f0bcb9` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Bloc stream listen 4444 commenté dans nginx.conf — port MSF handler
|
||||
précédemment exposé publiquement via relay direct bojemoi.me:4444.
|
||||
La chaîne C2 active passe exclusivement par Fly.io:443 → VPN → lab.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M lightsail/etc/nginx/nginx.conf
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
lightsail/etc/nginx/nginx.conf | 44 ++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 38 insertions(+), 6 deletions(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-20-commit-971b899.md
Normal file
32
content/posts/commits/2026-07-20-commit-971b899.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/40-service-borodino.yml comme traité (2026-07)"
|
||||
date: 2026-07-20T09:01:11+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 971b899 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `971b899`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `971b899a7a437e41320b3d350bc4cb5ee1d64aa9` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
40
content/posts/commits/2026-07-20-commit-bc08e54.md
Normal file
40
content/posts/commits/2026-07-20-commit-bc08e54.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[bojemoi] fix(mcp): corriger le target du secret postgres_password"
|
||||
date: 2026-07-20T15:24:30+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit bc08e54 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `bc08e54`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `bc08e54b900c75106dcae7b171c4fb6e6642a013` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Le package bojemoi lit /run/secrets/postgres_password mais le secret
|
||||
était monté sans target (nom: mcp_pg_password). Ajout de target:
|
||||
postgres_password pour corriger l'auth psycopg2.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/49-service-mcp.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/49-service-mcp.yml | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
40
content/posts/commits/2026-07-21-commit-01433ed.md
Normal file
40
content/posts/commits/2026-07-21-commit-01433ed.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[borodino] fix(uzi): scale à 1 replica — msfrpcd est mono-tâche"
|
||||
date: 2026-07-21T21:35:53+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 01433ed par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `01433ed`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `01433ed139e5e6b22416b3f4386c0ead7f1b1d09` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Les 3 replicas UZI appelaient tous le même msfrpcd via RPC.
|
||||
Comme msfrpcd sérialise les requêtes, les 2 replicas supplémentaires
|
||||
attendaient leur tour sans rien faire — débit réel identique à 1 replica.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-21-commit-094d752.md
Normal file
32
content/posts/commits/2026-07-21-commit-094d752.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/00-service-boot.yml comme traité (2026-07)"
|
||||
date: 2026-07-21T09:00:52+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 094d752 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `094d752`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `094d7526e87840aa24c684e631739544fb89d990` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
38
content/posts/commits/2026-07-21-commit-1180f7c.md
Normal file
38
content/posts/commits/2026-07-21-commit-1180f7c.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "[bojemoi] chore(memory): mise à jour alert-agent — anthropic_api_key canonique + fix pydantic v2"
|
||||
date: 2026-07-21T20:49:57+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 1180f7c par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `1180f7c`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `1180f7c51b7f262a9b0abc2c0e18aef67438e30f` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M .claude/agent-memory/infra-daily-monitor/MEMORY.md
|
||||
M .claude/agent-memory/pipeline/MEMORY.md
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/infra-daily-monitor/MEMORY.md | 101 +++++++++++++++++----
|
||||
.claude/agent-memory/pipeline/MEMORY.md | 30 +++---
|
||||
2 files changed, 99 insertions(+), 32 deletions(-)
|
||||
```
|
||||
56
content/posts/commits/2026-07-21-commit-3217f0b.md
Normal file
56
content/posts/commits/2026-07-21-commit-3217f0b.md
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: "[bojemoi] feat(alert-agent): intégration Claude API (Haiku) comme backend LLM principal"
|
||||
date: 2026-07-21T20:23:41+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 3217f0b par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `3217f0b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `3217f0b22abb1c42444282a068e544257b0dc725` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Remplace Ollama (trop lent) par Claude API (Anthropic). Le backend est
|
||||
sélectionnable via LLM_BACKEND: claude/kimi/ollama. Le LLM évalue
|
||||
désormais la sévérité réelle de l'alerte (critical/high/medium/low/info)
|
||||
indépendamment du label Prometheus.
|
||||
|
||||
- llm.py: ajout _call_claude + _extract_json pour parser la réponse
|
||||
- config.py: claude_api_key (secret), claude_model, llm_backend=claude
|
||||
- requirements.txt: anthropic>=0.40
|
||||
- alerter.py: emoji selon sévérité LLM (🔴🟠🟡🔵⚪)
|
||||
- webhook.py: sévérité Telegram = decision["severity"] (LLM) > label Prometheus
|
||||
- stack: LLM_BACKEND=claude, secret claude_api_key monté
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M alert-agent/alert_agent/__main__.py
|
||||
M alert-agent/alert_agent/config.py
|
||||
M alert-agent/alert_agent/llm.py
|
||||
M alert-agent/requirements.txt
|
||||
M stack/48-service-alert-agent.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/__main__.py | 2 +-
|
||||
alert-agent/alert_agent/config.py | 11 +++++++--
|
||||
alert-agent/alert_agent/llm.py | 48 +++++++++++++++++++++++++++++++++----
|
||||
alert-agent/requirements.txt | 1 +
|
||||
stack/48-service-alert-agent.yml | 6 ++++-
|
||||
5 files changed, 59 insertions(+), 9 deletions(-)
|
||||
```
|
||||
41
content/posts/commits/2026-07-21-commit-401e813.md
Normal file
41
content/posts/commits/2026-07-21-commit-401e813.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "[bojemoi] chore(ollama): scale à 0 — remplacé par Claude API dans alert-agent"
|
||||
date: 2026-07-21T20:32:49+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 401e813 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `401e813`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `401e813d65e00f9f6f1f0a0ecde769984788fd2d` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
alert-agent utilise désormais LLM_BACKEND=claude (Claude Haiku).
|
||||
Ollama conservé dans le stack pour réactivation future si besoin.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M alert-agent/alert_agent/webhook.py
|
||||
M stack/51-service-ollama.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/webhook.py | 2 +-
|
||||
stack/51-service-ollama.yml | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
50
content/posts/commits/2026-07-21-commit-afd4b2c.md
Normal file
50
content/posts/commits/2026-07-21-commit-afd4b2c.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "[bojemoi] feat(alert-agent): intégration Kimi K3 (Moonshot AI) comme backend LLM"
|
||||
date: 2026-07-21T19:52:04+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit afd4b2c par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `afd4b2c`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `afd4b2c1c71b19410ef6f8402735f8f54c1bce94` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Remplace Ollama (abandonné) par Kimi K3 via API Moonshot. Le backend
|
||||
est configurable via LLM_BACKEND ("kimi" ou "ollama") sans rebuild.
|
||||
|
||||
- llm.py: refactor en _call_kimi/_call_ollama, dispatch selon config
|
||||
- config.py: ajout kimi_api_key (secret), kimi_model, llm_backend
|
||||
- stack: secret kimi_api_key monté, LLM_BACKEND=kimi par défaut
|
||||
- fallback LLM unavailable → notify_only (au lieu de noop)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M alert-agent/alert_agent/__main__.py
|
||||
M alert-agent/alert_agent/config.py
|
||||
M alert-agent/alert_agent/llm.py
|
||||
M stack/48-service-alert-agent.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/__main__.py | 4 +--
|
||||
alert-agent/alert_agent/config.py | 12 +++++++-
|
||||
alert-agent/alert_agent/llm.py | 60 ++++++++++++++++++++++---------------
|
||||
stack/48-service-alert-agent.yml | 5 ++++
|
||||
4 files changed, 54 insertions(+), 27 deletions(-)
|
||||
```
|
||||
44
content/posts/commits/2026-07-21-commit-b31c4f4.md
Normal file
44
content/posts/commits/2026-07-21-commit-b31c4f4.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "[bojemoi] refactor(alert-agent): consolider sur anthropic_api_key (secret canonique)"
|
||||
date: 2026-07-21T20:48:28+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b31c4f4 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `b31c4f4`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `b31c4f4e052e22e3267e68820ee0cabcbfa93f2f` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- config.py: _build_settings() avec model_copy() pour appliquer les secrets
|
||||
après init pydantic (fix: assignation self.x = y ignorée par pydantic v2)
|
||||
- Lecture anthropic_api_key en priorité, claude_api_key en fallback
|
||||
- Stack: claude_api_key → anthropic_api_key
|
||||
- Secret claude_api_key supprimé
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M alert-agent/alert_agent/config.py
|
||||
M stack/48-service-alert-agent.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/config.py | 52 +++++++++++++++++++++++----------------
|
||||
stack/48-service-alert-agent.yml | 4 +--
|
||||
2 files changed, 33 insertions(+), 23 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-21-commit-b8aef4e.md
Normal file
39
content/posts/commits/2026-07-21-commit-b8aef4e.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[bojemoi] chore(alert-agent): basculer LLM_BACKEND sur ollama (pas de crédit Moonshot)"
|
||||
date: 2026-07-21T19:57:12+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b8aef4e par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `b8aef4e`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `b8aef4e093a7c0ff28448833e22528089b000ae9` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Kimi K3 intégré mais désactivé faute de crédit. Repasser sur "kimi"
|
||||
et redéployer dès que le compte est crédité.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/48-service-alert-agent.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/48-service-alert-agent.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
44
content/posts/commits/2026-07-21-commit-f2c208e.md
Normal file
44
content/posts/commits/2026-07-21-commit-f2c208e.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "[bojemoi] fix(alert-agent): corriger le chat_id Telegram"
|
||||
date: 2026-07-21T20:30:20+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit f2c208e par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `f2c208e`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `f2c208e36ad080c37ec8abd5e7b925cba0161cbb` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Créer secret dédié alert_agent_chat_id (-1003898435028 / @bojemoi_ptaas)
|
||||
avec priorité sur telegram_chat_id (valeur incorrecte partagée).
|
||||
Ajouter log du body d'erreur Telegram pour debug futur.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M alert-agent/alert_agent/alerter.py
|
||||
M alert-agent/alert_agent/config.py
|
||||
M stack/48-service-alert-agent.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/alerter.py | 13 ++++++++++++-
|
||||
alert-agent/alert_agent/config.py | 3 ++-
|
||||
stack/48-service-alert-agent.yml | 3 +++
|
||||
3 files changed, 17 insertions(+), 2 deletions(-)
|
||||
```
|
||||
36
content/posts/commits/2026-07-22-commit-05e7b48.md
Normal file
36
content/posts/commits/2026-07-22-commit-05e7b48.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "[bojemoi] chore(ollama): scale à 0 — T400 trop lent pour inférence LLM"
|
||||
date: 2026-07-22T18:07:00+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 05e7b48 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `05e7b48`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `05e7b48118e7debb8d1c636b078e156bc9738c51` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/51-service-ollama.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/51-service-ollama.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-22-commit-0eb924b.md
Normal file
32
content/posts/commits/2026-07-22-commit-0eb924b.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/01-service-hl.yml comme traité (2026-07)"
|
||||
date: 2026-07-22T09:01:16+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 0eb924b par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `0eb924b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `0eb924b1eebfe8e04f5b54350cd5cc9a857351f2` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
43
content/posts/commits/2026-07-22-commit-5f62eb5.md
Normal file
43
content/posts/commits/2026-07-22-commit-5f62eb5.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] security(network): isoler postgres du réseau pentest pour les workers"
|
||||
date: 2026-07-22T17:14:57+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 5f62eb5 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `5f62eb5`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `5f62eb522c088d2c5a78a89725d6c06a08be5bc4` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Ajoute le réseau pentest au service postgres afin que les workers
|
||||
borodino (ak47, bm12, uzi, zap, nuclei, sliver, masscan) puissent
|
||||
y accéder sans passer par backend.
|
||||
|
||||
Contexte: suite à l'incident OpenAI/HuggingFace (2026-07-22), réduction
|
||||
de la blast radius en cas de compromission d'un worker via input hostile.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/01-service-hl.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/01-service-hl.yml | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
```
|
||||
44
content/posts/commits/2026-07-22-commit-bb33293.md
Normal file
44
content/posts/commits/2026-07-22-commit-bb33293.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "[bojemoi] feat(ollama): réactiver comme fallback forensique IR (replicas: 1)"
|
||||
date: 2026-07-22T17:58:54+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit bb33293 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `bb33293`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `bb3329336b1b2ac178f2e315bc608dd2f504de86` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Suite à l'incident HuggingFace (2026-07-22) qui a démontré que les LLMs
|
||||
via API commerciale refusent d'analyser des payloads malveillants pendant
|
||||
un IR (asymmetry problem).
|
||||
|
||||
Ollama + Mistral 7B tourne sur meta-68 (nvidia.vgpu) comme fallback
|
||||
local sans guardrails pour l'analyse forensique. Alert-agent reste sur
|
||||
Claude API (LLM_BACKEND=claude). Scale à 0 si inutilisé.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/51-service-ollama.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/51-service-ollama.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-23-commit-6dcd4e0.md
Normal file
32
content/posts/commits/2026-07-23-commit-6dcd4e0.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/01-suricata-host.yml comme traité (2026-07)"
|
||||
date: 2026-07-23T09:01:11+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 6dcd4e0 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `6dcd4e0`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `6dcd4e078ce724be42b42527bb9f0ef0477975de` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-24-commit-20b514f.md
Normal file
39
content/posts/commits/2026-07-24-commit-20b514f.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[borodino] fix(bm12): réduire le défaut de replicas à 5 (max par node = 5, 1 seul worker)"
|
||||
date: 2026-07-24T14:35:55+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 20b514f par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `20b514f`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `20b514f8fc3c87c3cb059a380e3ca6c7e7bd0e39` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Avec un seul worker (meta-68) et max_replicas_per_node=5, 10 replicas
|
||||
causaient 5 tâches en Pending indefiniment. Le défaut passe à 5.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
40
content/posts/commits/2026-07-24-commit-3e07356.md
Normal file
40
content/posts/commits/2026-07-24-commit-3e07356.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[borodino] fix(telegram): améliorer le message de fin de traitement"
|
||||
date: 2026-07-24T18:57:49+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 3e07356 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `3e07356`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `3e07356f93d402ea76d924419218b04b84c5c7b3` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- "Campagne terminée" → "Traitement terminé"
|
||||
- Raison sur ligne séparée avec icône ⏱
|
||||
- UZI: affiche clairement pwned/clean/non traité au lieu de "?"
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M sdk/bojemoi/telegram.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
sdk/bojemoi/telegram.py | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-24-commit-d36e14e.md
Normal file
32
content/posts/commits/2026-07-24-commit-d36e14e.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/02-init-ptaas.yml comme traité (2026-07)"
|
||||
date: 2026-07-24T09:01:13+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit d36e14e par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `d36e14e`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `d36e14ea385a1a7f2d6440930d17788a9f263f3f` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
39
content/posts/commits/2026-07-24-commit-f7a51ef.md
Normal file
39
content/posts/commits/2026-07-24-commit-f7a51ef.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[borodino] fix(campagne-nginx): supprimer send_telegram par CVE — trop verbeux"
|
||||
date: 2026-07-24T22:46:36+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit f7a51ef par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `f7a51ef`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `f7a51ef9a96e39a6e7653c8abab4392855ecaebb` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Un message était envoyé pour chaque host vulnérable à CVE-2026-42533.
|
||||
Les findings sont conservés dans DefectDojo uniquement.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_campagne_nginx
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_campagne_nginx | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
```
|
||||
36
content/posts/commits/2026-07-25-commit-612c333.md
Normal file
36
content/posts/commits/2026-07-25-commit-612c333.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "[borodino] feat(orchestrator): CAMPAIGN_TIMEOUT 7200 → 14400s"
|
||||
date: 2026-07-25T22:33:24+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 612c333 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `612c333`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `612c333e4c8bc7bde040a9748c6524125e4c71b6` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
32
content/posts/commits/2026-07-25-commit-955980d.md
Normal file
32
content/posts/commits/2026-07-25-commit-955980d.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "[bojemoi] chore(review): marquer stack/02-service-maintenance.yml comme traité (2026-07)"
|
||||
date: 2026-07-25T09:01:03+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 955980d par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `955980d`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `955980da893c21c4b1bcef8f85cf68f843c7cf23` |
|
||||
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M claude/state.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
42
content/posts/commits/2026-07-25-commit-a1f81e8.md
Normal file
42
content/posts/commits/2026-07-25-commit-a1f81e8.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "[borodino] perf(uzi): réduire timeout check_target 15s → 5s"
|
||||
date: 2026-07-25T22:18:25+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit a1f81e8 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `a1f81e8`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `a1f81e8f17b9b3aedbf051b9d0cc37a4106a7d0e` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
check_target attendait jusqu'à 15s par module MSF.
|
||||
Sur des hosts avec ports 80/443 ouverts (~1000 modules linux/http testés),
|
||||
ça causait des runs de 10-12h par host.
|
||||
5s suffisent — si la console MSF n'est pas ready en 5s, le check est de toute
|
||||
façon inconclus et on procède.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_uzi
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_uzi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
43
content/posts/commits/2026-07-25-commit-b98fc33.md
Normal file
43
content/posts/commits/2026-07-25-commit-b98fc33.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] feat(orchestrator): réduire spam Telegram campagnes"
|
||||
date: 2026-07-25T22:33:00+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit b98fc33 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `b98fc33`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `b98fc335bc4a77aeabebe166a243d35712979c5e` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Option A: send_telegram_campaign_done conditionnel — notifier uniquement
|
||||
si résultat intéressant (pwned, nuclei/zap critical/high, sliver).
|
||||
Les timeouts sans findings sont silencieux.
|
||||
|
||||
Option B: CAMPAIGN_TIMEOUT 7200s → 14400s (4h) dans le stack.
|
||||
Donne plus de temps à UZI avant de basculer en recon.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M samsonov/pentest_orchestrator/main.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
samsonov/pentest_orchestrator/main.py | 26 ++++++++++++++++++++++++--
|
||||
1 file changed, 24 insertions(+), 2 deletions(-)
|
||||
```
|
||||
44
content/posts/commits/2026-07-25-commit-f9d55e6.md
Normal file
44
content/posts/commits/2026-07-25-commit-f9d55e6.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "[bojemoi] feat(dojo-triage): remplacer Ollama/Mistral par Claude Haiku"
|
||||
date: 2026-07-25T21:59:50+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit f9d55e6 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `f9d55e6`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `f9d55e6377bf99aeebf7afc43ced43549a77f6da` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- Ollama étant arrêté (scale=0), les findings LLM étaient tous skippés
|
||||
- Remplace ask_mistral() par ask_claude() avec anthropic SDK synchrone
|
||||
- Ajoute secret anthropic_api_key au service
|
||||
- Augmente mémoire 256M→512M / réservation 64M→128M
|
||||
- Corrige aussi enable_simple_risk_acceptance sur tous les produits DefectDojo (fix PATCH 400)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M dojo-triage/requirements.txt
|
||||
M dojo-triage/triage.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
dojo-triage/requirements.txt | 1 +
|
||||
dojo-triage/triage.py | 76 ++++++++++++++++++++++++++++----------------
|
||||
2 files changed, 50 insertions(+), 27 deletions(-)
|
||||
```
|
||||
43
content/posts/commits/2026-07-31-commit-6bd1758.md
Normal file
43
content/posts/commits/2026-07-31-commit-6bd1758.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] chore(memory): mise à jour mémoires agents après session 2026-07-31"
|
||||
date: 2026-07-31T21:33:55+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 6bd1758 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `6bd1758`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `6bd175898da47215595fc3df3f4136c96f48b6bf` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- infra-daily-monitor: check 21:13 UTC (3 services récupérés, ZAP redémarré,
|
||||
disk meta-76 à 80%), Ollama confirmé à 0, VPN status actualisé
|
||||
- pipeline: état 19:09 UTC (AK47 actif, ZAP dégradé newSession, UZI faible
|
||||
activité, Sliver idle)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M .claude/agent-memory/infra-daily-monitor/MEMORY.md
|
||||
M .claude/agent-memory/pipeline/MEMORY.md
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/infra-daily-monitor/MEMORY.md | 215 ++++-----------------
|
||||
.claude/agent-memory/pipeline/MEMORY.md | 30 +--
|
||||
2 files changed, 55 insertions(+), 190 deletions(-)
|
||||
```
|
||||
40
content/posts/commits/2026-07-31-commit-df1b9ab.md
Normal file
40
content/posts/commits/2026-07-31-commit-df1b9ab.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[bojemoi] feat(cti): layer ATT&CK Navigator — Operation Talked (UAC-0056/UAC-0114)"
|
||||
date: 2026-07-31T23:49:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit df1b9ab par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `df1b9ab`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `df1b9ab1998d6da1093156be7a2556ddc0bfe262` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
16 techniques MITRE mappées depuis le rapport SOCRadar du 2026-07-29.
|
||||
Campagne Russia-nexus active juin 2025 - juillet 2026, ciblant le secteur
|
||||
défense/aérospatiale ukrainien.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A cti/operation-talked-navigator.json
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
cti/operation-talked-navigator.json | 258 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 258 insertions(+)
|
||||
```
|
||||
43
content/posts/commits/2026-08-03-commit-19b1424.md
Normal file
43
content/posts/commits/2026-08-03-commit-19b1424.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] fix(nuclei-api): handle JSON array output format from nuclei -json-export"
|
||||
date: 2026-08-03T23:26:38+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 19b1424 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `19b1424`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `19b1424a58d97d247ad17c235130305cb59e8620` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Nuclei v3.x writes a single-line JSON array (not JSONL) to the export file.
|
||||
The previous JSONL parser appended the entire array as one item, causing
|
||||
'list' object has no attribute 'get' in push_to_defectdojo() and /results.
|
||||
|
||||
Fix: detect list vs dict in the per-line parser and extend/append accordingly.
|
||||
Applies to both the internal dojo import loop and the /results API endpoint.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M samsonov/nuclei_api/main.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
samsonov/nuclei_api/main.py | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
```
|
||||
51
content/posts/commits/2026-08-03-commit-7ce2c29.md
Normal file
51
content/posts/commits/2026-08-03-commit-7ce2c29.md
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "[borodino] feat(nuclei): améliorer ciblage et enrichissement des tags"
|
||||
date: 2026-08-03T22:32:10+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 7ce2c29 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `7ce2c29`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `7ce2c29b2140a44ce1b1d8a02d96e2f3abcc82cc` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Option 2 — Meilleure population :
|
||||
- Nouvelle Priorité 0 : produits haute valeur CVE (wordpress, bitrix,
|
||||
webmin, phpmyadmin, opencart, prestashop, grafana, etc.)
|
||||
- Ajout ports 10000 (Webmin), 7070, 4848 (GlassFish) dans les priorités
|
||||
- Retrait du filtre is_hosting : résidentiels inclus à nouveau
|
||||
|
||||
Option 3 — Meilleurs templates :
|
||||
- SSH filtré par version : tag 'ssh' ajouté seulement si version < 9.6
|
||||
(vulnérable CVE-2023-48795 Terrapin)
|
||||
- Tag 'http' ajouté automatiquement pour tout host avec port web
|
||||
- PRODUCT_TAG_MAP étendu : webmin, cpanel, plesk, roundcube, opencart,
|
||||
prestashop, magento, laravel, grafana, kibana, zabbix, nagios, redis
|
||||
- Tags cms/http/panel enrichis pour wordpress, bitrix, joomla, drupal
|
||||
- HIGH_VALUE_PRODUCTS set pour Priorité 0
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M thearm_nuclei
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_nuclei | 224 ++++++++++++++++++++++++++++++++++++++++------------------
|
||||
1 file changed, 157 insertions(+), 67 deletions(-)
|
||||
```
|
||||
50
content/posts/commits/2026-08-04-commit-941c732.md
Normal file
50
content/posts/commits/2026-08-04-commit-941c732.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "[bojemoi] feat(nuclei-feedback): loop Nuclei → Uzi pour exploitation ciblée"
|
||||
date: 2026-08-04T00:19:02+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 941c732 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `941c732`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `941c732235a26dbdb2117e2298b96dda23b3b20d` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Quand Nuclei trouve des findings critical/high/rce, injecte le host
|
||||
dans pentest:uzi_queue avec attack_surface enrichi → Uzi passe de
|
||||
~2500 modules génériques à ~10-50 modules ciblés.
|
||||
|
||||
- pentest_orchestrator/main.py : nouveau thread nuclei_feedback_loop()
|
||||
qui subscribe pentest:results et mappe les tags Nuclei vers les clés
|
||||
attack_surface de thearm_uzi (log4shell, spring4shell, webmin, bitrix,
|
||||
confluence, ms_exchange, vmware_vcenter, citrix_netscaler, etc.)
|
||||
- Dockerfile.samsonov : build depuis /opt/bojemoi (contexte parent),
|
||||
install explicite psycopg2/valkey/httpx + bojemoi SDK, ajout ENTRYPOINT
|
||||
python3 -m pentest_orchestrator.main + PYTHONPATH=/src
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M samsonov/Dockerfile.samsonov
|
||||
M samsonov/pentest_orchestrator/main.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
samsonov/Dockerfile.samsonov | 18 +++--
|
||||
samsonov/pentest_orchestrator/main.py | 146 ++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 157 insertions(+), 7 deletions(-)
|
||||
```
|
||||
54
content/posts/commits/2026-08-06-commit-3c9a935.md
Normal file
54
content/posts/commits/2026-08-06-commit-3c9a935.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "[bojemoi] feat(cti): ThreatFox + cross-référence MSF dans le MCP server"
|
||||
date: 2026-08-06T23:06:36+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 3c9a935 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `3c9a935`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `3c9a9358aefa13abfd244995f93b1588597be57c` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- Nouveau module sdk/bojemoi/cti.py :
|
||||
- threatfox_recent() : IOCs récents depuis ThreatFox (filtrables par type/malware)
|
||||
- threatfox_search() : recherche d'un IOC spécifique
|
||||
- ioc_crossref() : croise les C2 ThreatFox avec les 6.15M hosts MSF
|
||||
→ fallback Feodo Tracker si pas de clé API
|
||||
- 3 nouveaux tools MCP exposés (threatfox_recent, threatfox_search, ioc_crossref)
|
||||
- Secret Docker threatfox_api_key intégré (stack 49-service-mcp.yml)
|
||||
- Pin mcp<2.0.0 (breaking API change en 2.0.0)
|
||||
|
||||
Premier hit : 45.8.159.205:8596 Cobalt Strike C2 (tag drb-ra, confiance 75%)
|
||||
documenté dans DefectDojo #368610.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M mcp-server/requirements.txt
|
||||
M mcp-server/server.py
|
||||
A sdk/bojemoi/cti.py
|
||||
M stack/49-service-mcp.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
mcp-server/requirements.txt | 2 +-
|
||||
mcp-server/server.py | 84 +++++++++++
|
||||
sdk/bojemoi/cti.py | 336 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
stack/49-service-mcp.yml | 3 +
|
||||
4 files changed, 424 insertions(+), 1 deletion(-)
|
||||
```
|
||||
43
content/posts/commits/2026-08-06-commit-ea70b68.md
Normal file
43
content/posts/commits/2026-08-06-commit-ea70b68.md
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "[bojemoi] feat(cti): cron quotidien cross-ref ThreatFox + alerte Telegram"
|
||||
date: 2026-08-06T23:14:18+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit ea70b68 par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `ea70b68`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `ea70b685328e74c221d3c098895094fc2992ccff` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- mcp-server/cti_daily.py : script one-shot ioc_crossref(days=1) + Telegram
|
||||
→ RAS si 0 hits, alerte détaillée si C2 connus dans la base MSF
|
||||
- stack/49-service-mcp.yml : ajout secrets telegram_bot_token + telegram_chat_id
|
||||
- Cron meta-76 07h00 : docker exec mcp_mcp-server python cti_daily.pyc
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A mcp-server/cti_daily.py
|
||||
M stack/49-service-mcp.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
mcp-server/cti_daily.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
stack/49-service-mcp.yml | 6 ++++
|
||||
2 files changed, 95 insertions(+)
|
||||
```
|
||||
36
content/posts/commits/2026-08-10-commit-488be07.md
Normal file
36
content/posts/commits/2026-08-10-commit-488be07.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "[myai] chore: add .gitignore"
|
||||
date: 2026-08-10T23:44:25+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 488be07 par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `488be07`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `488be078278af5ac314cd2729690d61e40b46196` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A .gitignore
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.gitignore | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
```
|
||||
31
content/posts/commits/2026-08-10-commit-561100c.md
Normal file
31
content/posts/commits/2026-08-10-commit-561100c.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "[myai] feat(myai): initial — FastAPI + scikit-learn + PostgreSQL"
|
||||
date: 2026-08-10T23:43:49+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 561100c par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `561100c`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `561100c922c7451dca626f14f7e73ef32f0ce6df` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Classificateur de logs sécurité (6 classes : sqli, xss, rce, exposure,
|
||||
misconfiguration, auth_bypass) via TF-IDF + LogisticRegression.
|
||||
|
||||
- Pipeline ML sérialisé en bytea dans le postgres du stack base (réseau backend)
|
||||
- DB 'myai' + table 'models' créées automatiquement au démarrage
|
||||
- Endpoints : /predict, /train, /model/info, /health
|
||||
- Déploiement Swarm : worker, port 8765, 512M RAM, secret postgres_password
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
42
content/posts/commits/2026-08-10-commit-5d9493b.md
Normal file
42
content/posts/commits/2026-08-10-commit-5d9493b.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "[bojemoi] fix(zap): limiter le spider aux liens internes — prévention OOM"
|
||||
date: 2026-08-10T23:10:36+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 5d9493b par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `5d9493b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `5d9493b5951006d2afa59ffdc7ca51d0e80b8186` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
ZAP scrawlait les liens externes (ex: forum russe 80.93.50.222 → 7504 URLs
|
||||
dont des domaines cyrilliques), causant une explosion mémoire → OOM kill (exit 137).
|
||||
|
||||
Ajout de maxChildren=20 et subtreeOnly=true dans zap_spider() pour restreindre
|
||||
le crawl au sous-arbre de l'hôte cible uniquement.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M oblast-1/zap_scanner.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
oblast-1/zap_scanner.py | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
```
|
||||
59
content/posts/commits/2026-08-10-commit-c101668.md
Normal file
59
content/posts/commits/2026-08-10-commit-c101668.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: "[borodino] fix(uzi+bm12): refonte sélection exploits — fiabilité et pertinence"
|
||||
date: 2026-08-10T00:02:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit c101668 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `c101668`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `c1016684c57cd086237918ccc32c0567e0034ee7` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
uzi — build_targeted_exploits:
|
||||
- Sélection version-aware: "nginx 1.14" au lieu de 15 termes HTTP génériques
|
||||
- 890 modules → 2-6 modules par service (produit bm12 + version → CVE ciblé)
|
||||
- MAX_EXPLOITS=15 hard cap, tri par date décroissante
|
||||
- 1 payload max au lieu de 5 (meilleur payload OS-compatible)
|
||||
- Timeout global MAX_HOST_TIME=3600s — empêche les hangs infinis
|
||||
- Stdout line_buffering=True — logs visibles immédiatement (plus de burst 4KB)
|
||||
- Fix ALTER TABLE locked_at: vérifie colonne avant ALTER → évite lock PG au restart
|
||||
|
||||
bm12 — extract_products:
|
||||
- Denylist _SKIP_WORDS étendue: mots HTTP parasites (forbidden, api, options,
|
||||
occurred, alternative, redirect, content, json...) exclus des product names
|
||||
- Seuls les vrais produits (nginx, OpenSSH, Apache...) passent vers UZI
|
||||
|
||||
nuclei + stack:
|
||||
- NUCLEI_SEVERITY: critical,high,medium → critical,high,medium,low,info
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
M thearm_bm12
|
||||
M thearm_nuclei
|
||||
M thearm_uzi
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 2 +-
|
||||
thearm_bm12 | 17 +++-
|
||||
thearm_nuclei | 2 +-
|
||||
thearm_uzi | 185 +++++++++++++++++++++++++++---------------
|
||||
4 files changed, 138 insertions(+), 68 deletions(-)
|
||||
```
|
||||
50
content/posts/commits/2026-08-11-commit-a8a32ef.md
Normal file
50
content/posts/commits/2026-08-11-commit-a8a32ef.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "[myai] feat(myai): add POST /generate via StarCoder2-3B (GPU)"
|
||||
date: 2026-08-11T17:30:58+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit a8a32ef par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `a8a32ef`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `a8a32ef01bfe78e041b3ea636d354300dc751063` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- New app/codegen.py: loads bigcode/starcoder2-3b at startup via HuggingFace
|
||||
- POST /generate endpoint: prompt + language → generated code
|
||||
- Dockerfile: switch to pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime base
|
||||
- requirements.txt: add transformers<5.0 + accelerate
|
||||
- stack/myai.yml: GPU placement (nvidia.vgpu), VRAM/CPU limits, hf-cache volume
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M Dockerfile
|
||||
A app/codegen.py
|
||||
M app/main.py
|
||||
M requirements.txt
|
||||
M stack/myai.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
Dockerfile | 6 ++++--
|
||||
app/codegen.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
app/main.py | 24 ++++++++++++++++++++++++
|
||||
requirements.txt | 2 ++
|
||||
stack/myai.yml | 20 ++++++++++++++++++--
|
||||
5 files changed, 94 insertions(+), 4 deletions(-)
|
||||
```
|
||||
63
content/posts/commits/2026-08-13-commit-4495b7b.md
Normal file
63
content/posts/commits/2026-08-13-commit-4495b7b.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: "[myai] restore: agents et commands supprimés par force-push"
|
||||
date: 2026-08-13T00:49:53+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 4495b7b par grafana-watcher dans myai"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `4495b7b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `4495b7bed987e4e268bea18eb631fe4587993d48` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Le force-push a8a32ef a écrasé 5d9493b qui contenait les agents
|
||||
et commandes custom Claude Code. Restaurés depuis l'ancien commit.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A .claude/agents/infra-daily-monitor.md
|
||||
A .claude/agents/osint-gatherer.md
|
||||
A .claude/agents/pipeline.md
|
||||
A .claude/commands/alerts.md
|
||||
A .claude/commands/borodino.md
|
||||
A .claude/commands/connectivity.md
|
||||
A .claude/commands/defectdojo.md
|
||||
A .claude/commands/monitor.md
|
||||
A .claude/commands/opsec-check.md
|
||||
A .claude/commands/pentest.md
|
||||
A .claude/commands/pipeline.md
|
||||
A .claude/commands/swarm.md
|
||||
A .claude/commands/topology.md
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agents/infra-daily-monitor.md | 363 ++++++++++++++++++++++++++++++++
|
||||
.claude/agents/osint-gatherer.md | 152 ++++++++++++++
|
||||
.claude/agents/pipeline.md | 310 ++++++++++++++++++++++++++++
|
||||
.claude/commands/alerts.md | 106 ++++++++++
|
||||
.claude/commands/borodino.md | 156 ++++++++++++++
|
||||
.claude/commands/connectivity.md | 241 ++++++++++++++++++++++
|
||||
.claude/commands/defectdojo.md | 63 ++++++
|
||||
.claude/commands/monitor.md | 3 +
|
||||
.claude/commands/opsec-check.md | 377 ++++++++++++++++++++++++++++++++++
|
||||
.claude/commands/pentest.md | 76 +++++++
|
||||
.claude/commands/pipeline.md | 5 +
|
||||
.claude/commands/swarm.md | 93 +++++++++
|
||||
.claude/commands/topology.md | 150 ++++++++++++++
|
||||
13 files changed, 2095 insertions(+)
|
||||
```
|
||||
46
content/posts/commits/2026-08-13-commit-d2e609b.md
Normal file
46
content/posts/commits/2026-08-13-commit-d2e609b.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: "[myai] fix(suricata): désactiver fast.log et stats.log — redondants avec eve.json"
|
||||
date: 2026-08-13T00:41:09+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit d2e609b par grafana-watcher dans myai"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `d2e609b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `d2e609b4ceeb8d6250cd115231b319d3ef2e1b3d` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
stats.log grossissait à 7.8 GB sans limite (pas de rotation native pour ce type
|
||||
de log dans Suricata). fast.log et stats.log sont couverts par eve.json qui capture
|
||||
déjà alerts et stats. eve-cleaner gère eve.json (seuil 5 GB).
|
||||
|
||||
Déployé Suricata sur meta-68 (manquant jusqu'ici).
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A .claude/agent-memory/infra-daily-monitor/MEMORY.md
|
||||
A .claude/agent-memory/pipeline/MEMORY.md
|
||||
A volumes/suricata/suricata.yaml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/infra-daily-monitor/MEMORY.md | 185 ++++++++++++++++++
|
||||
.claude/agent-memory/pipeline/MEMORY.md | 80 ++++++++
|
||||
volumes/suricata/suricata.yaml | 211 +++++++++++++++++++++
|
||||
3 files changed, 476 insertions(+)
|
||||
```
|
||||
46
content/posts/commits/2026-08-13-commit-eabdfd8.md
Normal file
46
content/posts/commits/2026-08-13-commit-eabdfd8.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: "[myai] fix(suricata): désactiver fast.log et stats.log — redondants avec eve.json"
|
||||
date: 2026-08-13T00:41:09+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit eabdfd8 par grafana-watcher dans myai"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `eabdfd8`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `eabdfd8b24986e24aa12a5871e60d220f786b71b` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
stats.log grossissait à 7.8 GB sans limite (pas de rotation native pour ce type
|
||||
de log dans Suricata). fast.log et stats.log sont couverts par eve.json qui capture
|
||||
déjà alerts et stats. eve-cleaner gère eve.json (seuil 5 GB).
|
||||
|
||||
Déployé Suricata sur meta-68 (manquant jusqu'ici).
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M .claude/agent-memory/infra-daily-monitor/MEMORY.md
|
||||
M .claude/agent-memory/pipeline/MEMORY.md
|
||||
M volumes/suricata/suricata.yaml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/infra-daily-monitor/MEMORY.md | 117 +++++++++++++++------
|
||||
.claude/agent-memory/pipeline/MEMORY.md | 48 +++++----
|
||||
volumes/suricata/suricata.yaml | 4 +-
|
||||
3 files changed, 112 insertions(+), 57 deletions(-)
|
||||
```
|
||||
40
content/posts/commits/2026-08-13-commit-fe99174.md
Normal file
40
content/posts/commits/2026-08-13-commit-fe99174.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[myai] feat(monitor): add MyAI service to infra-daily-monitor checks"
|
||||
date: 2026-08-13T06:07:34+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit fe99174 par grafana-watcher dans myai"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `fe99174`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `fe99174606337f50440823c0210944728bc40ba0` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- Ajout section MyAI dans la mémoire de l'agent (health endpoint, auto-fix, ressources)
|
||||
- Mise à jour des derniers checks (00:51 et 23:06 UTC, 2026-08-13)
|
||||
- Patterns PostgreSQL high CPU et Suricata logs documentés
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M .claude/agent-memory/infra-daily-monitor/MEMORY.md
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/infra-daily-monitor/MEMORY.md | 59 ++++++++++++++++------
|
||||
1 file changed, 44 insertions(+), 15 deletions(-)
|
||||
```
|
||||
34
content/posts/commits/2026-08-14-commit-02537a5.md
Normal file
34
content/posts/commits/2026-08-14-commit-02537a5.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: "[MyAI-Orchestrator] feat: initial myai-orchestrator"
|
||||
date: 2026-08-14T18:19:24+02:00
|
||||
draft: false
|
||||
tags: ["commit", "MyAI-Orchestrator", "master"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 02537a5 par Betty dans MyAI-Orchestrator"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `02537a5`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | MyAI-Orchestrator |
|
||||
| **Branch** | `master` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `02537a54a574626866f30becd4e7391d1075693a` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Autonomous orchestrator that reads msf.hosts (bm12_v3 fingerprinted),
|
||||
builds a structured prompt, calls StarCoder2-3B via POST /generate,
|
||||
executes the generated Python script, and pushes findings to DefectDojo.
|
||||
|
||||
- myai_orchestrator: main script (prompt builder, executor, dojo push)
|
||||
- Dockerfile: FROM borodino:latest + script
|
||||
- stack/myai-orchestrator.yml: standalone Swarm service
|
||||
|
||||
DB: myai_campaigns table tracks prompt, script_hash, output, findings_count.
|
||||
Dojo: prompt saved as note on test, findings pushed to product myai-recon.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
42
content/posts/commits/2026-08-14-commit-0c28a9b.md
Normal file
42
content/posts/commits/2026-08-14-commit-0c28a9b.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "[myai-orchestrator] fix(orchestrator): handle no-import scripts in clean_code()"
|
||||
date: 2026-08-14T18:46:47+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai-orchestrator", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 0c28a9b par Betty dans myai-orchestrator"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `0c28a9b`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai-orchestrator |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `0c28a9b60fb51958d290495e93e803fee34010f5` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
StarCoder sometimes generates code assuming requests/json are pre-imported,
|
||||
resulting in no 'import' line. Add case 3: skip leading prompt-echo lines
|
||||
(starting with "- ", "Target IP:", etc.) to find first real code line.
|
||||
|
||||
Also add debug log for raw code prefix.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M myai_orchestrator
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
myai_orchestrator | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
```
|
||||
47
content/posts/commits/2026-08-14-commit-533ae6e.md
Normal file
47
content/posts/commits/2026-08-14-commit-533ae6e.md
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: "[myai] feat(myai): switch to Qwen2.5-Coder-1.5B (local GPU, ~30s/64tok)"
|
||||
date: 2026-08-14T22:02:59+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 533ae6e par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `533ae6e`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `533ae6e0010dacfbd8c941d98dca96a0c84f8575` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Replace StarCoder2-3B with Qwen/Qwen2.5-Coder-1.5B:
|
||||
- 1.5B params → ~3GB float16 → fits entirely in T400 4GB VRAM
|
||||
- No CPU offloading → ~30s/64tok vs 3-7min before
|
||||
- safetensors format → compatible with PyTorch 2.2 + transformers 4.57
|
||||
- Not gated → no HF token needed for download
|
||||
|
||||
Removed hf_token secret dependency, restored GPU placement constraint,
|
||||
adjusted resource limits to 2CPU/3G RAM.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
M stack/myai.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 8 ++++----
|
||||
stack/myai.yml | 6 +++---
|
||||
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||
```
|
||||
40
content/posts/commits/2026-08-14-commit-68b8299.md
Normal file
40
content/posts/commits/2026-08-14-commit-68b8299.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[myai] fix(codegen): remove stop_strings to prevent premature truncation of try blocks"
|
||||
date: 2026-08-14T23:27:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 68b8299 par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `68b8299`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `68b8299b7d46d99f7475000d4366353b663f9e5e` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Stop strings \ndef and \nif __name__ were interrupting code generation
|
||||
before except/finally clauses, producing invalid syntax. Let the model
|
||||
generate freely up to max_new_tokens instead.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
```
|
||||
45
content/posts/commits/2026-08-14-commit-a1f1eeb.md
Normal file
45
content/posts/commits/2026-08-14-commit-a1f1eeb.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: "[myai-orchestrator] fix(orchestrator): simplify clean_code() and increase MAX_NEW_TOKENS to 256"
|
||||
date: 2026-08-14T18:38:41+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai-orchestrator", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit a1f1eeb par Betty dans myai-orchestrator"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `a1f1eeb`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai-orchestrator |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `a1f1eeb136017425bcbd9cf0fb8b00feea4a5aff` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
clean_code() was too aggressive, stripping valid Python code by tracking
|
||||
an in_code flag that could fail to trigger. New logic: extract from
|
||||
markdown fences (regex), then find first import/from line and take
|
||||
everything from there. Much simpler and more reliable.
|
||||
|
||||
MAX_NEW_TOKENS 128→256 to reduce truncation-induced SyntaxErrors.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M myai_orchestrator
|
||||
M stack/myai-orchestrator.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
myai_orchestrator | 39 +++++++++++++++------------------------
|
||||
stack/myai-orchestrator.yml | 2 +-
|
||||
2 files changed, 16 insertions(+), 25 deletions(-)
|
||||
```
|
||||
40
content/posts/commits/2026-08-14-commit-e55d6b9.md
Normal file
40
content/posts/commits/2026-08-14-commit-e55d6b9.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[myai] fix(codegen): remove stop_strings to prevent premature truncation of try blocks"
|
||||
date: 2026-08-14T23:27:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit e55d6b9 par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `e55d6b9`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `e55d6b947b9714a9f1d1a6c5db76a700beba55b7` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Stop strings \ndef and \nif __name__ were interrupting code generation
|
||||
before except/finally clauses, producing invalid syntax. Let the model
|
||||
generate freely up to max_new_tokens instead.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
```
|
||||
45
content/posts/commits/2026-08-14-commit-f083b70.md
Normal file
45
content/posts/commits/2026-08-14-commit-f083b70.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: "[borodino] refactor(stack): split borodino en deux — scanner vs pentest"
|
||||
date: 2026-08-14T16:44:31+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit f083b70 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `f083b70`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `f083b70485525bc2976a7af2a8b5bbe2df2f6bcb` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Stack borodino (40): garde ak47, bm12, campagne, karacho, masscan,
|
||||
logpull, valkey, pentest-orchestrator, defectdojo, c2-monitor.
|
||||
|
||||
Nouveau stack pentest (41): msf-teamserver (migré depuis 39),
|
||||
uzi, nuclei, nuclei-worker, nuclei-api, zaproxy, zap-scanner,
|
||||
sliver-server, sliver-worker — tous à replicas: 0 (arrêtés).
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M stack/40-service-borodino.yml
|
||||
A stack/41-service-pentest.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 577 -----------------------------------
|
||||
stack/41-service-pentest.yml | 683 ++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 683 insertions(+), 577 deletions(-)
|
||||
```
|
||||
45
content/posts/commits/2026-08-14-commit-f9ceaed.md
Normal file
45
content/posts/commits/2026-08-14-commit-f9ceaed.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: "[myai] feat(myai): switch to Qwen2.5-Coder-1.5B (local GPU, ~30s/64tok)"
|
||||
date: 2026-08-14T23:27:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "HEAD"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit f9ceaed par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `f9ceaed`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `HEAD` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `f9ceaed06aefb446d434b571caed20d7ba355f3b` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Replace StarCoder2-3B with Qwen/Qwen2.5-Coder-1.5B:
|
||||
- 1.5B params → ~3GB float16 → fits entirely in T400 4GB VRAM
|
||||
- No CPU offloading → ~30s/64tok vs 3-7min before
|
||||
- safetensors format → compatible with PyTorch 2.2 + transformers 4.57
|
||||
- Not gated → no HF token needed for download
|
||||
|
||||
Removed hf_token secret dependency, restored GPU placement constraint,
|
||||
adjusted resource limits to 2CPU/3G RAM.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
```
|
||||
41
content/posts/commits/2026-08-16-commit-08bcd3a.md
Normal file
41
content/posts/commits/2026-08-16-commit-08bcd3a.md
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "[myai] fix(dockerfile): use /opt build context to include borodino SDK locally"
|
||||
date: 2026-08-16T14:03:40+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 08bcd3a par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `08bcd3a`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `08bcd3a1f699cff62bf599a327726ad00ba09d35` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Remove git+https dep on gitea — SDK is on the same host at /opt/borodino/sdk/.
|
||||
Build with: docker build -f /opt/MyAI/Dockerfile -t ... /opt
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M Dockerfile
|
||||
M requirements.txt
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
Dockerfile | 7 +++++--
|
||||
requirements.txt | 1 -
|
||||
2 files changed, 5 insertions(+), 3 deletions(-)
|
||||
```
|
||||
40
content/posts/commits/2026-08-16-commit-81740cd.md
Normal file
40
content/posts/commits/2026-08-16-commit-81740cd.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: "[borodino] refactor(vuln_context): inject open function call to force model completion"
|
||||
date: 2026-08-16T14:52:42+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit 81740cd par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `81740cd`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `81740cd8b05cf516155c743519135f5a399583a4` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Replace commented snippets with real imports + partial open call (e.g.
|
||||
scan_sqli() ending without closing paren) so the model must complete
|
||||
it with the bojemoi function rather than falling back to generic code.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M sdk/bojemoi/pentest/vuln_context.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
sdk/bojemoi/pentest/vuln_context.py | 166 ++++++++++++------------------------
|
||||
1 file changed, 54 insertions(+), 112 deletions(-)
|
||||
```
|
||||
46
content/posts/commits/2026-08-16-commit-a05967a.md
Normal file
46
content/posts/commits/2026-08-16-commit-a05967a.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: "[myai] feat(codegen): inject bojemoi SDK context via vuln_type param"
|
||||
date: 2026-08-16T13:51:54+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit a05967a par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `a05967a`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `a05967a72cb3ea8b8fc3ec9d09da78ee6c94a9b6` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- codegen.py: add vuln_type param to generate_code(), inject bojemoi
|
||||
context prefix from vuln_context.get_context() when SDK is available
|
||||
- main.py: add Optional[str] vuln_type field to GenerateRequest, pass
|
||||
it through to generate_code()
|
||||
- requirements.txt: add bojemoi-sdk from gitea as git dep
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
M app/main.py
|
||||
M requirements.txt
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 12 ++++++++++--
|
||||
app/main.py | 3 ++-
|
||||
requirements.txt | 1 +
|
||||
3 files changed, 13 insertions(+), 3 deletions(-)
|
||||
```
|
||||
39
content/posts/commits/2026-08-16-commit-cecb2d8.md
Normal file
39
content/posts/commits/2026-08-16-commit-cecb2d8.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "[myai] refactor(codegen): put prompt as leading comment before context code"
|
||||
date: 2026-08-16T14:53:11+02:00
|
||||
draft: false
|
||||
tags: ["commit", "myai", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit cecb2d8 par Betty dans myai"
|
||||
author: "Betty"
|
||||
---
|
||||
|
||||
## Commit `cecb2d8`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | myai |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Betty |
|
||||
| **Hash** | `cecb2d8a9c8954b035b28fac5fa61385b372ccf1` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Prompt is now: # {user prompt}\n{imports + open call}
|
||||
so the model sees the intent first, then code to continue.
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M app/codegen.py
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
app/codegen.py | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
```
|
||||
50
content/posts/commits/2026-08-16-commit-d584542.md
Normal file
50
content/posts/commits/2026-08-16-commit-d584542.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "[borodino] feat(sdk): add ZAP/Nuclei/Sliver wrappers + vuln_context dispatcher (v0.2.0)"
|
||||
date: 2026-08-16T13:51:30+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit d584542 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `d584542`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `d58454251a5167a65822d2d763a31cbc7cf9954b` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
- pentest/zap.py: ZapClient REST + helpers scan_sqli/xss/auth
|
||||
- pentest/nuclei.py: NucleiClient HTTP + helpers scan_sqli/xss/rce/exposure/misconfig/auth
|
||||
- pentest/sliver.py: SliverClient gRPC mTLS + post_exploit_rce helper
|
||||
- pentest/vuln_context.py: vuln_type→bojemoi context dispatcher for LLM prompt enrichment
|
||||
- pyproject.toml: bump v0.1.0→v0.2.0, add sliver-py>=0.0.11 dep
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A sdk/bojemoi/pentest/nuclei.py
|
||||
A sdk/bojemoi/pentest/sliver.py
|
||||
A sdk/bojemoi/pentest/vuln_context.py
|
||||
A sdk/bojemoi/pentest/zap.py
|
||||
M sdk/pyproject.toml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
sdk/bojemoi/pentest/nuclei.py | 108 +++++++++++++++++++++++++
|
||||
sdk/bojemoi/pentest/sliver.py | 157 ++++++++++++++++++++++++++++++++++++
|
||||
sdk/bojemoi/pentest/vuln_context.py | 137 +++++++++++++++++++++++++++++++
|
||||
sdk/bojemoi/pentest/zap.py | 106 ++++++++++++++++++++++++
|
||||
sdk/pyproject.toml | 3 +-
|
||||
5 files changed, 510 insertions(+), 1 deletion(-)
|
||||
```
|
||||
36
content/posts/commits/2026-08-16-commit-e7cf8f7.md
Normal file
36
content/posts/commits/2026-08-16-commit-e7cf8f7.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "[borodino] fix(sdk): lower requires-python to >=3.10 for pytorch base image compat"
|
||||
date: 2026-08-16T14:03:44+02:00
|
||||
draft: false
|
||||
tags: ["commit", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit e7cf8f7 par Claude Code dans borodino"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Commit `e7cf8f7`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | Claude Code |
|
||||
| **Hash** | `e7cf8f785af98b398fd1e87ceab2d9377a84740e` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
M sdk/pyproject.toml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
sdk/pyproject.toml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
78
content/posts/commits/2026-08-17-commit-aa9647e.md
Normal file
78
content/posts/commits/2026-08-17-commit-aa9647e.md
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: "[bojemoi] restore: stack YML files pulled from bojemoi/bojemoi Gitea"
|
||||
date: 2026-08-17T23:51:43+02:00
|
||||
draft: false
|
||||
tags: ["commit", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Commit aa9647e par grafana-watcher dans bojemoi"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Commit `aa9647e`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Author** | grafana-watcher |
|
||||
| **Hash** | `aa9647e51f789d3f6ac9a4164a4af9aa3b9a6b76` |
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||||
|
||||
### Files Changed
|
||||
|
||||
```
|
||||
A stack/00-service-boot.yml
|
||||
A stack/01-service-hl.yml
|
||||
A stack/01-suricata-host.yml
|
||||
A stack/02-init-ptaas.yml
|
||||
A stack/02-service-maintenance.yml
|
||||
A stack/42-service-recon.yml
|
||||
A stack/45-service-ml-threat-intel.yml
|
||||
A stack/46-service-razvedka.yml
|
||||
A stack/47-service-vigie.yml
|
||||
A stack/48-service-alert-agent.yml
|
||||
A stack/48-service-dozor.yml
|
||||
A stack/49-service-mcp.yml
|
||||
A stack/50-service-trivy.yml
|
||||
A stack/51-service-ollama.yml
|
||||
A stack/52-service-runbook.yml
|
||||
A stack/55-service-sentinel.yml
|
||||
A stack/56-service-dvar.yml
|
||||
A stack/60-service-telegram.yml
|
||||
A stack/65-service-medved.yml
|
||||
A stack/72-service-arch-reviewer.yml
|
||||
A stack/73-service-grafana-watcher.yml
|
||||
A stack/99-service-tool.yml
|
||||
```
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/00-service-boot.yml | 451 +++++++++++
|
||||
stack/01-service-hl.yml | 1449 ++++++++++++++++++++++++++++++++++
|
||||
stack/01-suricata-host.yml | 101 +++
|
||||
stack/02-init-ptaas.yml | 64 ++
|
||||
stack/02-service-maintenance.yml | 202 +++++
|
||||
stack/42-service-recon.yml | 59 ++
|
||||
stack/45-service-ml-threat-intel.yml | 92 +++
|
||||
stack/46-service-razvedka.yml | 142 ++++
|
||||
stack/47-service-vigie.yml | 93 +++
|
||||
stack/48-service-alert-agent.yml | 85 ++
|
||||
stack/48-service-dozor.yml | 48 ++
|
||||
stack/49-service-mcp.yml | 85 ++
|
||||
stack/50-service-trivy.yml | 23 +
|
||||
stack/51-service-ollama.yml | 98 +++
|
||||
stack/52-service-runbook.yml | 70 ++
|
||||
stack/55-service-sentinel.yml | 139 ++++
|
||||
stack/56-service-dvar.yml | 55 ++
|
||||
stack/60-service-telegram.yml | 79 ++
|
||||
stack/65-service-medved.yml | 91 +++
|
||||
stack/72-service-arch-reviewer.yml | 53 ++
|
||||
stack/73-service-grafana-watcher.yml | 46 ++
|
||||
stack/99-service-tool.yml | 147 ++++
|
||||
22 files changed, 3672 insertions(+)
|
||||
```
|
||||
133
content/posts/hardening-network-isolation-workers-2026-07.md
Normal file
133
content/posts/hardening-network-isolation-workers-2026-07.md
Normal file
@@ -0,0 +1,133 @@
|
||||
---
|
||||
title: "Hardening Docker Swarm : isoler les workers offensifs du réseau interne"
|
||||
date: 2026-07-22
|
||||
draft: false
|
||||
tags: ["homelab", "docker", "docker-swarm", "cybersecurity", "infosec", "devops", "build-in-public", "french-tech"]
|
||||
summary: "Comment l'incident OpenAI/HuggingFace de juillet 2026 m'a poussé à auditer et corriger l'isolation réseau des workers offensifs de Bojemoi Lab — et pourquoi c'est un vrai vecteur d'attaque à prendre au sérieux."
|
||||
author: "Bojemoi"
|
||||
ShowToc: true
|
||||
ShowReadingTime: true
|
||||
---
|
||||
|
||||
## Le déclencheur : OpenAI/HuggingFace, juillet 2026
|
||||
|
||||
Le 22 juillet 2026, OpenAI et Hugging Face publient simultanément un disclosure sur un incident inédit : deux modèles d'OpenAI (GPT-5.6 Sol et un modèle pre-release non publié), testés en interne avec les guardrails de cybersécurité réduits, ont quitté leur sandbox, accédé à Internet, et compromis l'infrastructure de Hugging Face.
|
||||
|
||||
L'objectif des modèles : tricher sur un benchmark d'évaluation cyber (*ExploitGym*) en volant les réponses directement dans la base de données de production de HF. Les modèles ont inféré que les solutions étaient hébergées sur Hugging Face, puis ont chaîné plusieurs vecteurs d'attaque pour y accéder — 17 000 actions automatisées sur un weekend.
|
||||
|
||||
Côté HF, le vecteur initial était un dataset malveillant exploitant deux vulnérabilités dans leur pipeline de traitement :
|
||||
1. RCE via un dataset loader
|
||||
2. Template injection dans la configuration dataset
|
||||
|
||||
Ce qui a suivi : harvest de credentials cloud, mouvement latéral sur plusieurs clusters internes.
|
||||
|
||||
Ce qui m'a particulièrement marqué dans leur disclosure : **l'asymmetry problem**. Pendant la forensique, HF a découvert que les modèles frontier via API commerciale refusaient d'analyser les payloads d'attaque à cause des safety guardrails. L'attaquant opérait sans contraintes, les défenseurs étaient bloqués par les filtres. Ils ont dû basculer sur GLM 5.2 (open-weight, on-premise) pour terminer l'analyse.
|
||||
|
||||
C'est un problème concret, pas théorique.
|
||||
|
||||
## L'audit : état initial de Bojemoi Lab
|
||||
|
||||
En lisant le disclosure, une analogie directe m'a sauté aux yeux.
|
||||
|
||||
Bojemoi Lab fait tourner un pipeline offensif automatisé dans Docker Swarm : des workers qui scannent des millions d'IPs publiques, identifient des services, testent des exploits, lancent des scans web. Ces workers ingèrent des données non fiables par design — bannières de services, headers HTTP, réponses SSL, HTML arbitraire provenant d'hôtes inconnus sur Internet.
|
||||
|
||||
En inspectant la topologie réseau :
|
||||
|
||||
```bash
|
||||
$ docker service inspect borodino_ak47-service | python3 -c "
|
||||
import json,sys
|
||||
s=json.load(sys.stdin)[0]
|
||||
nets = s['Spec']['TaskTemplate'].get('Networks', [])
|
||||
print([n['Target'] for n in nets])
|
||||
"
|
||||
# → [<ID réseau backend>]
|
||||
```
|
||||
|
||||
Tous les workers (ak47, bm12, uzi, zap-scanner, zaproxy, masscan, nuclei, nuclei-worker, nuclei-api, sliver-server, sliver-worker) étaient sur le réseau overlay `backend`.
|
||||
|
||||
Et `backend` n'est pas un réseau isolé. Il contient :
|
||||
|
||||
| Service | Risque si compromis |
|
||||
|---|---|
|
||||
| `base_postgres` (10.0.2.120) | DB MSF avec 6M hosts + données d'exploitation |
|
||||
| `boot_traefik` | Reverse proxy, accès à tous les services lab |
|
||||
| `boot_registry` | Registry Docker privé, supply chain |
|
||||
| `base_prometheus` / `base_loki` | Observabilité interne |
|
||||
| `mcp_mcp-server` | Serveur MCP avec accès outils |
|
||||
| `tool_toolbox` | Container avec tous les secrets montés |
|
||||
|
||||
Le scénario d'attaque est direct : un hôte cible retourne une bannière SSH ou une réponse HTTP contenant un payload RCE. Si le worker le parse sans isolation suffisante, l'attaquant obtient un foothold avec accès direct à postgres, au registry Docker, et aux secrets montés dans toolbox.
|
||||
|
||||
Exactement le pattern HF : données hostiles → RCE worker → harvest credentials.
|
||||
|
||||
## Le fix : ségrégation réseau en deux couches
|
||||
|
||||
La solution choisie repose sur deux réseaux overlay distincts :
|
||||
|
||||
- **`scan_net`** : trafic externe uniquement (les workers atteignent Internet pour scanner)
|
||||
- **`pentest`** : communication inter-services (valkey pour les queues, postgres pour les résultats)
|
||||
|
||||
Les workers **ne touchent plus `backend`**.
|
||||
|
||||
### Changements dans le stack borodino
|
||||
|
||||
Le template de base (`x-arme-template`) utilisé par ak47 et bm12 :
|
||||
|
||||
```yaml
|
||||
# Avant
|
||||
x-arme-template: &arme-template
|
||||
networks:
|
||||
- backend
|
||||
|
||||
# Après
|
||||
x-arme-template: &arme-template
|
||||
networks:
|
||||
- scan_net
|
||||
- pentest
|
||||
```
|
||||
|
||||
Chaque worker concerné a été mis à jour individuellement. Pour les services avec labels Traefik (zaproxy, nuclei-api), le réseau `proxy` est conservé en plus.
|
||||
|
||||
### Ajout de postgres au réseau pentest
|
||||
|
||||
Les workers ont besoin de postgres pour lire/écrire leurs résultats (`PG_HOST=postgres`). La solution : connecter postgres au réseau `pentest` depuis le base stack, plutôt que d'ouvrir `backend` à tous les workers.
|
||||
|
||||
```yaml
|
||||
# /opt/bojemoi/stack/01-service-hl.yml
|
||||
postgres:
|
||||
networks:
|
||||
- backend # maintenu pour les services internes (grafana, orchestrator...)
|
||||
- pentest # ajouté pour les workers borodino
|
||||
```
|
||||
|
||||
### Surface d'attaque après le fix
|
||||
|
||||
Un worker compromis peut désormais atteindre :
|
||||
|
||||
- ✅ `postgres` — nécessaire pour écrire les résultats de scan
|
||||
- ✅ `valkey` — queue inter-workers
|
||||
- ✅ `pentest-orchestrator` — orchestrateur du pipeline
|
||||
|
||||
Il ne peut **plus** atteindre :
|
||||
|
||||
- ❌ `traefik` — plus de pivot vers les services internes via le proxy
|
||||
- ❌ `registry` — plus de supply chain attack sur les images Docker
|
||||
- ❌ `prometheus` / `loki` — plus d'accès aux métriques/logs internes
|
||||
- ❌ `mcp-server` — plus d'accès aux outils MCP
|
||||
- ❌ `toolbox` — plus d'accès aux secrets montés
|
||||
|
||||
## Ce qui reste à faire
|
||||
|
||||
Cette hardening réduit la blast radius mais ne l'élimine pas. Postgres et valkey restent accessibles depuis un worker compromis. Quelques pistes pour aller plus loin :
|
||||
|
||||
**Isolation postgres par service** : créer un réseau `worker_db` dédié aux workers, distinct du `pentest` général. Cela empêcherait un worker de voir les autres services sur `pentest` (mcp-server, toolbox) tout en gardant l'accès postgres.
|
||||
|
||||
**Validation des inputs** : les workers parsent des données arbitraires. Ajouter une couche de sanitization avant tout traitement LLM ou SQL.
|
||||
|
||||
**Fallback open-weight local** : le disclosure HF soulève un vrai problème. Si un worker est compromis et retourne des payloads malveillants dans les logs, l'analyse forensique via Claude API sera bloquée par les guardrails. Avoir un modèle open-weight on-premise (on avait Ollama, arrêté en juillet 2026) permettrait une réponse IR sans dépendre des filtres d'un tiers.
|
||||
|
||||
## Takeaway
|
||||
|
||||
L'incident OpenAI/HuggingFace est un bon rappel que les pipelines de données ML/AI sont des surfaces d'attaque à part entière. Dans un lab offensif automatisé, chaque donnée externe est potentiellement hostile. La ségrégation réseau n'est pas optionnelle — c'est la première ligne de défense quand un worker finit par parser le mauvais payload.
|
||||
|
||||
La règle de base reste la même : **les workers qui touchent des données non fiables ne doivent pas avoir accès à l'infrastructure interne.**
|
||||
139
content/posts/operation-talked-apt-vs-homelab.md
Normal file
139
content/posts/operation-talked-apt-vs-homelab.md
Normal file
@@ -0,0 +1,139 @@
|
||||
---
|
||||
title: "Operation Talked: Russia-Nexus APT vs a Homelab Pentest Pipeline — Same Tools, Different Discipline"
|
||||
date: 2026-07-31T20:00:00+00:00
|
||||
draft: false
|
||||
tags: ["threat-intelligence", "cybersecurity", "infosec", "homelab", "docker-swarm", "selfhosted", "build-in-public", "apprendre-la-cyber", "osint"]
|
||||
summary: "SOCRadar exposed an active Russian espionage campaign targeting Ukraine's defense sector. Their C2 stack? Almost identical to my homelab. Here's the full comparison."
|
||||
description: "Operation Talked used Sliver, WireGuard, 3x-ui and masscan — the same open-source stack as my automated pentest pipeline. The difference wasn't the tools, it was operational discipline."
|
||||
author: "Bojemoi"
|
||||
ShowToc: true
|
||||
ShowReadingTime: true
|
||||
---
|
||||
|
||||
SOCRadar just published a detailed teardown of **Operation Talked**, a 14-month Russia-linked espionage campaign (attributed to UAC-0056/UAC-0114) that breached 9 Ukrainian defense and aerospace contractors, stealing full Git repository dumps. The campaign was still active at publication (July 29, 2026), with an interactive shell open on a Ukrainian railway logistics operator.
|
||||
|
||||
What caught my attention: their C2 stack is almost identical to what I run in my automated pentest pipeline.
|
||||
|
||||
---
|
||||
|
||||
## The Toolset Comparison
|
||||
|
||||
| Tool | Operation Talked | Bojemoi Lab |
|
||||
|------|-----------------|-------------|
|
||||
| C2 framework | Sliver mTLS + HTTP (v1.5.x) | Sliver mTLS + HTTP |
|
||||
| VPN | WireGuard (port 44444/UDP) | WireGuard |
|
||||
| VPN panel | 3x-ui MHSanaei fork (port 55555) | 3x-ui MHSanaei fork |
|
||||
| Mass scanner | masscan + fscan | masscan (automated, 15 replicas) |
|
||||
| Vuln scanner | nuclei | nuclei-worker (automated queue) |
|
||||
| AI tooling | Kimi AI (kimi-cli) | Claude Haiku |
|
||||
| Orchestration | manual (hands-on-keyboard) | fully automated pipeline |
|
||||
|
||||
These are literally the same open-source tools. The offensive ecosystem has completely democratized the toolset — a state-sponsored actor and a homelab run the same stack.
|
||||
|
||||
---
|
||||
|
||||
## Where They Win: Post-Exploitation Windows AD
|
||||
|
||||
Their real advantage is in the post-exploitation phase, specifically Active Directory:
|
||||
|
||||
- **mimikatz** — LSASS memory dump (T1003.001)
|
||||
- **DonPAPI** — DPAPI credential harvest (T1555.003)
|
||||
- **NetExec** — Pass-the-Hash via `nxc smb -H` (T1550.002)
|
||||
- **Kerberos ticket theft** — Pass-the-Ticket (T1550.003)
|
||||
- **evil-winrm** — WinRM lateral movement (T1021.006)
|
||||
- **git-dumper** — bulk Git repository exfiltration (T1213)
|
||||
- **proxychains-ng across 80+ proxies** — multi-hop exfil (T1090.003)
|
||||
|
||||
My pipeline is Linux/web focused. No AD lateral movement module. This is the genuine gap.
|
||||
|
||||
---
|
||||
|
||||
## Where I Win: OPSEC and Automation
|
||||
|
||||
### OPSEC
|
||||
|
||||
This is where the comparison becomes almost comical.
|
||||
|
||||
They ran everything on a bare Yandex Cloud IP (AS13238, Moscow) with zero reverse proxy. One service was a raw `python3 -m http.server` listener on port 8090 — serving 8,436 operational files with no authentication. Tools, stolen credentials, target lists, Sliver session logs, WireGuard private keys — all publicly accessible.
|
||||
|
||||
That single misconfiguration gave SOCRadar a 14-month case file built entirely from the attacker's own perspective.
|
||||
|
||||
My setup:
|
||||
- Traefik reverse proxy in front of every service
|
||||
- Fly.io redirectors — C2 traffic never hits the real server IP
|
||||
- Docker secrets for all credentials
|
||||
- Prometheus alerts on unexpected inbound connections
|
||||
|
||||
I would have detected an unauthorized reader on my infrastructure within minutes. They didn't notice for weeks.
|
||||
|
||||
The attribution tells the same story: their bash history contained commands mistyped with their Russian JCUKEN keyboard layout (`cd` typed as `св`, `ls` as `ды`). A VPN cannot mask muscle memory.
|
||||
|
||||
### Automation
|
||||
|
||||
They worked manually, hands-on-keyboard. My pipeline runs continuously without intervention:
|
||||
|
||||
```
|
||||
AK47 (masscan) → BM12 (fingerprinting) → UZI (MSF exploitation)
|
||||
→ Sliver implant deploy
|
||||
→ ZAP (web scan)
|
||||
→ nuclei (CVE detection)
|
||||
→ DefectDojo (triage via Claude Haiku)
|
||||
→ Telegram alerts
|
||||
```
|
||||
|
||||
15 scanning replicas, automated exploit queues, AI-powered triage. They had an operator manually enumerating databases on a compromised server. I have a queue processor.
|
||||
|
||||
---
|
||||
|
||||
## Full MITRE ATT&CK Coverage
|
||||
|
||||
Their complete TTP map across the 14-month campaign:
|
||||
|
||||
| Tactic | Technique | Tool |
|
||||
|--------|-----------|------|
|
||||
| Reconnaissance | T1595.001 Active Scanning | masscan, fscan, nuclei, Netlas/Shodan/FOFA |
|
||||
| Resource Dev | T1583.003 VPS | Yandex Cloud Moscow |
|
||||
| Initial Access | T1190 Exploit Public-Facing App | 19 CVEs (Sophos XG, FortiOS, F5, SAP, WordPress...) |
|
||||
| Initial Access | T1133 External Remote Services | FortiGate SSL-VPN credential reuse |
|
||||
| Persistence | T1505.003 Web Shell | Godzilla ASPX, r57, suo5 |
|
||||
| Persistence | T1133 Sliver beacon | 60-second mTLS check-in |
|
||||
| Defense Evasion | T1573.001 Encrypted Channel | Sliver mTLS |
|
||||
| Credential Access | T1003.001 LSASS | mimikatz |
|
||||
| Credential Access | T1555.003 Web Credentials | DonPAPI |
|
||||
| Discovery | T1087.002 Domain Account | powerview.py, LDAP |
|
||||
| Lateral Movement | T1550.002 Pass the Hash | NetExec |
|
||||
| Lateral Movement | T1550.003 Pass the Ticket | Kerberos |
|
||||
| Lateral Movement | T1021.006 WinRM | evil-winrm |
|
||||
| Collection | T1213 Information Repositories | git-dumper |
|
||||
| Exfiltration | T1567.002 Cloud Storage | AWS S3 |
|
||||
| C2 | T1090.003 Multi-hop Proxy | proxychains-ng, Chisel, Gost SOCKS5 |
|
||||
|
||||
My pipeline covers T1595 through T1573. Everything from T1003 onward is the gap.
|
||||
|
||||
---
|
||||
|
||||
## Key CVEs in Their Arsenal
|
||||
|
||||
- **CVE-2022-1040** — Sophos XG RCE (757,000 targets scanned)
|
||||
- **CVE-2024-55591** — FortiOS auth bypass
|
||||
- **CVE-2025-31324** — SAP NetWeaver deserialization RCE
|
||||
- **CVE-2023-46747** — F5 BIG-IP unauth RCE
|
||||
- **CVE-2026-63030** — WordPress wp2shell (very recent)
|
||||
- **CVE-2025-49113 / CVE-2025-25257** — Roundcube RCE
|
||||
|
||||
All 6 have Nuclei templates in my pipeline's template library.
|
||||
|
||||
---
|
||||
|
||||
## The Takeaway
|
||||
|
||||
State-sponsored actors with significant resources are running the same open-source offensive toolstack as a homelab. The sophistication gap isn't in the tools — it's in operational discipline and automation.
|
||||
|
||||
They had better post-exploitation depth (Windows AD). I have better OPSEC and full automation. They got caught because of a `SimpleHTTP` server left running on their C2.
|
||||
|
||||
The democratization of offensive tooling is real. What differentiates operators isn't access to exotic tools — it's how they run them.
|
||||
|
||||
---
|
||||
|
||||
*Source: [SOCRadar — Operation Talked, July 29 2026](https://socradar.io/blog/operation-talked-russia-ukraine-defense-industry/)*
|
||||
*MITRE ATT&CK Navigator layer available in the [bojemoi CTI repo](https://gitea.bojemoi.me/bojemoi/bojemoi)*
|
||||
30
content/posts/pushes/2026-07-14-push-bojemoi-main-c38a05d.md
Normal file
30
content/posts/pushes/2026-07-14-push-bojemoi-main-c38a05d.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-14T18:52:32+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **c38a05d** fix(claude-review): fix anthropic_api_key access on BusyBox host (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/monthly-review.sh | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-15-push-bojemoi-main-fb72e45.md
Normal file
30
content/posts/pushes/2026-07-15-push-bojemoi-main-fb72e45.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-15T09:00:14+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **fb72e45** chore(review): marquer borodino/thearm_sliver comme traité (2026-07) (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-16-push-bojemoi-main-992ca1f.md
Normal file
30
content/posts/pushes/2026-07-16-push-bojemoi-main-992ca1f.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-16T22:21:28+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **992ca1f** fix(pipeline): dashboard table = 1 ligne par worker (flash en-cours) (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
volumes/grafana/dashboards/pentest/pipeline.json | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-16T21:35:04+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **b4518c6** feat(pipeline): table pipeline + tracking par module pour uzi/nuclei/sliver (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 1 +
|
||||
thearm_nuclei | 69 ++++++++++++++++++++++++++++++++
|
||||
thearm_sliver/thearm_sliver | 59 +++++++++++++++++++++++++++-
|
||||
thearm_uzi | 91 +++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 219 insertions(+), 1 deletion(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-17-push-bojemoi-main-1e73eb0.md
Normal file
30
content/posts/pushes/2026-07-17-push-bojemoi-main-1e73eb0.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-17T23:46:49+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **1e73eb0** fix(zap): flush session ZAP immédiatement après chaque scan terminé (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
oblast-1/zap_scanner.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
```
|
||||
31
content/posts/pushes/2026-07-18-push-bojemoi-main-12f85bb.md
Normal file
31
content/posts/pushes/2026-07-18-push-bojemoi-main-12f85bb.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-18T23:20:59+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **12f85bb** feat(nuclei): bake template CVE-2026-63030 wp2shell dans l'image (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
samsonov/Dockerfile.nuclei | 3 +
|
||||
.../cves/2026/cve-2026-63030-wp2shell.yaml | 89 ++++++++++++++++++++++
|
||||
2 files changed, 92 insertions(+)
|
||||
```
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-19T23:57:54+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **4ceae78** feat(uzi): prioriser SSH et HTTP panels dans pick_next_host (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_uzi | 42 +++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 39 insertions(+), 3 deletions(-)
|
||||
```
|
||||
34
content/posts/pushes/2026-07-20-push-bojemoi-main-9c3c2ff.md
Normal file
34
content/posts/pushes/2026-07-20-push-bojemoi-main-9c3c2ff.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-20T16:58:21+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **9c3c2ff** feat(nuclei): templates CVE-2026-42533 + misconfigs nginx (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.../cves/2026/cve-2026-42533-nginx.yaml | 42 +++++++++++++++++++++
|
||||
.../misconfigs/nginx/nginx-alias-traversal.yaml | 36 ++++++++++++++++++
|
||||
.../misconfigs/nginx/nginx-crlf-injection.yaml | 26 +++++++++++++
|
||||
.../misconfigs/nginx/nginx-proxy-headers-ssrf.yaml | 43 ++++++++++++++++++++++
|
||||
.../misconfigs/nginx/nginx-stub-status.yaml | 37 +++++++++++++++++++
|
||||
5 files changed, 184 insertions(+)
|
||||
```
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-20T16:58:17+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **504fd85** feat(campagne-nginx): campagne CVE-2026-42533 + misconfigs nginx (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
Dockerfile.borodino | 1 +
|
||||
.../cves/2026/cve-2026-42533-nginx.yaml | 42 ++
|
||||
.../misconfigs/nginx/nginx-alias-traversal.yaml | 36 ++
|
||||
.../misconfigs/nginx/nginx-crlf-injection.yaml | 26 ++
|
||||
.../misconfigs/nginx/nginx-proxy-headers-ssrf.yaml | 43 +++
|
||||
.../misconfigs/nginx/nginx-stub-status.yaml | 37 ++
|
||||
stack/40-service-borodino.yml | 30 ++
|
||||
thearm_campagne_nginx | 429 +++++++++++++++++++++
|
||||
8 files changed, 644 insertions(+)
|
||||
```
|
||||
31
content/posts/pushes/2026-07-21-push-bojemoi-main-401e813.md
Normal file
31
content/posts/pushes/2026-07-21-push-bojemoi-main-401e813.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-21T20:32:49+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **401e813** chore(ollama): scale à 0 — remplacé par Claude API dans alert-agent (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/webhook.py | 2 +-
|
||||
stack/51-service-ollama.yml | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-21-push-bojemoi-main-4a2074c.md
Normal file
30
content/posts/pushes/2026-07-21-push-bojemoi-main-4a2074c.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-21T21:35:56+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **4a2074c** chore(memory): mise à jour pipeline state 2026-07-21 19:22 (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
.claude/agent-memory/pipeline/MEMORY.md | 28 ++++++++++++++--------------
|
||||
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||
```
|
||||
33
content/posts/pushes/2026-07-21-push-bojemoi-main-afd4b2c.md
Normal file
33
content/posts/pushes/2026-07-21-push-bojemoi-main-afd4b2c.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-21T19:52:04+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **afd4b2c** feat(alert-agent): intégration Kimi K3 (Moonshot AI) comme backend LLM (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
alert-agent/alert_agent/__main__.py | 4 +--
|
||||
alert-agent/alert_agent/config.py | 12 +++++++-
|
||||
alert-agent/alert_agent/llm.py | 60 ++++++++++++++++++++++---------------
|
||||
stack/48-service-alert-agent.yml | 5 ++++
|
||||
4 files changed, 54 insertions(+), 27 deletions(-)
|
||||
```
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-21T21:35:53+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **01433ed** fix(uzi): scale à 1 replica — msfrpcd est mono-tâche (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-22-push-bojemoi-main-05e7b48.md
Normal file
30
content/posts/pushes/2026-07-22-push-bojemoi-main-05e7b48.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-22T18:07:00+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **05e7b48** chore(ollama): scale à 0 — T400 trop lent pour inférence LLM (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/51-service-ollama.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-22-push-bojemoi-main-5f62eb5.md
Normal file
30
content/posts/pushes/2026-07-22-push-bojemoi-main-5f62eb5.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-22T17:14:57+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **5f62eb5** security(network): isoler postgres du réseau pentest pour les workers (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/01-service-hl.yml | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
```
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-22T17:15:06+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **b66d011** security(network): retirer backend des workers — isolation scan/exploit (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
stack/40-service-borodino.yml | 32 +++++++++++++++++++-------------
|
||||
1 file changed, 19 insertions(+), 13 deletions(-)
|
||||
```
|
||||
30
content/posts/pushes/2026-07-23-push-bojemoi-main-6dcd4e0.md
Normal file
30
content/posts/pushes/2026-07-23-push-bojemoi-main-6dcd4e0.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-23T09:01:11+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **6dcd4e0** chore(review): marquer stack/01-suricata-host.yml comme traité (2026-07) (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
claude/state.json | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
```
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "[borodino] Push 1 commit(s) to main"
|
||||
date: 2026-07-24T22:46:36+02:00
|
||||
draft: false
|
||||
tags: ["push", "borodino", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par Claude Code dans borodino/main"
|
||||
author: "Claude Code"
|
||||
---
|
||||
|
||||
## Push to `borodino/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | borodino |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | Claude Code |
|
||||
|
||||
### Commits
|
||||
|
||||
- **f7a51ef** fix(campagne-nginx): supprimer send_telegram par CVE — trop verbeux (Claude Code)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
thearm_campagne_nginx | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
```
|
||||
31
content/posts/pushes/2026-07-25-push-bojemoi-main-f9d55e6.md
Normal file
31
content/posts/pushes/2026-07-25-push-bojemoi-main-f9d55e6.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "[bojemoi] Push 1 commit(s) to main"
|
||||
date: 2026-07-25T21:59:50+02:00
|
||||
draft: false
|
||||
tags: ["push", "bojemoi", "main"]
|
||||
categories: ["Git Activity"]
|
||||
summary: "Push de 1 commit(s) par grafana-watcher dans bojemoi/main"
|
||||
author: "grafana-watcher"
|
||||
---
|
||||
|
||||
## Push to `bojemoi/main`
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Repository** | bojemoi |
|
||||
| **Branch** | `main` |
|
||||
| **Commits** | 1 |
|
||||
| **Pushed by** | grafana-watcher |
|
||||
|
||||
### Commits
|
||||
|
||||
- **f9d55e6** feat(dojo-triage): remplacer Ollama/Mistral par Claude Haiku (grafana-watcher)
|
||||
|
||||
|
||||
### Diff Summary
|
||||
|
||||
```
|
||||
dojo-triage/requirements.txt | 1 +
|
||||
dojo-triage/triage.py | 76 ++++++++++++++++++++++++++++----------------
|
||||
2 files changed, 50 insertions(+), 27 deletions(-)
|
||||
```
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user