Misconfigured Named-Pipes

از Secure Coding

آسیب پذیری Misconfigured Named-Pipes در اپلیکیشن های دسکتاپ به معنای استفاده نادرست از پایپ های نامگذاری شده است. این آسیب پذیری معمولا در مواقعی رخ می دهد که پایپ های نامگذاری شده با دسترسی نامناسب تنظیم شده باشند. این پایپ ها می توانند برای انتقال داده ها بین پردازش ها در یک سیستم استفاده شوند. اما اگر این پایپ ها به نادرستی تنظیم شوند، حمله کنندگان می توانند اطلاعات حساس را بدست آورند یا به صورت ناخواسته تغییراتی در سیستم ایجاد کنند.

نمونه کد آسیب پذیر در زبان C مربوط به این آسیب پذیری به شرح زیر است:



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

int main()
{
    HANDLE pipe;
    DWORD written;
    char buffer[1024];

    pipe = CreateNamedPipe("\\\\.\\pipe\\my_pipe", PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 1024, 1024, 0, NULL);

    if(pipe == INVALID_HANDLE_VALUE)
    {
        printf("Failed to create named pipe\n");
        return 1;
    }

    if(!ConnectNamedPipe(pipe, NULL))
    {
        printf("Failed to connect to named pipe\n");
        CloseHandle(pipe);
        return 1;
    }

    strcpy(buffer, "Sensitive data\n");

    if(!WriteFile(pipe, buffer, strlen(buffer), &written, NULL))
    {
        printf("Failed to write to named pipe\n");
        CloseHandle(pipe);
        return 1;
    }

    CloseHandle(pipe);
    return 0;
}


در این نمونه کد، یک پایپ نامگذاری شده ایجاد شده و داده های حساس به آن ارسال می شود. اگر این پایپ به نادرستی تنظیم شود، حمله کننده می تواند به داده های حساس دسترسی پیدا کند و به صورت ناخواسته تغییراتی در سیستم ایجاد کند.