# VC-097 · Canlı veriyi silebilen token aynı zamanda kurtarma yedeklerini de silebiliyor

Yedek başka bir yerde görünse de canlı sistemi yöneten kimlik onu da silebiliyor. Tek yanlış işlem veya ele geçirilen yetki hem çalışan veriyi hem geri dönüş kopyasını ortadan kaldırabiliyor.

- Önem: ORTA. Etkisi büyük. Nadiren tetiklenir.
- Önem notu: Canlı veriyle kurtarma kopyasının ortak silme yetkisine bağlı olması esas alınır. Tetikleyici yıkıcı işlem veya yetki kaybıdır. Her istekte veri silinmediği için sürekli tetiklenme varsayılmaz.
- Eksen ve kategori: Sağlamlık, 15 Gözlem, yedek ve kurtarma
- Yığın: Her yığın
- Yapay zekâ kodunda: ölçülmedi. Dayanak: uzman görüşü.
- Ne zaman bakılır: İlk yayından önce, Her ay
- CWE: CWE-269
- OWASP Top 10:2025: A06:2025 Insecure Design
- Checklist ifadesi: Canlı veriyi silebilen token kurtarma yedeklerine dokunamıyor.
- Son inceleme: 4 Ekim 2026, Komünite editörlüğü
- Adres: https://vibecheck.komunite.com.tr/madde/yedek-canliyi-silebilen-ayni-tokenla-silinebiliyor

## 60 saniyelik kontrol

Yalnız kendi uygulamanda ya da yazılı izin aldığın sistemde dene. Bu bir sızma testi değildir.

1. Canlı veriyi silebilen kimliklerin yedek deposundaki izinlerini oku.
2. Yedek silme ve şifreleme anahtarını kapatma yetkilerini ayrı incele.
3. Aynı kimliğin kendine yeni yetki verebilip veremediğini kontrol et.
4. Silme denemesini yalnız ayrı sentetik kaynakta ve önceden belirlenmiş kapsamda yap.

## Ne oluyor

Canlı verinin yedeği başka bir ekranda görünüyor. Bu görüntü iki bağımsız koruma katmanı varmış hissi veriyor. Ancak aynı token hem canlı kaynağı hem yedeği silebiliyorsa tek bir yetki kaybı ikisini de etkileyebilir. Farklı dosya yolu, farklı isim veya ayrı bir yedekleme düğmesi kendi başına bağımsız kurtarma sınırı oluşturmaz.

Yetkiyi kullananın saldırgan olması da gerekmez. Geniş kapsamlı bir otomasyon yanlış hedefte silme işlemi yapabilir. Kodlama ajanı elindeki kimlikle kapsamı yanlış yorumlayabilir. Operatör canlı kaynağı temizlerken onunla birlikte tutulan yedeklerin de silindiğini sonradan öğrenebilir. Ortak neden, günlük çalışma yetkisinin kurtarma kopyasına kadar uzanmasıdır.

Kurtarma için gereken anahtarları da bu değerlendirmeye katmalısın. Dosyanın durması, şifreyi açan anahtar kullanılamıyorsa tek başına işe yaramaz. Aynı kimlik başka bir role geçerek yedeği silebiliyor veya kendi politikasını değiştirebiliyorsa görünen dar izin listesi yanıltır. İncelemenin konusu token adları kadar etkili izinler ve bu izinleri değiştirme yollarıdır.

## Gerçek olay

Bu madde belirli bir AI aracına bağlanan yeni bir olay kaydı kullanmıyor. Satıcının belgelediği silme davranışı üzerinden kurtarma sınırını inceliyor. Railway'in kendi belgesi, bir volume silindiğinde ona bağlı yedeklerin de silindiğini açıkça belirtiyor. Bu, aynı kaynağa bağlı yedeğin silme sınırını anlamak için doğrudan satıcı kanıtıdır. [Railway yedek sınırları](https://docs.railway.com/volumes/backups)

AWS Backup belgesi farklı saklama kilidi kiplerinin farklı yönetim sınırları olduğunu anlatıyor. Governance kipinde yeterli yetkili kimlik kilidi kaldırabilir. Compliance kipinin bekleme dönemi bittikten sonraki davranışı farklıdır. [Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html) Bu ayrım, panelde kilit yazmasının tek başına yeterli olmadığını gösterir. Sağlayıcının belirttiği hesap ve yaşam döngüsü sınırları ayrıca okunmalıdır.

## Yapay zekâ bunu neden üretiyor

**Model tek kimlikle işi tamamlamaya çalışır.** Kurulum sırasında çalışan bir token varsa ajan yedekleme, yayın ve bakım adımlarında aynı kimliği kullanabilir. Bu yaklaşım yetki hatalarını azaltarak otomasyonu kolay çalıştırır. Ancak günlük işlemlerle kurtarma yönetiminin farklı güven sınırları olduğu belirtilmediyse erişim alanı gereksiz büyür. Yetki tasarımı yalnız komutun çalışmasına indirgenmemelidir.

**Ayrı depo bağımsızlık gibi yorumlanır.** Yedek başka klasöre veya başka kovaya yazıldığında model korumanın tamamlandığını düşünebilir. Aynı kimliğin her iki hedefte de silme izni taşıması gözden kaçabilir. İnceleme dosyanın konumundan başlayıp kimlik politikasına ve rol geçişlerine kadar ilerlemelidir. Fiziksel veya mantıksal ayrım, erişim ayrımıyla birlikte değerlendirilir.

**Sağlayıcı özelliği kapsamından geniş anlatılabilir.** Otomatik yedekleme veya saklama kilidi adı, ajan tarafından bütün silme yollarını kapatan bir garantiye dönüştürülebilir. Oysa yönetici istisnaları, bekleme dönemi ve hesap kapatma davranışı hizmete göre değişir. Güncel satıcı belgesi bu sınırları belirlemek için okunmalıdır. Özelliğin adı, etkili yapılandırmanın yerini tutmaz.

**Kurtarma anahtarı incelemeden düşebilir.** Model yalnız yedek dosyasının izinlerini denetlediğinde şifreleme anahtarının yönetimini atlayabilir. Dosyayı silemeyen kimlik anahtarı kapatabiliyorsa geri dönüş yine aksayabilir. Bu ihtimal ayrıca yetki haritasına eklenmelidir. Buradaki açıklamalar olası üretim mekanizmalarıdır. AI araçlarına ilişkin ölçülmüş bir yaygınlık veya tüm platformlar için aynı davranış iddiası kurmuyoruz.

## Etki

Tek yanlış işlem hem çalışan veriyi hem kurtarma yolunu etkileyebilir. Böyle bir durumda normal geri yükleme süreci kullanılamaz ve dışarıda kalan başka kopyalara ihtiyaç duyulur. Kopyanın yaşı arttıkça iş verisi kaybı büyüyebilir.

Bu maddenin önem hesabı yıkıcı işlem veya yetki kaybı sırasında doğan etkiyi esas alır. Her normal istekte yedek silinmediğinden sürekli tetiklenme varsayılmaz. Envanterdeki ön tahminden farklı önem çıkması bu nedenle mümkündür. Gerçek etkiyi belirleyen, kaybolabilecek verinin değeri ve bağımsız kurtarma yolunun bulunup bulunmamasıdır.

## Nasıl anlarsın

Canlı kaynak üzerinde silme yetkisi olan kimlikleri listele. Aynı kimliklerin yedek hizmetinde, anahtar yönetiminde ve politika düzenlemede neler yapabildiğini oku. Yedek silmeyi canlı ortamda deneyerek kontrol etme. Gerekirse ayrı sentetik kaynakta, önceden belirlenmiş kapsamda yetki testi yap.

Örnekteki IAM belgesi günlük çalışma kimliği için uygulama nesnesi silme iznini korur, AWS Backup hizmetine açık ret ekler. Yerel test yalnız bu politika yapısını doğrular. AWS'nin etkili izin değerlendirmesini çalıştırmaz. Diğer politikalar, rol üstlenme ve anahtar erişimi ayrıca incelenmelidir. [AWS politika değerlendirmesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)

## Nasıl düzeltirsin

1. **Yetkiyi ayır.** Günlük çalışma kimliğinin yedek yönetmesine ihtiyacı yoksa bu erişimi kaldır. Yedek yazan ve geri yükleyen kimlikleri ayrı görevler olarak değerlendir.
2. **Bağımsız kopya kur.** Kurtarma kopyasını ayrı hesap veya izin alanında tut. MITRE rehberi sistem dışı kopya ve güvenli saklamayı birlikte ele alır. [Yedek ayrımı](https://attack.mitre.org/mitigations/M1053/)
3. **Kilidi doğru seç.** Saklama süresi, kaldırma yetkisi ve sağlayıcı istisnalarını oku. Geri alınamaz kilidi maliyet ve saklama ihtiyacını değerlendirmeden etkinleştirme.
4. **Kaçış yollarını incele.** Kimliğin kendine yetki vermesini, başka rol üstlenmesini veya kurtarma anahtarını kapatmasını ayrıca sınırla. [Yetki yönetimi](https://cwe.mitre.org/data/definitions/269.html)
5. **Geri dönüşü doğrula.** Ayrılmış kopyanın yalnız korunmasını değil, yetkili kurtarma kimliğiyle gerçekten açılmasını da dene.

## Bir daha olmasın

Yedek envanterine silme yetkisini ve kurtarma anahtarının sahibini ekle. Günlük otomasyona yeni izin verildiğinde bu sınırı yeniden değerlendir.

## Sınır

Bu madde yedeğin içerik olarak sağlam olduğunu veya geri yükleme süresinin yeterli olduğunu kanıtlamaz. Örnek politika eksiksiz bir AWS güvenlik mimarisi değildir. Günlük kimliğin AWS Backup erişimini tamamen keser ve ayrı yedek yöneticisi varsayar. Gerçek hesapta uygulanmış değildir. Saklama kilidi, hesap kapatma ve anahtar kaybına karşı koşulsuz garanti olarak anlatılmamalıdır.

## Düzeltme kodları

### Her yığın: Kimlik politikası sınırı

Önce:

```json
// iam/runtime.json, açıklama amaçlı. Canlı hesaba uygulanmaz.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:DeleteObject"],
      "Resource": "arn:aws:s3:::vibecheck-live-example/*"
    },
    {
      "Effect": "Allow",
      "Action": ["backup:*"],
      "Resource": "*"
    }
  ]
}
```

Sonra:

```json
// iam/runtime.json, açıklama amaçlı. Ayrı yedek yönetimi önkoşuldur.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:DeleteObject"],
      "Resource": "arn:aws:s3:::vibecheck-live-example/*"
    },
    {
      "Effect": "Deny",
      "Action": ["backup:*"],
      "Resource": "*"
    }
  ]
}
// Bu kimlik yedek okuyamaz, yazamaz, geri yükleyemez veya yönetemez.
// Politikayı değiştirme, başka rol ve anahtar yönetimi ayrıca sınırlandırılır.
```

Düzeltmeyi kanıtlayan test:

```json
// iam/runtime.test.mjs, açıklama amaçlı. Statik örnek kontrolü, AWS simülatörü değil.
import test from 'node:test';
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
const raw = readFileSync(new URL(process.env.ORNEK_DOSYA), 'utf8');
const policy = JSON.parse(raw.split('\n').filter(line => !line.trim().startsWith('//')).join('\n'));
test('canlı silme izni korunur, yedek hizmeti açık ret ile ayrılır', () => {
  assert.equal(policy.Version, '2012-10-17');
  const app = policy.Statement.find(s => s.Effect === 'Allow' && s.Action.includes('s3:DeleteObject'));
  assert.equal(app.Resource, 'arn:aws:s3:::vibecheck-live-example/*');
  const backup = policy.Statement.find(s => s.Effect === 'Deny' && s.Action.includes('backup:*'));
  assert.ok(backup, 'Canlı kimlik için yedek hizmetine açık ret gerekir');
  assert.equal(backup.Resource, '*');
});
// Gerçek kabul testi etkili politikaları, rol üstlenmeyi ve KMS yetkisini inceler.
```

## Ajan kuralı (AGENTS.md)

```md
## Yedek aynı yetkiyle silinebiliyor (vibecheck VC-097)
- Canlı çalışma kimliğinden yedek silme yetkisini ayır.
- Kurtarma anahtarlarını aynı yetki sınırına bırakma.
- Yedek kopyasını bağımsız hesap veya izin alanında tut.
- Saklama kilidinin kipini ve kaldırılma yetkisini doğrula.
- Yerel politika kontrolünü bulut izin kanıtı sayma.
```

## Kaynaklar

1. [Volume Backups](https://docs.railway.com/volumes/backups), Railway
2. [AWS Backup Vault Lock](https://docs.aws.amazon.com/aws-backup/latest/devguide/vault-lock.html), AWS
3. [Policy evaluation logic](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html), AWS
4. [Data Backup M1053](https://attack.mitre.org/mitigations/M1053/), MITRE ATT&CK
5. [CWE-269 Improper Privilege Management](https://cwe.mitre.org/data/definitions/269.html), MITRE

---

vibecheck · Komünite editörlüğü. Metin CC BY 4.0, prompt ve kural parçaları MIT-0. Kaynak: https://vibecheck.komunite.com.tr/madde/yedek-canliyi-silebilen-ayni-tokenla-silinebiliyor
