Access Control Vulnerabilities

Erişim kontrolü güvenlik açıklarını anlayın, tespit edin ve önlem alın. OWASP Top 10'da #1 sıradaki bu kritik güvenlik tehdidine karşı kapsamlı rehber.

if (user.hasPermission(resource)) { allow(); } else { deny(); }

Erişim Kontrolü Genel Bakış

Erişim kontrolü, kullanıcıların sadece yetkili oldukları kaynaklara ve işlevlere erişebilmelerini sağlayan güvenlik mekanizmasıdır. Bu kontroller başarısız olduğunda, yetkisiz veri erişimi, veri manipülasyonu ve sistem ele geçirme gibi ciddi güvenlik ihlalleri meydana gelebilir.

OWASP Top 10 - 2021 İstatistikleri
Kritik
Broken Access Control, OWASP Top 10 listesinde #1 sıraya yükseldi. Web uygulamalarının %94'ünde bir tür erişim kontrolü açığı tespit edildi.
Erişim Kontrolü Temel Prensipler:
  • Authentication: Kimlik doğrulama - "Sen kimsin?"
  • Authorization: Yetkilendirme - "Bu işlemi yapabilir misin?"
  • Accounting: İzleme - "Ne yaptın ve ne zaman?"
  • Principle of Least Privilege: En az yetki prensibi
  • Defense in Depth: Katmanlı güvenlik
Yaygın Erişim Kontrolü Hataları:
• Sunucu tarafında yetkilendirme kontrollerinin eksikliği
• Client-side erişim kontrollerine güvenme
• Varsayılan "deny" yerine "allow" politikası
• Metadata manipulation (HTTP headers, cookies, tokens)
• CORS yanlış konfigürasyonu

Broken Access Control

Broken Access Control, erişim kontrolü mekanizmalarının düzgün çalışmaması veya tamamen eksik olması durumudur. Bu açık türü, saldırganların yetkisi olmayan verilere erişim sağlamasına veya yetkisi olmayan işlevleri gerçekleştirmesine olanak tanır.

// Güvensiz kod örneği - URL tabanlı erişim kontrolü
// admin.php
if ($_GET['role'] == 'admin') {
    // Admin paneli göster
    showAdminPanel();
}

// Saldırı: http://example.com/admin.php?role=admin
// Sonuç: Herkes admin paneline erişebilir!
Broken Access Control Türleri:
• Violation of least privilege: Gereğinden fazla yetki
• Bypassing access control checks: Kontrolleri atlama
• Metadata manipulation: HTTP header/cookie değiştirme
• Force browsing: Doğrudan URL erişimi
• CORS misconfiguration: Cross-origin güvenlik açığı
Gerçek Saldırı Örneği:
POST /api/users/123/delete
Cookie: session=user_token

Saldırgan, kendi kullanıcı oturumu ile başka kullanıcıları silebilir.
Tespit Yöntemleri:
• Farklı kullanıcı rolleri ile aynı fonksiyonları test edin
• URL parametrelerini değiştirip yetkisiz erişim deneyin
• HTTP method'larını değiştirin (GET→POST→PUT→DELETE)
• Session token'ları farklı kullanıcılar arasında değiştirin

Horizontal Privilege Escalation

Horizontal privilege escalation, bir kullanıcının aynı yetki seviyesindeki başka kullanıcıların verilerine veya fonksiyonlarına yetkisiz erişim sağlamasıdır. Bu durum genellikle kullanıcı kimlik doğrulamasının yetersiz olmasından kaynaklanır.

Klasik IDOR Örneği
Orta Risk
Kullanıcı A, kendi profil ID'sini değiştirerek kullanıcı B'nin profiline erişebilir. Bu, aynı yetki seviyesindeki kullanıcılar arası yetkisiz erişimdir.
// Vulnerable endpoint
GET /api/user/profile?id=1234
Authorization: Bearer user_a_token

// Saldırı - ID değiştirme
GET /api/user/profile?id=5678
Authorization: Bearer user_a_token

// Sonuç: Kullanıcı A, kullanıcı B'nin profilini görebilir
  • Banking Systems: Hesap numarası değiştirerek başka hesaplara erişim
  • E-commerce: Sipariş ID'si değiştirerek başka müşterilerin siparişlerini görme
  • Social Media: User ID manipülasyonu ile özel profillere erişim
  • Healthcare: Patient ID değiştirerek hasta kayıtlarına yetkisiz erişim
  • CRM Systems: Customer ID manipülasyonu ile müşteri verilerine erişim
Test Senaryoları:
• URL'lerdeki ID parametrelerini sistematik olarak değiştirin
• Sequential, random ve predictable ID'leri test edin
• HTTP body'deki ID parametrelerini kontrol edin
• Cookie ve header'lardaki ID değerlerini manipüle edin

Vertical Privilege Escalation

Vertical privilege escalation, düşük yetkili bir kullanıcının daha yüksek yetkiler elde etmesidir. Örneğin, normal bir kullanıcının admin yetkilerine sahip olması veya misafir kullanıcının kayıtlı kullanıcı yetkilerine erişmesi.

Yüksek Riskli Privilege Escalation Türleri:
• User → Admin: Normal kullanıcının admin paneline erişimi
• Guest → User: Misafir hesabın kayıtlı kullanıcı fonksiyonları
• Employee → Manager: Çalışanın yönetici fonksiyonlarına erişimi
• Customer → Staff: Müşterinin personel paneline erişimi
Parameter Pollution Saldırısı:
POST /user/update
Content-Type: application/json

{"name": "John", "email": "john@example.com", "role": "admin"}

Role parametresi eklenerek yetki yükseltme denemesi
// Cookie manipulation örneği
// Normal kullanıcı cookie'si
Set-Cookie: user_role=user; user_id=123

// Manipüle edilmiş cookie
Set-Cookie: user_role=admin; user_id=123

// HTTP Header manipulation
X-User-Role: admin
X-User-Privileges: all
X-Admin-Access: true
Privilege Escalation Test Adımları:
1. Tüm kullanıcı rollerini ve yetkilerini haritalayın
2. Her rol için erişilebilir fonksiyonları listeleyin
3. Role-based URL'leri düşük yetkili hesapla test edin
4. HTTP method override tekniklerini deneyin
5. Parameter injection saldırılarını gerçekleştirin
Gerçek Dünya Örneği
Kritik
2019'da bir e-ticaret sitesinde, normal kullanıcılar URL'ye ?admin=true ekleyerek admin paneline erişebiliyordu. Bu açık 50.000+ kullanıcıyı etkiledi.

Insecure Direct Object References (IDOR)

IDOR (Insecure Direct Object References), uygulamanın iç objelerine (dosyalar, veritabanı kayıtları, dizinler) doğrudan referanslar sağlaması ve bu referansların yeterli yetkilendirme kontrolü olmadan erişilebilir olmasıdır.

IDOR Açığının Yaygın Görüldüğü Yerler:
  • File Downloads: /download?file=../../../etc/passwd
  • Database Records: /user/profile?id=12345
  • API Endpoints: /api/orders/67890
  • Image/Media Files: /images/user_photos/sensitive_doc.pdf
  • Report Generation: /reports/financial?year=2023&dept=all
// Vulnerable code - Direct file access
public function downloadFile($fileId) {
    $file = "uploads/" . $fileId . ".pdf";
    if (file_exists($file)) {
        readfile($file); // Yetkilendirme kontrolü yok!
    }
}

// Secure implementation
public function downloadFile($fileId, $userId) {
    $file = FileModel::where('id', $fileId)
                   ->where('owner_id', $userId)
                   ->first();
    if ($file && $this->userCanAccess($file)) {
        readfile($file->path);
    }
}
IDOR Saldırı Örnekleri:
GET /api/invoices/1001 → GET /api/invoices/1002
GET /documents/user123.pdf → GET /documents/user456.pdf
POST /api/delete-user/789 → POST /api/delete-user/790
IDOR Test Methodology
Test
1. Enumerate: Tüm ID parametrelerini belirleyin
2. Map: Her ID'nin hangi kaynağa eriştiğini haritalayın
3. Test: ID'leri sistematik olarak değiştirin
4. Verify: Yetkisiz erişimi doğrulayın
5. Document: Bulgularınızı detaylı şekilde kaydedin
  • Sequential ID testing (1, 2, 3, ...)
  • Random ID generation ve testing
  • GUID/UUID manipulation attempts
  • Negative number testing (-1, -999)
  • Large number testing (999999, MAX_INT)
  • String-based ID manipulation
  • Base64/URL encoded ID testing
  • Hash-based ID brute forcing
IDOR Impact Assessment:
• Data Breach: Hassas müşteri verileri sızıntısı
• Privacy Violation: Kişisel bilgilerin ifşası
• Financial Loss: Mali kayıplar ve cezalar
• Compliance Issues: GDPR, HIPAA ihlalleri
• Reputation Damage: Marka itibarında zarar

Missing Function Level Access Control

Fonksiyon seviyesinde erişim kontrollerinin eksik olması, kullanıcıların yetkisi olmayan işlevleri gerçekleştirmesine olanak tanır. Bu açık türü, özellikle admin panelleri ve API endpoint'lerinde yaygın olarak görülür.

Eksik Fonksiyon Kontrolü Örnekleri:
• Admin fonksiyonlarının URL'den erişilebilir olması
• API endpoint'lerinde yetkilendirme kontrolü eksikliği
• Client-side gizlenen butonların server-side korumasız olması
• HTTP method'larının kontrolsüz kabul edilmesi
// Vulnerable API endpoint
app.delete('/api/users/:id', (req, res) => {
    // Yetkilendirme kontrolü yok!
    User.deleteOne({_id: req.params.id});
    res.json({success: true});
});

// Secure implementation
app.delete('/api/users/:id', authenticateToken, requireAdmin, (req, res) => {
    if (req.user.role !== 'admin') {
        return res.status(403).json({error: 'Forbidden'});
    }
    User.deleteOne({_id: req.params.id});
    res.json({success: true});
});
Fonksiyon Tarama Teknikleri
Yüksek
Automated scanning: Burp Suite, OWASP ZAP
Directory enumeration: Gobuster, Dirbuster
API discovery: Swagger docs, GraphQL introspection
Source code review: Route definitions, controller methods
Function Level Attack Examples:
GET /admin/users (Normal kullanıcı ile admin listesi)
POST /api/admin/settings (Ayar değiştirme yetkisi)
PUT /api/user/role (Rol değiştirme fonksiyonu)
DELETE /api/critical-data (Kritik veri silme)
Fonksiyon Seviyesi Test Checklist:
✓ Tüm admin fonksiyonlarını normal kullanıcı ile test edin
✓ API endpoint'lerini farklı HTTP method'larla deneyin
✓ Hidden form field'ları ve disabled button'ları kontrol edin
✓ JavaScript'te gizlenen fonksiyonları direkt çağırın
✓ Role-based menu item'larını bypass etmeyi deneyin

Access Control Bypass Techniques

Access control bypass teknikleri, mevcut güvenlik kontrollerini aşmak için kullanılan çeşitli yöntemlerdir. Bu teknikler, savunma mekanizmalarındaki zayıflıkları istismar eder.

Yaygın Bypass Teknikleri:
  • HTTP Method Override: POST → PUT/DELETE dönüşümü
  • Header Injection: X-Original-URL, X-Forwarded-For
  • Parameter Pollution: Aynı parametreyi multiple kez gönderme
  • Path Traversal: ../admin/, /.%2e/admin/
  • Case Manipulation: /Admin/, /ADMIN/, /aDmIn/
  • Encoding Bypass: URL, Unicode, Double encoding
// HTTP Method Override Bypass
POST /api/users/123 HTTP/1.1
X-HTTP-Method-Override: DELETE
Content-Type: application/json

{"action": "delete"}

// Header-based Bypass
GET /admin/panel HTTP/1.1
X-Original-URL: /admin/panel
X-Forwarded-Host: internal.admin.com
X-Custom-IP-Authorization: 127.0.0.1

// Parameter Pollution
GET /transfer?from=1234&to=5678&amount=100&to=attacker_account
Advanced Bypass Techniques:
• HTTP Request Smuggling: Content-Length vs Transfer-Encoding
• Race Conditions: Paralel request'ler ile timing attacks
• Cache Poisoning: Cached response'ları manipüle etme
• Session Puzzling: Session attribute'larını karıştırma
• JWT Algorithm Confusion: None algorithm, key confusion
Real-world Bypass Example:
GET /admin HTTP/1.1 → 403 Forbidden
GET /admin/ HTTP/1.1 → 403 Forbidden
GET /admin.. HTTP/1.1 → 200 OK

Path normalization hatası ile admin paneline erişim sağlandı!
Bypass Detection Methods
Tespit
Automated Tools: Burp Intruder, Custom scripts
Manual Testing: Header manipulation, encoding tests
Fuzzing: Parameter ve path fuzzing
Time-based Analysis: Response time farklılıkları

Authorization Models & Best Practices

Güvenli erişim kontrolü sistemleri tasarlamak için doğru yetkilendirme modelini seçmek kritik öneme sahiptir. Her model farklı senaryolar için uygun olup kendine özgü avantaj ve dezavantajları bulunur.

Role-Based Access Control (RBAC)
Yaygın
Kullanıcılara roller atanır, izinler rollere bağlanır. Kurumsal uygulamalar için ideal, yönetimi kolay ama esnek değil.
Attribute-Based Access Control (ABAC)
Gelişmiş
Kullanıcı, kaynak ve çevre özelliklerine göre dinamik erişim kontrolü. Çok esnek ama kompleks, fine-grained control gerektiğinde tercih edilir.
Discretionary Access Control (DAC)
Basit
Kaynak sahibi erişim haklarını belirler. File system'lerde yaygın, kullanıcı dostu ama güvenlik zayıflığı riski yüksek.
// RBAC Implementation Example
class RoleBasedAuth {
    private $roles = [
        'admin' => ['read', 'write', 'delete', 'manage_users'],
        'editor' => ['read', 'write'],
        'viewer' => ['read']
    ];
    
    public function hasPermission($userRole, $permission) {
        return in_array($permission, $this->roles[$userRole] ?? []);
    }
}

// ABAC Implementation Example  
class AttributeBasedAuth {
    public function canAccess($user, $resource, $action, $environment) {
        $policy = [
            'user' => ['department' => $user->department, 'level' => $user->level],
            'resource' => ['type' => $resource->type, 'classification' => $resource->classification],
            'environment' => ['time' => date('H'), 'location' => $environment->location]
        ];
        
        return $this->evaluatePolicy($policy, $action);
    }
}
Model Seçimi Kriterleri:
• Scalability: Sistemin büyüme kapasitesi
• Complexity: Yönetim karmaşıklığı
• Flexibility: Değişen gereksinimlere adaptasyon
• Performance: Erişim kontrolü performansı
• Compliance: Regülasyon uyumu gereksinimleri

Role-Based Access Control (RBAC)

RBAC, kullanıcılara roller atayarak ve bu rollere izinler vererek erişim kontrolü sağlayan yaygın kullanılan bir modeldir. Kurumsal ortamlarda organizasyon hiyerarşisini yansıtması nedeniyle tercih edilir.

RBAC Temel Bileşenleri:
  • Users (Kullanıcılar): Sistemdeki bireysel aktörler
  • Roles (Roller): İş fonksiyonlarını temsil eden gruplar
  • Permissions (İzinler): Spesifik sistem kaynaklarına erişim hakları
  • Sessions (Oturumlar): Kullanıcının aktif rol setleri
  • Role Hierarchy: Roller arası hiyerarşik ilişkiler
// RBAC Database Schema Example
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100)
);

CREATE TABLE roles (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    description TEXT
);

CREATE TABLE permissions (
    id INT PRIMARY KEY,
    resource VARCHAR(50),
    action VARCHAR(50) -- CREATE, READ, UPDATE, DELETE
);

CREATE TABLE user_roles (
    user_id INT,
    role_id INT,
    granted_at TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (role_id) REFERENCES roles(id)
);

CREATE TABLE role_permissions (
    role_id INT,
    permission_id INT,
    FOREIGN KEY (role_id) REFERENCES roles(id),
    FOREIGN KEY (permission_id) REFERENCES permissions(id)
);
RBAC Hierarchy Example
Sistem
Super Admin → Admin → Manager → Employee → Guest
Üst roller, alt rollerin tüm yetkilerini miras alır (inheritance)
RBAC Güvenlik Riskleri:
• Role Explosion: Çok fazla spesifik rol yaratma
• Privilege Creep: Zamanla artan yetki birikimi
• Role Mining: Mevcut yetkileri tersine mühendislik
• Static Nature: Dinamik erişim gereksinimlerine cevap verememe
RBAC Attack Scenarios:
POST /api/assign-role
{"user_id": 123, "role": "admin"}

Rol atama endpoint'ini kullanarak privilege escalation
  • Role assignment endpoint'lerini test edin
  • Role inheritance chain'ini haritalayın
  • Temporary role assignment'ları kontrol edin
  • Role-based conditional logic'i bypass etmeyi deneyin
  • Bulk role operation'ları test edin
  • Role hierarchy confusion attack'ları deneyin

Attribute-Based Access Control (ABAC)

ABAC, kullanıcı, kaynak ve çevre özelliklerine göre dinamik erişim kararları veren gelişmiş bir modeldir. Context-aware security ve fine-grained access control sağlar.

ABAC Attribute Categories:
• Subject Attributes: User properties (role, department, clearance)
• Resource Attributes: Data classification, owner, sensitivity
• Action Attributes: Operation type, access method
• Environment Attributes: Time, location, network, device
// ABAC Policy Example (XACML-like)
{
  "policy": {
    "target": {
      "subject": {"department": "Finance"},
      "resource": {"classification": "Confidential"},
      "action": {"operation": "read"}
    },
    "condition": {
      "and": [
        {"time": {"between": ["09:00", "17:00"]}},
        {"location": {"in": ["office", "vpn"]}},
        {"device": {"trusted": true}}
      ]
    },
    "effect": "Permit"
  }
}

// ABAC Implementation
function evaluateAccess(subject, resource, action, environment) {
    const policies = loadPolicies();
    
    for (const policy of policies) {
        if (matchesTarget(policy.target, subject, resource, action) &&
            evaluateConditions(policy.condition, environment)) {
            return policy.effect;
        }
    }
    
    return "Deny"; // Default deny
}
ABAC Use Cases
Gelişmiş
Healthcare: Patient data access based on doctor assignment
Financial: Transaction limits based on time and amount
Government: Classified document access with clearance levels
IoT: Device control based on user presence and context
ABAC Testing Strategy:
• Attribute manipulation (tamper with user/resource attributes)
• Context spoofing (fake location, time, device info)
• Policy logic flaws (boolean logic errors)
• Attribute injection (add malicious attributes)
• Performance attacks (complex policy evaluation DoS)
ABAC Güvenlik Challenges:
• Complexity: Policy management zorluğu
• Performance: Runtime policy evaluation overhead'i
• Debugging: Access denial sebeplerini tespit etme zorluğu
• Attribute Trust: Attribute source'larının güvenilirliği

Access Control Testing Methodologies

Erişim kontrolü güvenlik açıklarını tespit etmek için sistematik test metodolojileri gereklidir. Bu yaklaşım hem manuel hem de otomatik test tekniklerini içerir.

Comprehensive Testing Checklist
Metodoloji
Phase 1: Information Gathering & Reconnaissance
Phase 2: Authentication & Session Management
Phase 3: Authorization & Access Control
Phase 4: Privilege Escalation Testing
Phase 5: Business Logic & Workflow Testing
Test Scenarios by User Role:
  • Unauthenticated User: Anonymous access attempts
  • Low Privilege User: Horizontal & vertical escalation
  • Standard User: Resource access boundary testing
  • Administrative User: Over-privileged access validation
  • Service Account: API & system-level access testing
// Access Control Test Suite Example
class AccessControlTester {
    
    async testHorizontalEscalation(userA, userB) {
        // Test if userA can access userB's resources
        const userASession = await login(userA);
        const userBResources = await getResourceList(userB);
        
        for (const resource of userBResources) {
            const response = await accessResource(resource.id, userASession);
            if (response.status === 200) {
                reportVulnerability(`Horizontal escalation: User ${userA.id} accessed ${resource.id}`);
            }
        }
    }
    
    async testVerticalEscalation(lowPrivUser, highPrivUser) {
        const lowSession = await login(lowPrivUser);
        const adminEndpoints = await getAdminEndpoints();
        
        for (const endpoint of adminEndpoints) {
            const response = await makeRequest(endpoint, lowSession);
            if (response.status !== 403) {
                reportVulnerability(`Vertical escalation: Low priv user accessed ${endpoint}`);
            }
        }
    }
    
    async testParameterManipulation(user, resourceId) {
        const session = await login(user);
        const testParams = generateParameterVariations(resourceId);
        
        for (const param of testParams) {
            const response = await accessResource(param, session);
            analyzeResponse(response, param);
        }
    }
}
  • Authentication Bypass: Login mechanism circumvention
  • Session Manipulation: Cookie/token tampering
  • Parameter Tampering: URL/form parameter modification
  • HTTP Method Testing: Verb tampering attacks
  • Header Injection: Custom header exploitation
  • Path Traversal: Directory navigation attacks
  • File Access Testing: Direct file URL access
  • API Endpoint Discovery: Hidden endpoint enumeration
High Impact Test Areas:
• Financial Transactions: Money transfer, payment processing
• User Management: Account creation, deletion, modification
• Data Export: Bulk data download, report generation
• System Configuration: Settings, preferences, system parameters
• Administrative Functions: User roles, system maintenance

Automated Access Control Testing

Otomatik test araçları, erişim kontrolü açıklarını sistematik olarak tespit etmek için kritik öneme sahiptir. Bu araçlar hem zaman kazandırır hem de insan hatalarını minimize eder.

Professional Security Tools
Araçlar
Burp Suite Professional: Manual + automated web app testing
OWASP ZAP: Open source web application scanner
Acunetix: Automated vulnerability scanner
Nessus: Network and web vulnerability assessment
AppScan: IBM's application security testing
#!/bin/bash
# Automated Access Control Testing Script

# Test different user roles
USERS=("admin:admin123" "user:user123" "guest:guest123")
ENDPOINTS=("/api/users" "/api/admin" "/api/reports" "/api/settings")

for user in "${USERS[@]}"; do
    IFS=':' read -ra CREDENTIALS <<< "$user"
    USERNAME=${CREDENTIALS[0]}
    PASSWORD=${CREDENTIALS[1]}
    
    # Login and get session token
    TOKEN=$(curl -s -X POST "http://target.com/login" \
        -d "username=$USERNAME&password=$PASSWORD" | \
        grep -o '"token":"[^"]*' | cut -d'"' -f4)
    
    echo "Testing with user: $USERNAME"
    
    for endpoint in "${ENDPOINTS[@]}"; do
        RESPONSE=$(curl -s -w "%{http_code}" -o /dev/null \
            -H "Authorization: Bearer $TOKEN" \
            "http://target.com$endpoint")
        
        echo "$USERNAME -> $endpoint: HTTP $RESPONSE"
        
        if [ "$RESPONSE" = "200" ] && [ "$USERNAME" != "admin" ] && [[ "$endpoint" == *"admin"* ]]; then
            echo "⚠️  POTENTIAL VULNERABILITY: $USERNAME accessed admin endpoint"
        fi
    done
    echo "---"
done
Automated Testing Benefits:
  • Scale: Binlerce endpoint'i eşzamanlı test etme
  • Consistency: Aynı test'lerin tekrarlanabilirliği
  • Speed: Manuel test'lere göre çok daha hızlı
  • Coverage: Kapsamlı test senaryoları
  • Integration: CI/CD pipeline entegrasyonu
Custom Automation Script Ideas:
• Multi-user session parallel testing
• Parameter fuzzing with different privilege levels
• API endpoint discovery and access testing
• Role-based function enumeration
• Time-based access control testing (business hours)
Automation Limitations:
• Context: Business logic anlayamama
• False Positives: Yanlış alarm oranı
• Complex Workflows: Multi-step process testing zorluğu
• Dynamic Content: AJAX/SPA testing challenges

Manual Access Control Testing

Manuel testing, business logic açıklarını ve kompleks erişim kontrolü senaryolarını tespit etmek için vazgeçilmezdir. Otomatik araçların tespit edemediği context-aware açıkları bulabilir.

Manual Testing Advantages
Manuel
Business Logic Understanding: İş süreçlerini anlayarak test
Creative Attack Vectors: Yaratıcı saldırı senaryoları
Context Awareness: Durum-dependent güvenlik kontrolleri
False Positive Elimination: Gerçek açıkları ayırt etme
Manuel Test Teknikleri:
  • Role Switching: Farklı kullanıcı hesapları arası geçiş
  • Session Hijacking: Oturum token'larını çalma denemesi
  • Workflow Manipulation: İş akışı adımlarını atlama
  • Time-based Testing: Zamana bağlı erişim kontrolleri
  • Multi-tab Testing: Paralel oturum senaryoları
// Manual Testing Checklist - Web Application

1. Authentication Testing:
   □ Brute force protection
   □ Account lockout mechanism
   □ Password reset functionality
   □ Remember me functionality
   □ Multi-factor authentication bypass

2. Session Management:
   □ Session timeout enforcement
   □ Session fixation attacks
   □ Concurrent session handling
   □ Session token entropy
   □ Secure cookie attributes

3. Authorization Testing:
   □ Direct object reference
   □ Function level access control
   □ Data level access control
   □ Privilege escalation (horizontal/vertical)
   □ Missing authorization

4. Business Logic:
   □ Workflow bypass
   □ Race conditions
   □ Parameter manipulation
   □ State manipulation
   □ Process timing attacks
Real-world Manual Testing Example:
1. Login as regular user → Note available functions
2. Logout and login as admin → Map admin functions
3. Login as regular user again
4. Try to access admin URLs directly
5. Manipulate parameters to access admin data
6. Test session token reuse scenarios
  • Multi-user scenario testing (concurrent sessions)
  • Business workflow manipulation attempts
  • Client-side security control bypass
  • Hidden form field manipulation
  • Cookie and session token analysis
  • HTTP header manipulation testing
  • URL parameter enumeration and fuzzing
  • File upload and download permission testing
Manuel Test Fokusu:
• Edge Cases: Unusual user behavior scenarios
• Integration Points: System boundaries ve API connections
• Error Conditions: Hata durumlarında güvenlik davranışı
• Time Dependencies: Zaman-critical işlemler

Access Control Remediation

Erişim kontrolü açıklarının düzeltilmesi, güvenli kodlama pratikleri ve sistem mimarisi değişikliklerini gerektirir. Düzeltme süreci risk önceliğine göre planlanmalıdır.

Priority-Based Remediation:
• Critical: Admin privilege escalation → Immediate fix
• High: User data exposure → 24-48 hours
• Medium: Function-level bypass → 1-2 weeks
• Low: Information disclosure → Next release cycle
// Secure Access Control Implementation

// 1. Server-side Authorization Middleware
function requireAuth(role = null) {
    return (req, res, next) => {
        const token = req.headers.authorization?.split(' ')[1];
        
        if (!token) {
            return res.status(401).json({ error: 'Authentication required' });
        }
        
        const user = verifyToken(token);
        if (!user) {
            return res.status(401).json({ error: 'Invalid token' });
        }
        
        if (role && !user.roles.includes(role)) {
            return res.status(403).json({ error: 'Insufficient privileges' });
        }
        
        req.user = user;
        next();
    };
}

// 2. Resource-based Authorization
function canAccessResource(userId, resourceId, action) {
    const resource = getResource(resourceId);
    const user = getUser(userId);
    
    // Owner can do everything
    if (resource.ownerId === userId) {
        return true;
    }
    
    // Check role-based permissions
    const permission = `${resource.type}:${action}`;
    return user.permissions.includes(permission);
}

// 3. Usage in routes
app.get('/api/documents/:id', requireAuth(), (req, res) => {
    const documentId = req.params.id;
    
    if (!canAccessResource(req.user.id, documentId, 'read')) {
        return res.status(403).json({ error: 'Access denied' });
    }
    
    const document = getDocument(documentId);
    res.json(document);
});
Remediation Best Practices
Güvenlik
Defense in Depth: Multiple layer security controls
Principle of Least Privilege: Minimum necessary permissions
Fail Secure: Default deny when in doubt
Centralized Authorization: Single point of control
Technical Implementation Steps:
1. Inventory: Map all resources and required permissions
2. Centralize: Implement centralized authorization service
3. Validate: Server-side validation for all requests
4. Log: Comprehensive access logging and monitoring
5. Test: Automated and manual security testing
Common Remediation Mistakes:
• Client-side only fixes (JavaScript validation)
• Inconsistent authorization across API endpoints
• Over-complicated permission models
• Inadequate testing after fixes
• Ignoring existing user sessions after changes

Access Control Best Practices

Güvenli erişim kontrolü sistemleri geliştirmek için kanıtlanmış en iyi uygulamaları takip etmek kritik öneme sahiptir. Bu practices hem güvenliği artırır hem de yönetimi kolaylaştırır.

  • Deny by Default: Açık izin verilmeyen her erişimi reddet
  • Server-Side Enforcement: Tüm kontrollleri server-side yapın
  • Least Privilege: En az gerekli yetkiyi verin
  • Defense in Depth: Katmanlı güvenlik kontrolleri
  • Regular Reviews: Periyodik yetki gözden geçirmesi
  • Centralized Policy: Merkezi yetkilendirme sistemi
  • Audit Logging: Tüm erişim denemelerini logla
  • Fail Secure: Hata durumunda güvenli davranış
Architectural Best Practices:
  • Microservices: Service-level authorization
  • API Gateway: Centralized authentication/authorization
  • Zero Trust: Never trust, always verify
  • Identity Provider: Centralized identity management
  • Policy Engine: External authorization decisions
// Security Headers Implementation
app.use((req, res, next) => {
    // Security headers
    res.setHeader('X-Content-Type-Options', 'nosniff');
    res.setHeader('X-Frame-Options', 'DENY');
    res.setHeader('X-XSS-Protection', '1; mode=block');
    res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
    
    // CORS configuration
    res.setHeader('Access-Control-Allow-Origin', 'https://trusted-domain.com');
    res.setHeader('Access-Control-Allow-Credentials', 'true');
    
    next();
});

// Rate limiting per user role
const rateLimitConfig = {
    'guest': { max: 10, windowMs: 15 * 60 * 1000 }, // 10 requests per 15 minutes
    'user': { max: 100, windowMs: 15 * 60 * 1000 }, // 100 requests per 15 minutes
    'admin': { max: 1000, windowMs: 15 * 60 * 1000 } // 1000 requests per 15 minutes
};

// Input validation and sanitization
function validateAndSanitize(req, res, next) {
    const allowedFields = ['name', 'email', 'department'];
    const sanitizedBody = {};
    
    for (const field of allowedFields) {
        if (req.body[field]) {
            sanitizedBody[field] = validator.escape(req.body[field]);
        }
    }
    
    req.body = sanitizedBody;
    next();
}
Security Compliance Frameworks
Compliance
OWASP ASVS: Application Security Verification Standard
NIST Cybersecurity Framework: Risk management guidelines
ISO 27001: Information security management
SOC 2: Service organization controls
GDPR: Data protection regulation compliance
Implementation Timeline:
• Week 1-2: Security assessment and gap analysis
• Week 3-4: Authorization framework design
• Week 5-8: Core implementation and testing
• Week 9-10: Security testing and validation
• Week 11-12: Deployment and monitoring setup

Real-World Case Studies

Gerçek dünyadan erişim kontrolü açıkları örnekleri, bu güvenlik problemlerinin nasıl ortaya çıktığını ve etkilerini anlamak için değerlidir. Bu vakalar, benzer hataları önleme konusunda rehberlik sağlar.

Case Study 1: Healthcare Data Breach
Kritik
Problem: Hospital web portal'ında patient ID parametresi değiştirilerek diğer hastaların kayıtlarına erişim
Impact: 50,000+ hasta kaydı ifşa edildi
Root Cause: IDOR vulnerability, insufficient server-side validation
Fix: Server-side authorization, encrypted patient IDs
Case Study 2: Banking System Privilege Escalation
Kritik
Problem: Normal kullanıcı, HTTP header manipülasyonu ile admin fonksiyonlarına erişim
Impact: Unauthorized fund transfers, account modifications
Root Cause: Client-side role validation, missing server-side checks
Fix: Server-side role verification, session-based authorization
Case Study 3: E-commerce Order Manipulation
Yüksek
Problem: Customers could view and modify other customers' orders by changing order ID
Impact: Customer privacy violation, order fraud
Root Cause: Sequential order IDs, no ownership validation
Fix: UUID order IDs, user-order relationship validation
Common Patterns in Real Breaches:
• Parameter Tampering: %68 of cases involved URL/form parameter manipulation
• Missing Authorization: %45 had no server-side authorization checks
• Session Issues: %34 involved session management vulnerabilities
• Business Logic: %23 exploited workflow and business logic flaws
// Vulnerable Code from Real Breach
// This code was found in a major e-commerce breach
function getOrder($orderId) {
    // No user ownership validation!
    $query = "SELECT * FROM orders WHERE id = " . $orderId;
    return mysqli_query($connection, $query);
}

// Secure Implementation
function getOrder($orderId, $userId) {
    $stmt = $pdo->prepare("SELECT * FROM orders WHERE id = ? AND user_id = ?");
    $stmt->execute([$orderId, $userId]);
    return $stmt->fetch();
    
    // Additional logging for security monitoring
    logAccess($userId, 'order_access', $orderId, 
        $stmt->rowCount() > 0 ? 'success' : 'denied');
}
Lessons Learned:
• Erişim kontrolü hatalarının %90'ı basit server-side validation ile önlenebilir
• Automatic security testing tools bu açıkların %60'ını tespit edebilir
• Regular security reviews ve penetration testing kritik öneme sahip
• Developer security training yatırımı uzun vadede büyük tasarruf sağlar
Prevention Strategies from Cases:
• Implement comprehensive security testing in CI/CD pipeline
• Regular third-party security assessments
• Security-focused code review processes
• Incident response and breach notification procedures
• Continuous security monitoring and alerting

Access Control Security Summary

Key Takeaways:
• Server-Side Validation: Her erişim kontrolü server-side yapılmalı
• Principle of Least Privilege: Minimum gerekli yetki prensibi
• Defense in Depth: Katmanlı güvenlik kontrolleri
• Regular Testing: Sürekli güvenlik testleri ve gözden geçirmeler
• Logging & Monitoring: Kapsamlı erişim kaydı ve izleme
Sürekli Öğrenme ve Gelişim
Önemli
Güncel kalın: OWASP guidelines ve security bulletins takip edin
Hands-on practice: Security labs ve CTF challenges çözün
Community: Security communities ve conferences'lara katılın
Certification: CISSP, OSCP, CEH gibi sertifikasyonlar edinin
Research: Zero-day research ve vulnerability disclosure süreçlerini öğrenin

if (access_control_implemented_properly) { secure_application(); }

Access control is not just about technology - it's about understanding business context,
user behavior, and potential attack vectors. Stay vigilant, test thoroughly, and always assume breach.

Kaynaklar & Referanslar

Bu belgedeki tüm konular aşağıdaki birincil ve ikincil kaynaklara dayanmaktadır. Daha derinlemesine araştırma yapmak isteyenler için her kaynak doğrudan bağlantıyla sunulmuştur.

Birincil Kaynak: Bu sayfanın temel akademik içeriği, erişim kontrolü güvenlik açıklarını derinlemesine ele alan orijinal araştırma metnine dayanmaktadır: "Erişim Kontrolü Güvenlik Açıkları: Geleneksel Mimari, Modern API'ler ve Yapay Zeka Sistemleri Üzerine Kapsamlı Bir Araştırma". İçerik; OWASP, NIST, PortSwigger ve bağımsız güvenlik araştırmacılarının yayınları baz alınarak derlenmiştir.