Hardcoded Secrets

از Secure Coding

آسیب پذیری Hardcoded Secrets یک نوع حمله به امنیت نرم افزار است که در آن اطلاعات حساس، مانند رمز عبور، کلید API و دیگر اطلاعات مربوط به امنیت، به صورت ثابت در کد برنامه قرار دارند. این اطلاعات با استفاده از ابزارهای reverse engineering یا بازیابی کد، قابل استخراج هستند و در صورت دسترسی به کد، مهاجم قادر خواهد بود از این اطلاعات برای انجام حملات مخرب استفاده کند.

برای مثال، فرض کنید یک برنامه C برای ارسال پیام های رمزگذاری شده طراحی شده است. رمز عبور برای رمزگذاری در کد برنامه به صورت ثابت قرار داده شده است. در صورت دسترسی به کد، مهاجم می تواند رمز عبور را استخراج کند و از آن برای رمزگذاری و رمزگشایی پیام های خود استفاده کند.

در ادامه یک نمونه کد C نشان داده شده است که به راحتی مستعد حمله Hardcoded Secrets است:


#include <stdio.h>
#include <string.h>

#define PASSWORD "MyPassword123"

int main()
{
    char password[20];
    printf("Enter the password: ");
    scanf("%s", password);

    if (strcmp(password, PASSWORD) == 0) {
        printf("Access granted\n");
    } else {
        printf("Access denied\n");
    }

    return 0;
}


در این کد، رمز عبور "MyPassword123" در دستگاه کد نویس قرار داده شده است. برنامه با استفاده از تابع scanf() رمز عبور را از کاربر دریافت می کند و با تابع strcmp() با رمز عبور ثابت مقایسه می کند. در صورتی که مهاجم توانسته باشد به کد برنامه دسترسی پیدا کند، رمز عبور را به راحتی خوانده و از آن برای دسترسی به قسمت های مختلف برنامه استفاده کند.