anonym.legal
Πίσω στο BlogΑσφάλεια AI

IDE + Browser: Δύο Επίπεδα Ασφάλειας Προγραμματιστή...

Οι προγραμματιστές αποκαλύπτουν κώδικα σε IDE (VS Code) και ιστοσελίδες ChatGPT. Δύο επίπεδα DLP: IDE plugin (τοπικό) + browser extension (web).

March 31, 20268 λεπτά ανάγνωσης
developer AI securityMCP Server IDEChrome Extension browsertwo-layer protectioncredential leak prevention

IDE + Browser: Δύο Επίπεδα Ασφάλειας Προγραμματιστή για AI (2025)

Κίνδυνος: Εκθέσεις Κώδικα προγραμματιστή

Οι προγραμματιστές εργάζονται σε δύο περιβάλλοντα:

  1. IDE (VS Code, JetBrains, Sublime): Τοπικά αρχεία με ίσιες διευθύνσεις, API κλειδιά, βάσεις δεδομένων σύνδεσης
  2. Browser (ChatGPT, Perplexity, Claude): AI assistants που απαιτούν συχνά μετάφραση κώδικα

Πρόβλημα: Ένας προγραμματιστής δυσαισθησίας αντιγράφει κώδικα από VS Code και τον επικολλά σε ChatGPT χωρίς να δει ευαίσθητα δεδομένα (API κλειδιά, λογαριασμό ΙΔ, κλπ) που ενσωματώθηκαν.

Επίπεδο 1: IDE Plugin για DLP (Τοπικό)

Η IDE plugin ανιχνεύει ευαίσθητα δεδομένα πριν τα δεδομένα φεύγουν.

Υλοποίηση VS Code Plugin

import * as vscode from 'vscode';
import axios from 'axios';

const SENSITIVE_PATTERNS = [
  /\bsk_live_[a-zA-Z0-9]{32}\b/g,  // Stripe key
  /\b[A-Za-z0-9-]{20,}\b/g,         // Generic API key
  /password\s*[=:]\s*['\"][^'\"]+['\"]/gi, // Hardcoded password
];

export function activate(context: vscode.ExtensionContext) {
  const copySensitiveData = vscode.commands.registerCommand(
    'ide-dlp.copySensitive',
    async () => {
      const editor = vscode.window.activeTextEditor;
      if (!editor) return;

      const selection = editor.selection;
      const text = editor.document.getText(selection);

      // Check for sensitive patterns
      for (const pattern of SENSITIVE_PATTERNS) {
        if (pattern.test(text)) {
          vscode.window.showWarningMessage(
            '⚠️ Ανιχνεύθηκε ευαίσθητα δεδομένα (API key, password). Αποκόπη διακοπή.'
          );
          return;
        }
      }

      // Safe to copy
      await vscode.env.clipboard.writeText(text);
      vscode.window.showInformationMessage('✅ Κοπή ασφαλής');
    }
  );

  context.subscriptions.push(copySensitiveData);
}

Επίπεδο 2: Browser Extension για DLP (Web)

Ο browser extension ανιχνεύει προσπάθειες επικόλλησης ευαίσθητου κώδικα σε ChatGPT.

Υλοποίηση Chrome Extension

// content-script.js
const CHATGPT_ORIGINS = [
  'https://chat.openai.com',
  'https://claude.ai',
  'https://www.perplexity.ai',
];

document.addEventListener('paste', async (e) => {
  const text = e.clipboardData?.getData('text/plain');
  if (!text) return;

  // Check if on ChatGPT/Claude/Perplexity
  const isAIChat = CHATGPT_ORIGINS.some(origin => window.location.href.includes(origin));
  if (!isAIChat) return;

  // Analyze text for sensitive patterns
  const sensitivePatterns = [
    /\bsk_live_[a-zA-Z0-9]{32}\b/,  // Stripe key
    /\bAKIA[0-9A-Z]{16}\b/,          // AWS key
    /password\s*[=:]\s*['\"][^'\"]+['\"]/i,
  ];

  let foundSensitive = false;
  for (const pattern of sensitivePatterns) {
    if (pattern.test(text)) {
      foundSensitive = true;
      break;
    }
  }

  if (foundSensitive) {
    e.preventDefault();
    chrome.runtime.sendMessage({
      action: 'show_warning',
      title: '⚠️ Προστασία Κώδικα',
      message: 'Ανιχνεύθηκαν ευαίσθητα δεδομένα (API κλειδιά, κωδικοί). Η επικόλληση αποκόπη για προστασία.',
    });
  }
});

Παράδειγμα Ροής

Σενάριο 1: Επίπεδο 1 Blok (IDE Plugin)

  1. Προγραμματιστής γράφει κώδικα σε VS Code που περιέχει Stripe key
  2. Προσπαθεί να αντιγράψει κώδικα
  3. IDE plugin ανιχνεύει Stripe key (pattern: sk_live_*)
  4. Plugin αποκόπει αντιγραφή, εμφανίζει προειδοποίηση
  5. Προγραμματιστής αφαιρεί το κλειδί και ξαναπροσπαθεί
  6. Αντιγραφή επιτυχής

Σενάριο 2: Τυχαία Παραβίαση Browser

  1. Προγραμματιστής αντιγράφει κώδικα που περιέχει αρχική κωδικού
  2. IDE plugin δεν τον ανιχνεύει (πατέρνα εξαίρεση για πολύ κοινή κωδικούς)
  3. Ο κώδικας επικολλήθηκε σε ChatGPT chat
  4. Browser extension ανιχνεύει κωδικό και αποκόπει την επικόλληση
  5. Προειδοποίηση εμφανίζει
  6. Προγραμματιστής αποδέχεται το κίνδυνο ή αποδεχόμενα κωδικό (εγκρίνει)

Τεχνικές Πρόκληση

Πρόβλημα 1: False Positives

Εύκολη κανόνες (π.χ., "κάθε 32-αλφαριθμητικό είναι ένας κλειδί") προκαλούν πολλές ψευδής προειδοποιήσεις, οδηγώντας σε αποτυχία κουρασμένη σε χρήστη.

Λύση: Χρήση contextual patterns:

# Stripe: πρέπει να ξεκινά με sk_live_ ή sk_test_
sk_(live|test)_[a-zA-Z0-9]{32}

# AWS: πρέπει να ξεκινά με AKIA
AKIA[0-9A-Z]{16}

# Hardcoded password: must follow = or :
password\s*[=:]\s*['\"][^'\"]{8,}['\"]

Πρόβλημα 2: Κρυμμένα Μυστικά

Τα μυστικά που αποθηκεύονται σε περιβάλλοντα αρχεία (.env) δεν μπορούν πάντα να ανιχνευθούν από IDE plugins χωρίς εξαρτήσεις.

Λύση: Εργαλείο που εκσκαφή περιβάλλον αρχεία και ειδοποιοί σταυρό ανάπτυξης:

# .env file scanner
grep -E '^(API_KEY|SECRET_KEY|PASSWORD|TOKEN)=' .env | sed 's/=.*/=***HIDDEN***/' > .env.masked

Πηγές

Έτοιμοι να προστατεύσετε τα δεδομένα σας;

Ξεκινήστε την ανωνυμοποίηση PII με 285+ τύπους οντοτήτων σε 48 γλώσσες.