این رایتاپ بر اساس سناریوهای دریافت شده از متخصصین امنیتی باگدشت با هدف اشتراک گذاری دانش امنیتی و تسریع در ایمن سازی ارایه شده است.
Race Condition اتفاق غیره منتظره ایست که به معنای اجرای همزمان دو یا چند فعالیت توسط سیستم است، در حالی که ماهیت سیستم ایجاب میکند که فعالیتها با توالی خاصی پشت سر هم انجام شوند تا منطق سیستم به درستی کار کند.
Race Condition زمانی به یک آسیبپذیری تبدیل میشود که بر روی مکانیزم کنترل امنیت برنامه تاثیر بگذارد. هکرها میتوانند برنامه را در شرایطی قرار بدهند که یک فعالیت حساس قبل از اجرای کامل فعالیت دیگر در سیستمهای کنترل امنیتی اجرا شود. از اینرو از آسیبپذیری Race Condition به عنوان آسیبپذیری زمان بررسی (Time of Check) یا زمان استفاده (Time of Use) هم نام میبرند.
مراحل بررسی
Connection: close %s
def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=30, requestsPerConnection=100, pipeline=False ) # the 'gate' argument blocks the final byte of each request until openGate is invoked for i in range(30): engine.queue(target.req, target.baseInput, gate='race1') # wait until every 'race1' tagged request is ready # then send the final byte of each request # (this method is non-blocking, just like queue) engine.openGate('race1') engine.complete(timeout=60) def handleResponse(req, interesting): table.add(req)
راهکار ایمن سازی
کلید اصلی در جلوگیری از Race Condition استفاده و بهره برداری ایمن از Concurrency است. و بهترین راه، قفل کردن منبعی است که در حال استفاده از آن هستیم. بیشتر زبان های برنامه نویسی که از قابلیت Concurrency پشتیبانی می کنند به صورت داخلی نیز نوعی قابلیت قفل کردن منابع را دارند.