Abstract
Although a large research effort on web application security has been going on for more than a decade, the security of web applications continues to be a challenging problem. An important part of that problem derives from vulnerable source code, often written in unsafe languages like PHP. Source code static analysis tools are a solution to find vulnerabilities, but they tend to generate false positives, and require considerable effort for programmers to manually fix the code. We explore the use of a combination of methods to discover vulnerabilities in source code with fewer false positives. We combine taint analysis, which finds candidate vulnerabilities, with data mining, to predict the existence of false positives. This approach brings together two approaches that are apparently orthogonal: humans coding the knowledge about vulnerabilities (for taint analysis), joined with the seemingly orthogonal approach of automatically obtaining that knowledge (with machine learning, for data mining). Given this enhanced form of detection, we propose doing automatic code correction by inserting fixes in the source code. Our approach was implemented in the WAP tool, and an experimental evaluation was performed with a large set of PHP applications. Our tool found 388 vulnerabilities in 1.4 million lines of code. Its accuracy and precision were approximately 5% better than PhpMinerII's and 45% better than Pixy's
چکیده
اگرچه تلاش تحقیقاتی بزرگ در مورد امنیت برنامه تحت وب برای بیش از یک دهه در جریان بوده است، امنیت برنامه های وب همچنان به صورت یک مسئله چالش برانگیز دنبال می شود. بخش مهمی از آن مسئله، ناشی از کد منبع آسیب پذیر است، که اغلب در زبان نا امن مانند PHP نوشته می شود. ابزار تحلیل استاتیک کد منبع، یک راه حل برای پیدا کردن آسیب پذیری ها می باشند، اما آنها تمایل به تولید مثبت های کاذب دارند، و مستلزم تلاش قابل توجه برنامه نویسان برای تعمیر کد به صورت دستی می باشند. ما به بررسی استفاده از ترکیبی از روش ها برای کشف آسیب پذیری ها در کد منبع با مثبت های کاذب کمتر می پردازیم. آنالیز لکه را که آسیب پذیری های کاندید را می یابد، با داده کاوی برای پیش بینی وجود مثبت های کاذب ترکیب می کنیم. این رویکرد، دو روش را با هم به ارمغان می آورد که ظاهرا متعامد هستند: دانش برنامه نویسی انسان در مورد آسیب پذیری ها (برای آنالیز لکه)، با رویکرد ظاهراً متعامد به دست آوردن خودکار آن دانش متحد شد (با یادگیری ماشین، برای داده کاوی). با توجه به این فرم پیشرفته تشخیص، ما انجام تصحیح خودکار کد را با قرار دادن فیکس ها در کد منبع پیشنهاد می کنیم. رویکرد ما در ابزار WAP پیاده سازی شد، و یک ارزیابی تجربی با یک مجموعه بزرگ از برنامه های PHP انجام گردید. ابزار ما 388 آسیب پذیری در 1.4 میلیون خط کد پیدا کرد. صحت و دقت آن حدود 5٪ بهتر از PhpMinerII و 45٪ بهتر از Pixy بود.
1-مقدمه
شبکه جهانی وب از زمان ظهورش در اوایل 1990، از یک پلت فرم برای دسترسی به متن و سایر رسانه ها، به یک چارچوب برای اجرای برنامه های وب پیچیده تکامل یافته است. این برنامه ها در اشکال مختلف، از خدمات تجاری کوچک خانگی تا مقیاس بزرگ ظاهر می شود (به عنوان مثال، اسناد گوگل، توییتر، فیس بوک). با این حال، برنامه های وب درگیر مسائل امنیتی شده اند. برای مثال، افزایش حملات وب در حدود 33 درصد در سال 2012 در یک گزارش اخیر نشان داده شده است...