The principles of secure programming, such as input validation, avoiding buffer overflow, secure coding. Some briefs about source code scanners are also discussed.
Buffer overflows are a major vulnerability that allow arbitrary code to be executed remotely by exploiting flaws in how software handles memory. They occur when a program lacks sufficient bounds checking on user input written to a buffer, allowing an attacker to overwrite adjacent memory and hijack the program flow. While techniques like data execution prevention and stack canaries provide some protection, buffer overflows remain a threat due to weaknesses in software testing and development practices. Careful coding through measures like code reviews is the best way to prevent buffer overflows.
The document discusses various cybersecurity threats and exploitation techniques. It introduces vulnerability scanning tools like Nessus and Nikto that can identify security weaknesses. It also discusses methods for exploiting vulnerabilities, including through SQL injection, Perl/CGI issues, and cross-site scripting (XSS) attacks. The document promotes finding and sharing hacking tricks and exploits from security conferences and communities.
RIoT (Raiding Internet of Things) by Jacob HolcombPriyanka Aash
The recorded version of 'Best Of The World Webcast Series' [Webinar] where Jacob Holcomb speaks on 'RIoT (Raiding Internet of Things)' is available on CISOPlatform.
Best Of The World Webcast Series are webinars where breakthrough/original security researchers showcase their study, to offer the CISO/security experts the best insights in information security.
For more signup(it's free): www.cisoplatform.com
This document provides an overview of operating system security. It discusses various security threats like program threats (e.g. viruses, Trojan horses), system and network threats (e.g. port scanning, denial of service attacks). It also covers cryptography as a security tool for encryption and authentication. Security measures need to be implemented at multiple levels - physical, human, operating system and network levels. Cryptography establishes secure communication over insecure mediums using encryption algorithms that encrypt messages using keys. Symmetric encryption uses the same key for encryption and decryption.
This document provides an introduction to malware techniques and classifications. It discusses the different types of malware like viruses, worms, trojans, and botnets. Viruses are classified based on their target (boot sector, files, data files) and infection mechanism (fast/slow infectors, camouflage). Early viruses included boot sector and file infectors, while macro viruses became more prevalent later as Microsoft applications gained popularity. Detection and naming of malware is challenging due to the lack of standardization and fast evolution of threats.
Threats, Vulnerabilities & Security measures in LinuxAmitesh Bharti
This presentation is made for my college presentation of explaining "Threats, Vulnerabilities & Security measures in Linux' and also suggestion how you could enhance ur Linux OS security.
This document provides an overview of various types of host-based attacks, including backdoors, viruses, worms, trojans, rootkits, and spyware. It discusses the characteristics and infection methods of each type of malicious code or software. The document emphasizes that host-based attacks are becoming more sophisticated over time, leading to an arms race between attackers and security developers, with attackers usually staying one step ahead due to their professional training and links to organized crime.
DEFCON 21: EDS: Exploitation Detection System WPAmr Thabet
The document introduces the Exploitation Detection System (EDS), a new concept for defending against advanced persistent threats (APTs) that target clients to gain internal network access. The EDS uses a memory-based approach to detect exploits and client-side attacks that bypass other security defenses. It consists of payload detection tools to find shellcodes and return-oriented programming (ROP) chains, as well as mitigation tools to prevent stack overflows, heap sprays, use-after-free attacks, and other techniques. The EDS monitors processes for suspicious memory changes and module switching to detect attacks. It correlates logs and timelines to contain breaches. The goal is to provide a multi-layered defense that monitors memory instead
This document discusses program security and various types of program flaws that can impact security. It covers defining and testing secure programs, as well as non-malicious errors like buffer overflows and time-of-check to time-of-use errors. Malicious code such as viruses, trojan horses, and worms are also examined. The document provides examples of each type of flaw and discusses controls that can be implemented at the development, operating system, and administrative levels to improve program security.
Pitfalls and limits of dynamic malware analysisTamas K Lengyel
This document discusses the pitfalls and limits of dynamic malware analysis. It summarizes that dynamic analysis aims to observe malware execution but is challenging due to evasion techniques. Several problems are outlined, including the difficulty of scalability, isolation, and stealth when analyzing malware. The document also discusses issues with using debuggers, emulators, and hypervisor introspection for dynamic analysis. It notes that complete stealth is not feasible and that halting and evasion problems cannot be fully solved.
The document discusses the Commix tool, which detects and exploits command injection flaws. It begins with an introduction to command injection attacks and why they are still prevalent. It then describes the different techniques Commix uses for exploiting command injections, including results-based, blind, time-based, and file-based techniques. The document outlines Commix's architecture, functionality, modules, and recommendations for evaluating it against vulnerable test applications.
This document discusses various security issues that can arise in source control systems. It describes buffer overflow attacks, where a program writes data past the end of a memory buffer. It also discusses citizen/casual programmers who may not follow proper security practices. Covert channels that can transfer data in violation of security policies are described. The document outlines controls and best practices around these issues like parameter checking, memory protection, and auditing and logging.
beSTORM is a security assessment tool that uncovers common security
vulnerabilities in products during the development cycle. Unlike today\'s
generation of vulnerability assessment tools, beSTORM does not look for certain
attack signatures or attempt to locate known vulnerabilities in products, but rather
performs an exhaustive analysis in order to uncover new and unknown
vulnerabilities in network products. beSTORM, the Second Generation Fuzzer from Beyond Security attempts to exhaustively
check the protocol implementation of applications.
Breaking Antivirus Software
Joxean Koret, COSEINC
SYSCAN 2014
I'm not sure whether i'm allowed to upload this slide somewhere else or not, but this is a nice and fun read
"If your application runs with the highest privileges,
installs kernel drivers, a packet filter and tries to
handle anything your computer may do...
- Your attack surface dramatically increased."
This document discusses attacking and exploiting antivirus software. It begins by describing how antivirus engines work and how their functionality can increase vulnerabilities. The document then details initial experiments fuzzing 14 antivirus engines, finding vulnerabilities like heap overflows and integer overflows. Specific vulnerabilities are listed for products like Avast, AVG, and BitDefender. Exploitation techniques are briefly covered, noting how antivirus engines can be exploited remotely similar to other applications due to issues like modules without ASLR. In-memory fuzzing is suggested as a way to more efficiently test for crashes.
This document discusses attacking and exploiting antivirus software. It begins by describing how antivirus engines work and how their functionality can increase vulnerabilities. The document then details initial experiments fuzzing 14 antivirus engines, finding remote and local vulnerabilities. Specific vulnerabilities are listed for various antivirus products. Statistics on fuzzing various engines are provided. The document concludes by discussing remote exploitation of antivirus engines, noting that despite ASLR, many engines still have exploitable issues due to non-ASLR modules or RWX pages. The emulators used by antivirus engines are highlighted as a key part that can bypass some protections.
This document discusses breaking antivirus software by finding vulnerabilities in antivirus engines. It begins by describing how antivirus engines work and how their functionality can increase attack surfaces. The document then discusses initial experiments fuzzing several antivirus engines, finding vulnerabilities like heap overflows, integer overflows, and remote command injections. Specific vulnerabilities are also listed for engines from Avast, AVG, Avira, BitDefender, ClamAV, Comodo, DrWeb, ESET, F-Prot, F-Secure, Panda, and eScan. Statistics on initial fuzzing results for ClamAV, F-Secure, and Avast are also provided.
Security Challenges of Antivirus Engines, Products and SystemsAntiy Labs
This document discusses security challenges faced by antivirus engines, products, and systems. It notes that antivirus systems are vulnerable to malware just like other software. The document outlines threats including rootkits that can hijack antivirus software processes, format vulnerabilities that can crash engines, and privilege escalation issues. It discusses improving input validation, privilege control, testing, and secure code development to address these challenges. The goal is for antivirus software to remain vigilant against emerging threats through continued research and responsiveness.
Evading Antivirus software for fun and profitMohammed Adam
Antivirus evasion techniques are used by malware writers, as well as by penetration testers and vulnerability researchers, in order to bypass one or more antivirus software applications.
The document discusses vulnerability assessment and penetration testing (VAPT). It defines vulnerability assessment as systematically finding security issues in a network or system through scanning, and penetration testing as exploiting vulnerabilities to prove they can cause damage. The document outlines the types of VAPT testing, steps in the process, common tools used like Nmap and ZAP, and top vulnerabilities like SQL injection and XSS. It provides examples of specific vulnerabilities found like outdated themes and XML-RPC access, and their potential impacts and solutions.
This document provides information on different types of computer viruses, including resident viruses, direct action viruses, overwrite viruses, boot sector viruses, macro viruses, directory viruses, polymorphic viruses, file infector viruses, companion viruses, FAT viruses, logic bombs, Trojan horses, and worms. It defines each type of virus and provides examples. Resident viruses hide in computer memory and infect files run on the computer. Direct action viruses activate when a specific condition is met. Overwrite viruses destroy original program code by overwriting data. Boot sector viruses infect the startup sector and run at bootup. Macro viruses infect documents and applications. Directory viruses change file path locations. Polymorphic viruses encrypt themselves to avoid detection. File infector viruses
DEF CON 27 - workshop ANTHONY ROSE - introduction to amsi bypasses and sandbo...Felipe Prado
This document contains biographies of three individuals - Anthony Rose, Jacob Krasnov, and Vincent Rose - who are co-founders of BC Security and researchers focused on security topics like Bluetooth, wireless security, and embedded systems. It then provides an overview of a session about techniques for obfuscating malware to avoid detection by defenses like AMSI and sandboxes. The document outlines goals, expectations, and provides brief explanations of key concepts like AMSI, malware triggering, and Empire tutorials.
Hacking involves exploiting vulnerabilities in computer systems or networks to gain unauthorized access. There are different types of hackers, including white hat hackers who perform ethical hacking to test security, black hat hackers who perform hacking with malicious intent, and grey hat hackers who may sometimes hack ethically and sometimes not. Ethical hacking involves testing one's own systems for vulnerabilities without causing harm. Vulnerability assessments and penetration tests are common ethical hacking techniques that involve scanning for vulnerabilities and attempting to exploit them in a controlled way. Popular tools used for ethical hacking include Kali Linux, Nmap, Metasploit, and John the Ripper.
1. The document discusses various techniques for confining untrusted code, including chroot jails, virtual machines, and system call interposition.
2. System call interposition monitors applications' system calls and blocks unauthorized ones, implementing fine-grained access control policies. However, specifying the right policy for each application can be difficult.
3. Virtual machines isolate applications by running them within isolated guest operating systems. However, covert channels still allow some information to leak between virtual machines.
Real-World WebAppSec Flaws - Examples and Countermeasuesvolvent
A presentation at the Sydney WebApp meeting for the security stream. Covers some easy to follow examples of more common things found and general recommendations for development teams.
Firewalls are systems designed to control network access by enforcing an access control policy. They work by examining packets and filtering them based on rules like IP addresses, protocols, and ports. There are different types of firewalls including packet filtering, proxy, and application layer firewalls. While firewalls help protect networks from unauthorized access and provide logging, they have limitations as they only control connectivity and not other aspects of security like encryption. It is important to take additional precautions like using strong passwords, keeping software updated, and practicing safe online habits.
Mitigating overflows using defense in-depth. What can your compiler do for you?Javier Tallón
Defense-in-depth is based on the principle that, while no security is perfect, the presence of many independent layers of defense will geometrically increase an attacker's difficulty in breaking through the walls and slowing them down to the point where the effort to carry out an attack is not worthwhile. Each layer multiplies the effects of the previous layer. If the outer wall deters 90% of attacks, and the inner walls deter 90% of attacks, then in combination they deter 99% of attacks. Defense-in-depth defense techniques place core assets behind varied and individually effective layers of security, each of which must be circumvented for an attack to succeed.
There are many options provided by your compiler that can help you mitigate known attacks such as buffer overflow without touching a single line of code. In this presentation, we will take a historical look at the mitigations proposed over time by cybersecurity researchers, and how they have been violated, forcing the development of new and ingenious countermeasures.
Penetration testing involves assessing an organization's security processes and vulnerabilities by simulating real-world attacks. This is done through methodologies like OSSTMM and standards like CIS guides and ISO 2700x. The goals are to estimate security, gain unauthorized access to systems, and access certain information/data. Approaches include perimeter, wireless, and internal testing from user workstations or network segments. Real attacks aim to hack, while penetration testing is legal and aims to help organizations. Common tools used include Nmap, Metasploit, Cain & Abel, Aircrack, and browser/notepad. Examples demonstrated password cracking, SQL injection exploitation, and privilege escalation in Active Directory. Wireless, social engineering,
This document discusses program security and various types of program flaws that can impact security. It covers defining and testing secure programs, as well as non-malicious errors like buffer overflows and time-of-check to time-of-use errors. Malicious code such as viruses, trojan horses, and worms are also examined. The document provides examples of each type of flaw and discusses controls that can be implemented at the development, operating system, and administrative levels to improve program security.
Pitfalls and limits of dynamic malware analysisTamas K Lengyel
This document discusses the pitfalls and limits of dynamic malware analysis. It summarizes that dynamic analysis aims to observe malware execution but is challenging due to evasion techniques. Several problems are outlined, including the difficulty of scalability, isolation, and stealth when analyzing malware. The document also discusses issues with using debuggers, emulators, and hypervisor introspection for dynamic analysis. It notes that complete stealth is not feasible and that halting and evasion problems cannot be fully solved.
The document discusses the Commix tool, which detects and exploits command injection flaws. It begins with an introduction to command injection attacks and why they are still prevalent. It then describes the different techniques Commix uses for exploiting command injections, including results-based, blind, time-based, and file-based techniques. The document outlines Commix's architecture, functionality, modules, and recommendations for evaluating it against vulnerable test applications.
This document discusses various security issues that can arise in source control systems. It describes buffer overflow attacks, where a program writes data past the end of a memory buffer. It also discusses citizen/casual programmers who may not follow proper security practices. Covert channels that can transfer data in violation of security policies are described. The document outlines controls and best practices around these issues like parameter checking, memory protection, and auditing and logging.
beSTORM is a security assessment tool that uncovers common security
vulnerabilities in products during the development cycle. Unlike today\'s
generation of vulnerability assessment tools, beSTORM does not look for certain
attack signatures or attempt to locate known vulnerabilities in products, but rather
performs an exhaustive analysis in order to uncover new and unknown
vulnerabilities in network products. beSTORM, the Second Generation Fuzzer from Beyond Security attempts to exhaustively
check the protocol implementation of applications.
Breaking Antivirus Software
Joxean Koret, COSEINC
SYSCAN 2014
I'm not sure whether i'm allowed to upload this slide somewhere else or not, but this is a nice and fun read
"If your application runs with the highest privileges,
installs kernel drivers, a packet filter and tries to
handle anything your computer may do...
- Your attack surface dramatically increased."
This document discusses attacking and exploiting antivirus software. It begins by describing how antivirus engines work and how their functionality can increase vulnerabilities. The document then details initial experiments fuzzing 14 antivirus engines, finding vulnerabilities like heap overflows and integer overflows. Specific vulnerabilities are listed for products like Avast, AVG, and BitDefender. Exploitation techniques are briefly covered, noting how antivirus engines can be exploited remotely similar to other applications due to issues like modules without ASLR. In-memory fuzzing is suggested as a way to more efficiently test for crashes.
This document discusses attacking and exploiting antivirus software. It begins by describing how antivirus engines work and how their functionality can increase vulnerabilities. The document then details initial experiments fuzzing 14 antivirus engines, finding remote and local vulnerabilities. Specific vulnerabilities are listed for various antivirus products. Statistics on fuzzing various engines are provided. The document concludes by discussing remote exploitation of antivirus engines, noting that despite ASLR, many engines still have exploitable issues due to non-ASLR modules or RWX pages. The emulators used by antivirus engines are highlighted as a key part that can bypass some protections.
This document discusses breaking antivirus software by finding vulnerabilities in antivirus engines. It begins by describing how antivirus engines work and how their functionality can increase attack surfaces. The document then discusses initial experiments fuzzing several antivirus engines, finding vulnerabilities like heap overflows, integer overflows, and remote command injections. Specific vulnerabilities are also listed for engines from Avast, AVG, Avira, BitDefender, ClamAV, Comodo, DrWeb, ESET, F-Prot, F-Secure, Panda, and eScan. Statistics on initial fuzzing results for ClamAV, F-Secure, and Avast are also provided.
Security Challenges of Antivirus Engines, Products and SystemsAntiy Labs
This document discusses security challenges faced by antivirus engines, products, and systems. It notes that antivirus systems are vulnerable to malware just like other software. The document outlines threats including rootkits that can hijack antivirus software processes, format vulnerabilities that can crash engines, and privilege escalation issues. It discusses improving input validation, privilege control, testing, and secure code development to address these challenges. The goal is for antivirus software to remain vigilant against emerging threats through continued research and responsiveness.
Evading Antivirus software for fun and profitMohammed Adam
Antivirus evasion techniques are used by malware writers, as well as by penetration testers and vulnerability researchers, in order to bypass one or more antivirus software applications.
The document discusses vulnerability assessment and penetration testing (VAPT). It defines vulnerability assessment as systematically finding security issues in a network or system through scanning, and penetration testing as exploiting vulnerabilities to prove they can cause damage. The document outlines the types of VAPT testing, steps in the process, common tools used like Nmap and ZAP, and top vulnerabilities like SQL injection and XSS. It provides examples of specific vulnerabilities found like outdated themes and XML-RPC access, and their potential impacts and solutions.
This document provides information on different types of computer viruses, including resident viruses, direct action viruses, overwrite viruses, boot sector viruses, macro viruses, directory viruses, polymorphic viruses, file infector viruses, companion viruses, FAT viruses, logic bombs, Trojan horses, and worms. It defines each type of virus and provides examples. Resident viruses hide in computer memory and infect files run on the computer. Direct action viruses activate when a specific condition is met. Overwrite viruses destroy original program code by overwriting data. Boot sector viruses infect the startup sector and run at bootup. Macro viruses infect documents and applications. Directory viruses change file path locations. Polymorphic viruses encrypt themselves to avoid detection. File infector viruses
DEF CON 27 - workshop ANTHONY ROSE - introduction to amsi bypasses and sandbo...Felipe Prado
This document contains biographies of three individuals - Anthony Rose, Jacob Krasnov, and Vincent Rose - who are co-founders of BC Security and researchers focused on security topics like Bluetooth, wireless security, and embedded systems. It then provides an overview of a session about techniques for obfuscating malware to avoid detection by defenses like AMSI and sandboxes. The document outlines goals, expectations, and provides brief explanations of key concepts like AMSI, malware triggering, and Empire tutorials.
Hacking involves exploiting vulnerabilities in computer systems or networks to gain unauthorized access. There are different types of hackers, including white hat hackers who perform ethical hacking to test security, black hat hackers who perform hacking with malicious intent, and grey hat hackers who may sometimes hack ethically and sometimes not. Ethical hacking involves testing one's own systems for vulnerabilities without causing harm. Vulnerability assessments and penetration tests are common ethical hacking techniques that involve scanning for vulnerabilities and attempting to exploit them in a controlled way. Popular tools used for ethical hacking include Kali Linux, Nmap, Metasploit, and John the Ripper.
1. The document discusses various techniques for confining untrusted code, including chroot jails, virtual machines, and system call interposition.
2. System call interposition monitors applications' system calls and blocks unauthorized ones, implementing fine-grained access control policies. However, specifying the right policy for each application can be difficult.
3. Virtual machines isolate applications by running them within isolated guest operating systems. However, covert channels still allow some information to leak between virtual machines.
Real-World WebAppSec Flaws - Examples and Countermeasuesvolvent
A presentation at the Sydney WebApp meeting for the security stream. Covers some easy to follow examples of more common things found and general recommendations for development teams.
Firewalls are systems designed to control network access by enforcing an access control policy. They work by examining packets and filtering them based on rules like IP addresses, protocols, and ports. There are different types of firewalls including packet filtering, proxy, and application layer firewalls. While firewalls help protect networks from unauthorized access and provide logging, they have limitations as they only control connectivity and not other aspects of security like encryption. It is important to take additional precautions like using strong passwords, keeping software updated, and practicing safe online habits.
Mitigating overflows using defense in-depth. What can your compiler do for you?Javier Tallón
Defense-in-depth is based on the principle that, while no security is perfect, the presence of many independent layers of defense will geometrically increase an attacker's difficulty in breaking through the walls and slowing them down to the point where the effort to carry out an attack is not worthwhile. Each layer multiplies the effects of the previous layer. If the outer wall deters 90% of attacks, and the inner walls deter 90% of attacks, then in combination they deter 99% of attacks. Defense-in-depth defense techniques place core assets behind varied and individually effective layers of security, each of which must be circumvented for an attack to succeed.
There are many options provided by your compiler that can help you mitigate known attacks such as buffer overflow without touching a single line of code. In this presentation, we will take a historical look at the mitigations proposed over time by cybersecurity researchers, and how they have been violated, forcing the development of new and ingenious countermeasures.
Penetration testing involves assessing an organization's security processes and vulnerabilities by simulating real-world attacks. This is done through methodologies like OSSTMM and standards like CIS guides and ISO 2700x. The goals are to estimate security, gain unauthorized access to systems, and access certain information/data. Approaches include perimeter, wireless, and internal testing from user workstations or network segments. Real attacks aim to hack, while penetration testing is legal and aims to help organizations. Common tools used include Nmap, Metasploit, Cain & Abel, Aircrack, and browser/notepad. Examples demonstrated password cracking, SQL injection exploitation, and privilege escalation in Active Directory. Wireless, social engineering,
Impurities of Water and their Significance.pptxdhanashree78
Impart Taste, Odour, Colour, and Turbidity to water.
Presence of organic matter or industrial wastes or microorganisms (algae) imparts taste and odour to water.
Presence of suspended and colloidal matter imparts turbidity to water.
Third Review PPT that consists of the project d etails like abstract.Sowndarya6
CyberShieldX is an AI-driven cybersecurity SaaS web application designed to provide automated security analysis and proactive threat mitigation for business websites. As cyber threats continue to evolve, traditional security tools like OpenVAS and Nessus require manual configurations and lack real-time automation. CyberShieldX addresses these limitations by integrating AI-powered vulnerability assessment, intrusion detection, and security maintenance services. Users can analyze their websites by simply submitting a URL, after which CyberShieldX conducts an in-depth vulnerability scan using advanced security tools such as OpenVAS, Nessus, and Metasploit. The system then generates a detailed report highlighting security risks, potential exploits, and recommended fixes. Premium users receive continuous security monitoring, automatic patching, and expert assistance to fortify their digital infrastructure against emerging threats. Built on a robust cloud infrastructure using AWS, Docker, and Kubernetes, CyberShieldX ensures scalability, high availability, and efficient security enforcement. Its AI-driven approach enhances detection accuracy, minimizes false positives, and provides real-time security insights. This project will cover the system's architecture, implementation, and its advantages over existing security solutions, demonstrating how CyberShieldX revolutionizes cybersecurity by offering businesses a smarter, automated, and proactive defense mechanism against ever-evolving cyber threats.
WIRELESS COMMUNICATION SECURITY AND IT’S PROTECTION METHODSsamueljackson3773
In this paper, the author discusses the concerns of using various wireless communications and how to use
them safely. The author also discusses the future of the wireless industry, wireless communication
security, protection methods, and techniques that could help organizations establish a secure wireless
connection with their employees. The author also discusses other essential factors to learn and note when
manufacturing, selling, or using wireless networks and wireless communication systems.
本資料「To CoT or not to CoT?」では、大規模言語モデルにおけるChain of Thought(CoT)プロンプトの効果について詳しく解説しています。
CoTはあらゆるタスクに効く万能な手法ではなく、特に数学的・論理的・アルゴリズム的な推論を伴う課題で高い効果を発揮することが実験から示されています。
一方で、常識や一般知識を問う問題に対しては効果が限定的であることも明らかになりました。
複雑な問題を段階的に分解・実行する「計画と実行」のプロセスにおいて、CoTの強みが活かされる点も注目ポイントです。
This presentation explores when Chain of Thought (CoT) prompting is truly effective in large language models.
The findings show that CoT significantly improves performance on tasks involving mathematical or logical reasoning, while its impact is limited on general knowledge or commonsense tasks.
How Binning Affects LED Performance & Consistency.pdfMina Anis
🔍 What’s Inside:
📦 What Is LED Binning?
• The process of sorting LEDs by color temperature, brightness, voltage, and CRI
• Ensures visual and performance consistency across large installations
🎨 Why It Matters:
• Inconsistent binning leads to uneven color and brightness
• Impacts brand perception, customer satisfaction, and warranty claims
📊 Key Concepts Explained:
• SDCM (Standard Deviation of Color Matching)
• Recommended bin tolerances by application (e.g., 1–3 SDCM for retail/museums)
• How to read bin codes from LED datasheets
• The difference between ANSI/NEMA standards and proprietary bin maps
🧠 Advanced Practices:
• AI-assisted bin prediction
• Color blending and dynamic calibration
• Customized binning for high-end or global projects
Rigor, ethics, wellbeing and resilience in the ICT doctoral journeyYannis
The doctoral thesis trajectory has been often characterized as a “long and windy road” or a journey to “Ithaka”, suggesting the promises and challenges of this journey of initiation to research. The doctoral candidates need to complete such journey (i) preserving and even enhancing their wellbeing, (ii) overcoming the many challenges through resilience, while keeping (iii) high standards of ethics and (iv) scientific rigor. This talk will provide a personal account of lessons learnt and recommendations from a senior researcher over his 30+ years of doctoral supervision and care for doctoral students. Specific attention will be paid on the special features of the (i) interdisciplinary doctoral research that involves Information and Communications Technologies (ICT) and other scientific traditions, and (ii) the challenges faced in the complex technological and research landscape dominated by Artificial Intelligence.
3. Overview
Validate all input
Avoid buffer overflows
Program internals…
Careful calls to other resources
Send info back intelligently
4. Validating input
Determine acceptable input, check for
match --- don’t just check against list of
“non-matches”
– Limit maximum length
– Watch out for special characters, escape chars.
Check bounds on integer values
– E.g., sendmail bug…
5. Validating input
Filenames
– Disallow *, .., etc.
Html, URLs, cookies
– Cf. cross-site scripting attacks
Command-line arguments
– Even argv[0]…
Config files
6. Avoiding buffer overflows
Use arrays instead of pointers (cf. Java)
Avoid strcpy(), strcat(), etc.
– Use strncpy(), strncat(), instead
– Even these are not perfect… (e.g., no null
termination)
Make buffers (slightly) longer than
necessary to avoid “off-by-one” errors
7. Program internals…
Avoid race conditions
– E.g., authorizing file access, then opening file
Watch out for temporary files in shared directories
(e.g., /tmp)
Watch out for “spoofed” IP addresses/email
addresses
Simple, open design; fail-safe defaults; completge
mediation; etc.
Don’t write your own crypto algorithms
– Use crypto appropriately
8. Calling other resources
Use only “safe” library routines
Limit call parameters to valid values
– Avoid metacharacters
Avoid calling the shell
9. User output
Minimize feedback
– Don’t explain failures to untrusted users
– Don’t release version numbers…
– Don’t offer “too much” help (suggested
filenames, etc.)
Don’t use printf(userInput)
– Use printf(“%s”, userInput) instead…
10. Source code scanners
Used to check source code
– E.g., flawfinder, cqual
“Static” analysis vs. “dynamic” analysis
– Not perfect
– Dynamic analysis can slow down execution,
lead to bloated code
– Will see examples of dynamic analysis later…
12. Addressing buffer overflows
Basic stack exploit can be prevented by marking
stack segment as non-executable, or randomizing stack
location.
– Code patches exist for Linux and Solaris.
– Some complications on x86.
Problems:
– Does not defend against `return-to-libc’ exploit.
• Overflow sets ret-addr to address of libc function.
– Some apps need executable stack (e.g. LISP interpreters).
– Does not block more general overflow exploits:
• Overflow on heap: overflow buffer next to func pointer.
Patch not shipped by default for Linux and Solaris
13. Run-time checking: StackGuard
Embed “canaries” in stack frames and
verify their integrity prior to function return
str
ret
sfp
local
top
of
stack
canary
str
ret
sfp
local canary
Frame 1
Frame 2
14. Canary types
Random canary: (used in Visual Studio 2003)
– Choose random string at program startup.
– Insert canary string into every stack frame.
– Verify canary before returning from function.
– To corrupt random canary, attacker must learn current
random string.
Terminator canary:
Canary = 0, newline, linefeed, EOF
– String functions will not copy beyond terminator.
– Attacker cannot use string functions to corrupt stack
15. Canaries, continued…
StackGuard implemented as a GCC patch
– Program must be recompiled
Minimal performance effects:
Not foolproof…
16. Run-time checking: Libsafe
Intercepts calls to strcpy (dest, src)
– Validates sufficient space in current stack
frame:
|frame-pointer – dest| > strlen(src)
– If so, does strcpy.
Otherwise, terminates application
dest
ret-addr
sfp
top
of
stack
src buf ret-addr
sfp
libsafe main
17. More methods …
Address obfuscation
– Encrypt return address on stack by XORing
with random string. Decrypt just before
returning from function.
– Attacker needs decryption key to set return
address to desired value.
PaX ASLR: Randomize location of libc
– Attacker cannot jump directly to exec function
18. Software fault isolation
Partition code into data and code segments
Code inserted before each load/store/jump
– Verify that target address is safe
Can be done at compiler, link, or run time
– Increases program size, slows down execution
19. Security for mobile code
Mobile code is particularly dangerous!
Sandboxing
– Limit the ability of code to do harmful things
Code-signing
– Mechanism to decide whether code should be
trusted or not
ActiveX uses code-signing, Java uses
sandboxing (plus code-signing)
20. Code signing
Code producer signs code
Binary notion of trust
What if code producer compromised?
Lack of PKI => non-scalable approach
21. “Proof-carrying code”
Input: code, safety policy of client
Output: safety proof for code
Proof generation expensive
– Proof verification cheaper
– Prove once, use everywhere (with same policy)
Prover/compiler need not be trusted
– Only need to trust the verifier
22. Sandboxing in Java
Focus on preventing system modification
and violations of user privacy
– Denial of service attacks much harder to
prevent, and not handled all that well
We will discuss some of the basics, but not
all the most up-to-date variants of the Java
security model
23. Sandboxing
A default sandbox applied to untrusted code
Users can change the defaults…
– Can also define “larger” sandboxes for
“partially trusted” code
– Trust in code determined using code-signing…
24. Some examples…
Default sandbox prevents:
– Reading/writing/deleting files on client system
– Listing directory contents
– Creating new network connections to other
hosts (other than originating host)
– Etc.
26. Verifier
Java program is compiled to platform-
independent Java byte code
This code is verified before it is run
– Prevents, for example, malicious “hand-
written” byte code
Efficiency gains by checking code before it
is run, rather than constantly checking it
while running
27. Verifier…
Checks:
– Byte code is well-formatted
– No forged pointers
– No violation of access restrictions
– No incorrect typing
Of course, cannot be perfect…
28. Class loader
Helps prevent “spoofed” classes from being
loaded
– E.g., external class claiming to be the security
manager
Whenever a class needs to be loaded, this is
done by a class loader
– The class loader decides where to obtain the
code for the class
29. Security manager
Restricts the way an applet uses Java API
calls
– All calls to the OS are mediated by the security
manager
Security managers are browser-dependent!
30. System call monitoring
Monitor all system calls
– Enforce particular policy
– Policy may be loaded in kernel
Hand-tune policy for individual applications
Similar to Java security manager
– Difference in where implemented
32. Viruses/malicious code
Virus – passes malicious code to other non-
malicious programs
– Or documents with “executable” components
Trojan horse – software with unintended
side effects
Worm – propagates via network
– Typically stand-alone software, in contrast to
viruses which are attached to other programs
33. Viruses
Can insert themselves before program, can
surround program, or can be interspersed
throughout program
– In the last case, virus writer needs to know
about the specifics of the other program
Two ways to “insert” virus:
– Insert virus in memory at (old) location of
original program
– Change pointer structure…
34. Viruses…
Boot sector viruses
– If a virus is loaded early in the boot process,
can be very difficult (impossible?) to detect
Memory-resident viruses
– Note that virus might complicate its own
detection
– E.g., removing virus name from list of active
programs, or list of files on disk
35. Some examples
BRAIN virus
– Locates itself in upper memory; resets the
upper memory bound below itself
– Traps “disk reads” so that it can handle any
requests to read from the boot sector
– Not inherently malicious, although some
variants were
36. Morris worm (1988)
Resource exhaustion (unintended)
– Was supposed to have only one copy running, but did
not work correctly…
Spread in three ways
– Exploited buffer overflow flaw in fingerd
– Exploited flaw in sendmail debug mode
– Guessing user passwords(!) on current network
Bootstrap loader would be used to obtain the rest
of the worm
37. Chernobyl virus (1998)
When infected program run, virus becomes
resident in memory of machine
– Rebooting does not help
Virus writes random garbage to hard drive
Attempts to trash FLASH BIOS
– Physically destroys the hardware…
38. Melissa virus/worm (1999)
Word macro…
– When file opened, would create and send
infected document to names in user’s Outlook
Express mailbox
– Recipient would be asked whether to disable
macros(!)
• If macros enabled, virus would launch
39. Code red (2001)
Propagated itself on web server running
Microsoft’s Internet Information Server
– Infection using buffer overflow…
– Propagation by checking IP addresses on port
80 of the PC to see if they are vulnerable
40. Detecting viruses
Can try to look for “signatures”
– Unreliable unless up-to-date
– Encrypted viruses
– Polymorphic viruses
Examine storage
– Sizes of files, “jump” instruction at beginning of code
– Can be hard to distinguish from normal software
Check for (unusual) execution patterns
– Hard to distinguish from normal software…