iOS : Possible cache DB security issue? I currently found something interesting when browsing my iPhone app's cache.db file.

There is a table called cfurl_cache_receiver_data and there is a column called receiver_data. This contains all the HTTP Request response that my app receives from the API. The problem is there is an HTTP request that responds with the user's API key. The column shows this data in plain text.

My question is should I worry about this? We do have a way where the user can change/delete their API key as a safety protocol.

Edit :

This is where I found the cache.db just in case it helps someone understand my concern.

  /Users/(username)/Library/Developer/CoreSimulator/Devices/B24F612C-8DC2-4599-86EB-BC6D75FF05DE/data/Containers/Data/Application/97AEA1EE-28B4-4744-B23B-FA5424F98E49/Library/Caches

Ive updated my question because all the data in this column is actually responses from the API and not requests I send out.

This is stored on the users device in a directory only accessible to your app. How do you store the API key for the user normally? If the answer is in plaintext then this is no less secure.

If you store the API key in an encrypted environment - say the keychain - then this makes that protection pointless.

If you are concerned set the cache control headers appropriately on sensitive requests. I.e.

  Cache-Control: no-cache, no-store


JAVA (Web Application) Public Data Assigned to Private Array-Typed Field Referring to this CWE-496, it mentions that because of the application assigning public data to a private array it is equivalent to giving public access to the array.

This is not clear to me because usually before you can use the object, we must declare the object. For example:

User user = new User();

I am going to make two assumptions, and correct me if I am wrong.

Every new Object() will create different instance
Inside User object, there is a private array userRoles and a public
setter named setUserRoles(String[] userRoles)

My question is, since the object will declare new instances every time, how does the situation defined in CWE happen?

For example:

How come the user.setUserRoles() in a second request will overwrite the values of the userRoles variable in first request or the values of userRoles variable in other pages?

The issue is that the private data of the object becomes a reference to the data which is passed as parameter in the setter (which is a public one).

Arrays in Java are passed by reference (See this question), so that means that :

public void setUserRoles(String[] userRoles) {
    this.userRoles = userRoles;
}

String[] param = ...;
User.setUserRoles(param);

Actually puts the reference of the param variable into the private member. If someone were to modify this param variable afterwards, it would modify the private member as well. The problem in this case is that the array is mutable as you can see in this SO question.

This behaviour defies the principle of encapsulation and therefore is wrong.

Finally, this has nothing to do with how many instances of the object you can create. It's a problem that is related to the object itself (so all object you would create would have the same problem).

A solution to the problem would be to make a full copy of the parameter array into the private member array (using clone() for example).


Identify an HTTP scanner from some HTTP headers My personal Apache server occasionally gets some pretty obvious scans for vulnerabilities.  The client that does the scanning does GET HTTP/1.1 methods on a variety of URLs, and uses a variety of User-Agent fields.  The scanner seems to always use the following HTTP headers in every request (not necessarily in this order):

Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Close

I've tried some of the open source web client libraries (Perl's libwww-perl, PHP's curl library, Python, wget, pmapwn, maybe a few others) but by default, nothing I've tried generates HTTP requests with that combination of Accept, Accept-Language and Accept-Encoding header values.

Based on Nmap operating system identification shortly after scans, and p0f passive identification, the client or scanner most probably runs on Linux.

What HTTP client or vulnerability scanner generates GET requests with those header values?  Can anyone point me to the source code for it?

EDIT

I'll give more info.  The User-Agent field on this scanner sometimes shows up as "Morfeus Fucking Scanner", "Morfeus", "ZmEu", "Made by ZmEu @ WhiteHat Team - www.whitehat.ro", and possibly others.  No, it's not the pmapwn scanner that has had "ZmEu" as its User-Agent sometimes.

Accurately fingerprinting a vulnerability scanner by inspecting the HTTP header fields can be inaccurate and inefficient. Pretty much any decent http client will allow you to change/modify/add HTTP headers, so you never know if the user running it has changed those headers.

For example, a common open source vulnerability scanner skipfish has flags to mimic a browser in its request patterns. From its documentation:

  By default, skipfish sends minimalistic HTTP headers to reduce the
  amount of data exchanged over the wire; some sites examine User-Agent
  strings or header ordering to reject unsupported clients, however. In
  such a case, you can use -b ie or -b ffox to mimic one of the two
  popular browsers; and -b phone to mimic iPhone.


How to make an encrypted field searchable? I am using attr_encrypted to store many fields. Trouble is I need to be able to search some of these fields.
Take User.name.
My current database has User.e_name and User.e_name_iv. While this seems to be reasonably secure, I can't search my database for 'Joe Bloggs'.
Hashing
I then considered adding a third hashed field (User.e_name_hash) that could be used to find a field based on the hashed search term. So the 'Joe Bloggs' search is hashed, compared to all other hashed entries, and the required record is found. But to do this, I'd have to have a constant salt across all data in that field in that table (also insecure).
Impasse
Having learned that a constant salt is horribly insecure, I've run out of ideas on how best to make encrypted fields searchable. My options are:

Leave these fields plaintext.
Keep these fields encrypted and add a hashed field with something like a constant lengthy salt with SHA512 (the salt would be constant within all records in each database field but unique to that field).
Have my database decrypt every record every time a search is needed (doable now but inefficient as volume grows).

Note that the fields I need to search through are not super high sensitive - they're not akin to medical records or classified information.
What are your recommendations?

You know the answer already: 3 if you want security.
If this gets too slow, you'll need a better computer, or more than one. As simple as that.

Anyways, please don't think you can decide how sensitive what data is, because this varies greatly for different persons and situations. Real story: A person losing 20% of the yearly income because it was known that he ate vanilla icecream. You can't imagine how this can happen? Exactly, that's why: Don't decide for other people what to keep secret and what not.
.


Sites sending email using my email address Today I was looking through my spam folder and noticed an email: The sender was myself, assume my email is xxx@gmail.com, on the from section it says

  xxx@gmail.com via clicktheprofits.com

Does this mean that site can also send email to other people using my email as the title?

If this is dangerous what can I do to stop it?

Thanks!

Well the bad news is you can't stop it, it is fairly easy to spoof the email address. And you can't effectively stop others from using your email.

The good news for you is that most of the time your spam folder is going to filter this out due to the spam like nature as well as the other identifying factors. Emails have some information in the headers that usually will be a sign that the email is spoofed thus alerting your spam detection system. Since gmail is picking it up as spam and NOT your account then whoever receives that type of email will be placed in the spam folder while your legit emails should be fine.

Bad News - Can't stop them effectively
Good News - Hard to really spoof an email the correct way and change and alter each bit of information correctly, and spam detectors are getting better and better


Can Client Certificates be tied to a Specific Server Certificate? I have a Root Certificate Authority and and Intermediate Certificate Authority.

I have created a certificate for the server. SSL on Apache is working fine.
Browser recognizes my Chain of Trust with no issues.

Now I have created a client certificate to restrict access to the site to those with certs.
This is also working fine to Authenticate or Deny depending if I have installed the cert in my browser.

But I don't believe anything linked my client cert to my server cert. Maybe I missed a switch or option when creating the client certificate?

So if my Intermediate CA was to sign a cert for another server that a different set of clients should be accessing, wouldn't my original client cert authenticate on that server as well?

If that is the case, what would my option be? Create a separate Intermediate Certificate Authority for each server that needed separate clients?

Instead of setting up multiple CAs, you can just tweak access settings in your Apache configuration. Look at Require directive:

http://httpd.apache.org/docs/2.2/mod/core.html#require

If you set any authentication requirement, then default Require level is implicitly set to "valid-user" (anyone that meets other requirements).

But using Require, optionally combined with AuthGroupFile, you can limit access to users with particular certificates.

For example, you can issue client certificates with embedded email addesses in 2 domains:

name.surname@domain1.com
name.surname@domain2.com

Then on first Apache you can allow only users with certificates for *@domain1.com, and on second Apache only users from *@domain2.com.


Generation of OTP in a 2FA email method I am aware of the fact that authentication via email is discouraged, but in some specific applications and given as secondary method, we all agree that it may be useful.
Having said that, what is the preferred way to generate OTP to send via email and validate in the application in a 2FA system? Should I use TOTP algorithm and verify passcodes valid in the arch of 10-15 minutes? Or should I just generate a secure random 6-digit passcode (e.g. through random_int) and save it temporarily in the database/session data for confronting it with the one provided by the user? Others?

There isn't a big difference between using TOTP and storing a random integer with an expiry time.
However, while the later is easier to implement, I would suggest using TOTP for email too, and then let people verify using either a normal TOTP token (either hardware or software) or falling back to your email-TOTP if they haven't registered a TOTP. Using the same method for both seems better, and even if you aren't using a normal TOTP today, you should, and this will make it easier to implement it later.


ssh/scp from server to server -- set permissions (no root) I have access as a regular user (not as root) to two servers. Server A is accessible via ssh with a username and password, Server B can only be accessed using a keycard and pin. I need to set up a cron script on Server B so that data can be transferred from Server B to Server A at regular intervals for processing (processsing is done on Server A and at the moment I do the transfer manually).

The question is: What is the most secure way to do this? If I set up an ssh id from Server B to Server A, how can I make sure that if someone were to gain access to Server B could not just simply ssh into Server A and hack Server A as well? Ideally I would need to restrict access from Server B to Server A to a single folder; this would have been streoightforward if I had root permissions but I am only a regualr user.

Any ideas?
Thanks

If your server B has fuse and sshfs installed and both servers are permanent (fix ip, 24/7) your best choice is to user-mount the other server's directory and copy files over that channel.

On serverB:

$ mkdir $HOME/serverA
$ sshfs youruser@serverA.domain:restricteddirectory serverA

from now, your scripts on serverB can copy files into $HOME/serverA. This is reasonably secure solution. Since the channel is set up manually, no password, no unprotected key-files can be stolen. Furthermore the possible attacker will be unable to escape from restricteddirectory on ServerA. All goals are reached. The backside is that you have to remount the directory every time  (either) server reboots. In enterprise environment this might be a minor problem, and you can set up a script/cron to check the connection and send you a mail if the other side is unavailable (so you can log in and fix the problem).

If the server has dynamic IP or offline often this approach won't work. Using automated scripts for accessing serverA will require you to store your password or unprotected priv-key on serverA, therefore there is no way to prevent successful attacker of serverB to reach serverA with your privilege level. (However this absolutely doesn't mean that (s)he can "hack Server A". You are unprivileged user. But your account will be compromised for sure).

In fact, you might try to fiddle about screen and ssh-agent to avoid storing credentials, but you will face one of the problem before, if serverB reboots you have to login and fix things.

The only truly secure solution which comes into my mind in this case to use some intermediate storage. Set up an account at a third place (serverC), restrict access to serverA and serverB's IP address and you can proxy all data easily. At serverA your pull scripts will get the data. Because you never access serverA from serverB, your account cannot be hacked even if serverB silently compromised at root level.


Employee privacy when using company iPhone on own Wi-Fi If I use a company iPhone on my own home Wi-Fi, does the employer still have visibility on activity? If so, how much assuming there are no hidden keylogging programs.

If the device is enrolled on your company's network (using a device enrollment / Mobile Device Management process), they could have a lot of visibility.  iOS allows for a "always-on VPN" (link).  This allows for either certain or all applications to use a particular VPN connection; which could be your place of employment.  With the implementation of enforced / transparent proxies and custom CA's, he/she can also intercept SSL data easily and see what you do on the network.

So in essence, your employer could see a lot of traffic going back and forward to your device, manage your apps, remove all/some of your content, etc.


Risks and prevention methods associated with flagging or downvoting? Similar to bots posting spam posts and blogs is it possible that bots with legible registered accounts go around the site flagging  or downvoting everything on the site. If yes, what can I do to prevent this? For example, I understand there are numerous ways to try and prevent machine generate activities like CAPTCHAs, honeypots or third-party spam detection services and so on,  but what should I use here?

Also are there anymore threats in implementing flagging/downvoting?

The easiest way to prevent it is to have have a reputation or karma system like you see on most sites, this one included. If you can't implement such a system, then you're not left with much in the way of prevention aside from the usual bot prevention methods you've mentioned. What you would need to focus on would be detection.

A detection algorithm would help you identify and block any bots that make it through your CAPTCHAs, etc. This algorithm would look at a number of user metrics and compare them to some baseline average, any user with a one or more anomalous metrics would get flagged for investigation.

Some metrics could be:

age of account vs number of up/down votes
recent rate of up/down votes
ratio of up:down votes.
ratio of votes to page/article views
ratio of votes to comments
ratio of votes that match the majority opinion

The list would obviously depend on the site and interactions available, but you get the idea.


Are there Bluetooth attacks on Smartphones that will not notify the user of the attack? Are there Bluetooth attacks on Smartphones that will not notify the user of the attack?

Specifically forcing a reset or opening an application.

It amazes me that you did not search for keywords like bluetooth hacking or something similar.
Of course it possible - its called bluesnarfing.

http://en.wikipedia.org/wiki/Bluesnarfing


Upgrade to the WebSocket protocol and security According to my understanding there is upgrade to the WebSocket protocol during the WebSocket handshake.
We use HTTPS connections (we do not use HTTP).
Should we configure the WebSocket protocol in a firewall between a browser and a server?
Or enough to allow only HTTPS between a browser and a server?
There are some libraries (e.g SockJS) that performs a WebSocket emulation.
Is it enough to allow only HTTPS in a firewall between a browser and a server?
Updated
Last, but not least: in all cases we need to protect our application against WebSocket attacks at the application level (not via firewall):

DDOS attacks
CSRF protection
Authentication
Authorization
...

Correct?

Should we configure the WebSocket protocol in a firewall between a browser and a server?

Can you? It is unclear what specific capabilities your firewall has so it is unknown if you can do any special filtering for the WebSocket protocol at all. If your firewall offers the possibility and there is only WebSocket to expect, then why not restrict it to what you expect.

Or enough to allow only HTTPS between a browser and a server?

Again, nothing is known about your firewall can do in the first place so no recommendations can be done here.

There are some libraries (e.g SockJS) that performs a WebSocket emulation. Is it enough to allow only HTTPS in a firewall between a browser and a server?

SockJS is just HTTP(S). So exactly this should be allowed.

Last, but not least: in all cases we need to protect our application against WebSocket attacks as described in many threads here.

I'm not sure which attacks you refer to since "described in many threads" does not really point out specific attacks. But very likely a generic firewall will not protect against attacks specific to WebSockets.


Do websockets represent a security problem to my local machine? To work around a problem with IntelliJ, I have been recommended to configure my local Docker daemon to work on port 2375 without TLS authentication. I am concerned however that a malicious website could connect to the Docker service and launch containers.

I've read mailing list entries from 2015 saying that at some point Chrome will not be permitted to connect to localhost by default but I don't know if this has happened yet.

I've never heard of this attack so perhaps it's not possible. Is there something authoritative I could read to set my mind at rest?

In a word, YES, websockets DO represent a security problem to your local machine.

First off, some clarification there is a difference between binding to 127.0.0.1 and 0.0.0.0 ... as one will only allow your computer to connect and the other will allow any computers on your network to connect.  BOTH of these are dangerous, however, binding to 127.0.0.1 is slightly more secure.

Most (all?) current web browsers have limitations on what is known as cross site scripting.  This means if a page hosted by foo.com attempts to make an ajax request to bar.com it will fail unless it is explicitly allowed via CORS.  This said ... websockets are NOT limited by CORS and thus foo.com could theoretically open a websocket connection to 127.0.0.1 ... and take control of your docker service.

I will note that this is not a common attack vector as it requires the target to actively be using a web browser on a device running docker with this option enabled (rare) ... but its still an attack surface.

Further Reading:

How Cross-Site WebSocket Hijacking could lead to full Session
Compromise
OWASP Top 10 Details About WebSocket Vulnerabilities and Mitigations


What does GUID have, that a Whirlpool, MD5 or SHA-2 hash don't? I'm trying to understand the use of GUID and what has always left me wondering is what's so special about them that I should consider using them instead of rolling my own type of unique ID. In other words, why can't I use a Whirlpool hash like:

4bec4b25ff46e09f7d7adb5b4e6842f871d7e9670506d1a65af501cf96ddf194d0132b85e66c1baaeb5319f2030b607121aae2a038458d32b4d4b03dfd46d5ea

instead of a GUID, MD5 or SHA2 for the same reason?

I could even tailor the length using substrings of a Whirlpool hash and calculate the probability of collision myself instead of being restricted by GUID specification.

First of, a hash function has an input: you hash something. GUID (actually UUID) don't have any input. To generate "unique identifiers" with a hash function, you just don't use a hash function; you have to define what you are actually hashing.

There are several standard methods for generating UUID; all these methods aim at achieving "uniqueness" of the generated identifiers. Method 3 uses the MD5 hash function: you generate the UUID by hashing some data which is already inherently unique worldwide (e.g. a URL), but longer than the 16 bytes of an UUID. This method closely resembles what you suggest, except that it defines clearly what is hashed (or at least, it states in plain words that when hashing, you hash something and your UUID won't be more unique than what you hash). Method 5 is like method 3, but with SHA-1 instead of MD5 (output is truncated to 128 bits).

Other methods use physical or configuration elements of the local machine (e.g. MAC address and current time for method 1). Most method are "cooperative": they ensure uniqueness but new UUID values can be predicted. For many security-related protocols, when you need unique ID, you actually need ID that won't collide with previous ID (or will do so only with negligible probability) and cannot be predicted by attackers; for that, you need "method 4": the 128-bit UUID contains 122 random bits, generated from a cryptographically strong PRNG. This method will provide "strongly unique" identifiers, and is better than any homemade construction.


Should one buy new hardware after a system compromise? If there are places on a laptop malicious programs can leave elements, hooks, backdoors etc, in locations such as BIOS, device controllers, firmware etc - what confidence can one have in wiping the disk and installing a fresh OS image.

If I were to first use data destruction software to overwrite every individually addressable location on the hard disk, before secondly installing a freshly downloaded Windows image, this presumably isn’t much of a solution.

Surely, binning and buying a replacement is the only option?  (Which would be dire, since the machine is new.)

You must do risk management. How likely it is that you and your laptop have been personally targeted? The vast majority of persistent malware operates entirely in software, and formatting the disk is more than enough to remove all traces of it. Sophisticated, firmware-resident malware is extremely rare and unlikely to be a threat unless you have particular reason to think that you are at risk. It is possible to check for firmware-level malware, but it requires a good understanding of common x86 architecture, and access to hardware to read from the flash chips. At a minimum, you'd need SPI readers for the BIOS/UEFI, and JTAG probes for the hard drive firmware and related.

If you don't have any reason to think you're being targeted, just format and re-install.


How to protect the code of Windows applications against path traversal? I'm writing a simple HTTP server in Lua and while I can easily find resources on how to secure against Unix directory traversal, I already found some caveats in the Windows version. While I'm already looking for C:\ at the beginning (C being "any letter" here), ../ and /.. (with backslash as the directory delimiter as well) and \\ at the beginning. The code will be passed to ANSI C fopen(), compiled under Microsoft Visual C++ v10 (no idea what's the system call this call compiles to). Are there any other traps I should look out for in this case?

I'm only interested in solutions involving the modification of my code, most preferably by checking the filename against patterns.

Paths in Windows are relatively complex. In particular, Microsoft has a habit of inventing new features, so even if your HTTP server is really protected against path traversal today, it may become vulnerable under next version of Windows, possibly even a small update.

Right now, your are using "blacklist-thinking": you are trying to enumerate all the "bad" constructions, and specifically detect them. Blacklists are known to be fragile because it is very hard to be exhaustive, and then to remain exhaustive. You should use whitelist-thinking, i.e. define a syntax for allowed paths and exclude everything else.

For instance, define that an allowed path consists in a sequence of components separated by slash characters ("/", not "\"), with the following rules:

A component contains only letters, digits, dashes ("-"), underscores ("_") or dots (".").
A dot may not appear as first or last character in a component.
There shall not be any two consecutive dots in a component.
A component contains at least one character, and at most 64 characters (arbitrary limit).
No two consecutive slashes may appear in a path.
A path does not begin with a slash.
A path is not empty.
The total length of a path shall not exceed 250 characters.

All these rules are easy to enforce programmatically. And they guarantee a "clean local path" that you can send to fopen(). Note that most Windows functions are perfectly happy with the "/" as separator, but you may still want to replace all slashes by backslashes (after checking all the rules above, of course).


Using crunch, but using words like chars I would like to generate a wordlist that contains words and 2 digit numbers. I want crunch to shuffle them like 15password15, password15, 15password...

Is there any way I can do that with crunch or do I need another script?

Depending on your use case, there are a couple of options:

If you want a lot of control over the contents, but you also want many permutations, then scripting it yourself (as already suggested in the comments) may be the only way to do it.
Otherwise, tools from the hashcat family can be used to generate all possible permutations up to a given element count. Especially for the general use case from the title of your question "using words like chars", princeprocessor is an effective choice.

At a minimum, it sounds like you'll need to use a script to generate all possible two-digit numbers, and then combine that list with your other dictionary, and then feed them into a tool that will generate many different combinations for you. There are a couple of ways to do this.

Here are the files that I'll use in some examples.

$ cat - >words.list
password
qwerty
iloveyou

$ seq -w 1 99 >digits.list

$ head -1 digits.list
01

$ tail -1 digits.list
99

Combining a list of strings into all possible combinations is what password crackers usually called a combinator attack. Some variants of this attack only combine each element twice, or three times, but it sounds like you're looking for a range of element counts. Otherwise, combinator and combinator3 from hashcat-utils could generate the lists:

$ combinator words.list digits.list | head -5
password01
password02
password03
password04
password05

$ combinator3 digits.list words.list digits.list | head -5
01password01
01password02
01password03
01password04
01password05

If you only needed to iterate through all possible numbers in a specific position (at the end or at the beginning), a hybrid attack (wordlist + mask) would work, and you could use hashcat's --stdout option to generate the list:

$ hashcat --stdout -a 6 words.list ?d?d | head -5
password12
password08
password20
password31
password98

$ hashcat --stdout -a 7 ?d?d words.list | head -5
12password
08password
20password
31password
98password

But if you want more than 3 elements per result -- strings like '1515password15', 'passwordpassword1515', '15password15password' -- etc, then you'll run into the two- or three-element-per-string limits of these approaches.

If you are willing to be a little relaxed about composition - in other words, if it's OK if some of the strings are digits-only sequences like "013522" or words with no digits at all, you can escape those limitations with princeprocessor (pp64), like so:

$ cat words.list | pp64 | tail -5
iloveyouquerty
passwordpassword
iloveyoupassword
passwordiloveyou
iloveyouiloveyou

princeprocessor will generate all possible permutations, up to the element count that you specify.

One potential issue is that princeprocessor will try to order the output in favor of shorter strings first, so you'll get a lot of numbers before you start to hit the words:

$ cat digits.list words.list | pp64 | head -100000000 | tail -5
07743573
08743573
09743573
10743573
11743573

If you want more control over the contents - for example, all of the resulting strings must contain at least one set of non-digits, I'd simply filter the results with grep:

$ cat digits.list words.list | pp64 | egrep [a-z] | head
password
iloveyou
01qwerty
02qwerty
03qwerty
04qwerty
05qwerty
06qwerty
07qwerty
08qwerty
09qwerty
10qwerty

$ cat digits.list words.list | pp64 | egrep [a-z] | egrep [0-9] | head -5000 | tail
4145qwerty
4245qwerty
4345qwerty
4445qwerty
4545qwerty
4645qwerty
4745qwerty
4845qwerty
4945qwerty
5045qwerty

If you only want results that guarantee at least one element from both list, but you also want a variable number of elements, filtering the output from princeprocessor is the best way that I know of.

Filtering the output from princeprocessor with grep is a bit of a workaround (for there being no tool that natively understands that you want at least one element from each list). As far as I know, if that's your use case, it would require new development (either writing your own script, or modifying the princeprocessor source).


My old iPad 2 has a persistent email virus "Virus Detected" that pops up whenever I attempt to use Safari I've attempted to delete the email, change the email and to close Safari but the email keeps returning and makes using the browser impossible. I have no intention of either calling the provided phone number or sending this email as it directs me to do. The email is as follows:

Email addressed to: foo@example.com
Subject: Warning! Virus Detected! Immediately Call Apple Support +1-800-876-6855. Your credit card details and banking information.Your e-mail passwords and other account passwords.Your Facebook, Skype, AIM, ICQ and other.Call Apple Support +1-800-876-6855. Your private photos, family photos and other sensitive files.Your webcam could be accessed remotely by stalkers with a VPN virus.
message "Apple Tech Support !cc=bar@example.com"

How do I remove this ..... email, regain access to my browser and irradiate this virus from my iPad 2 which can no longer receive operating system and virus updates. This virus is not present on my new iPad Air 2, which I'm using to send this inquiry.

It is a little confusing that you say it is an email, but it is causing safari to become unusable. If you can clarify whether this is an email in apple mail app or a web page you cannot get rid of in safari (or an email appearing in a web interface email service) that would help.

follow the advice in the comment above regarding clearing of browser history.

If that still won't work, I would use the option within the settings menu to wipe the ipad and reset to factory defaults. However, make sure you apply iOS updates BEFORE you re-connect to your Apple ID as it is possible that the bad data has been uploaded to your iCloud account. The most important thing you need to do is get the iOS updates applied before any personal data is loaded onto your device.

If the problem persists, I would contact the real Apple support.


Should one worry about using an outdated version of Firefox? I have access (and the general public) to a computer lab with many workstations. Each workstation is identical in terms of software, hardware and the version of firefox.

The version that is installed is 21.0, and the latest (as of  this writing) is 33.3.
After noticing the version I do not use Firefox on these computers, instead using TeamViewer to connect to my computer and use the browser there.

Does it matter that much if an outdated version of firefox is being used? I'm concerned because I would imagine that many security fixes would be in place since then.

It does matter that much via the amount of vulnerabilities and exploits available that affect that particular version. For example, that version had 8 vulnerabilities, 3 of which were critical. From the current release, to that version, there were 53 CRITICAL vulnerabilities discovered. Developers won't go back and say: "Well the exploit on version 28 didn't affect version 23," - it will never be known unless you're a researcher, and your disclosure states something like: "Affects ALL versions prior too..."

So unless you're willing analyze all bugs for all versions prior to current, there is a strong possibility that newer bugs, can affect older versions. Bottom line, you're allowing N amount of critical vulnerabilities in your experience. A workaround would be to use the portable edition of Firefox if you don't have installation permissions.


unprivileged or privileged malware for botnets For those malwares which are used to organize botnets to DDOS a website, they just need to send and receive HTTP packets. Do they need to be privileged?

If they dont need to be privileged, is it true that any unprivileged program I run on my machine could contain malicious code to DDOS a website with my bandwidth?

Sending HTTP request packets doesn't requires any privilege. The main aim behind sending HTTP request is to force the server or application to allocate the maximum resource in response to a single request. Two type of request can be used GET and POST. HTTP GET request is used to request the static contents and POST is used to request the dynamic contents. To make the attack as havoc to the application the attacker uses POST request because it may uses parameters that can be used to trigger the complex server-side processing.

Since to perform the attack Network attack vector is required, so if a unprivileged program has flaw that can be exploited to send the requests.


Is prior work experience in development or other fields required to break into and acquire advanced knowledge of penetration testing? I study computer science and I have been trying to get into information security,
 web application penetration testing in specific.

I have a not-bad knowledge programming,networking and operating systems.
 I have been through few of the recommended material for beginners. books,
 vulnerable by design applications mentioned in answers to similar questions like: web application hacker's handbook, most of the available vulnerable by design apps like DVWA, Mutillidae, webgoat, bwapp, also did many online webapp security challenges, so I have a very decent understanding of how
 web applications work,how major vulnerability types work and how they manifest in
 the wild, however, when I try to apply this knowledge to a real-life application like a
 bug bounty program I get overwhelmed by the complexity of modern-day applications
 and find it difficult to interpret the data I collect to get a real understanding of what I'm
 facing to conduct an effective penetration test. somehow there's a gap between all the
 information in books, sitting duck-like vulnerabilities in vulnerable by design apps, and
 real life complex applications,especially when looking for vulnerabilities that have a big
 effect on the organization being tested instead of looking for missing headers or uninteresting
 low-impact vulns.

is this confusion because I lack the background required to conduct such complex tasks effectively
 like an ex-developer or sysadmin with more knowledge of how things go on the other side? is this
 background something that I should acquire first through a couple of years of experience before
 making the move into infosec or should I keep at it the way I'm doing until it ticks?

sounds like it is time to write your tools. The gap between insecure by design and real world hacking lies in automating how you perform your manual attacks. gl.


Is 2FA a false sense of extra security on a mobile phone? I understand that 2FA increases security if you are using two different devices, for instance a computer and a mobile phone.
I fail to understand how these security measurements help if you are doing everything on your mobile device.
Imagine if I login to my bank website with username and password om my mobile phone. I will then get an SMS code on my mobile phone, which I can of course read, so with which I can simply proceed to login.
The same principle applies if the 2FA is an e-mail or an authenticator app.
Of course your mobile phone can be locked by a PIN code and you still need the username/password for the bank website.
However your browser allows you to remember the username and password, leaving only the PIN code as only safeguard (if you have one).
Isn't this just as insecure as just having 1FA ?
Shouldn't we consider anyone who logins via his mobile phone just as insecure as 1FA?
And if so why don't websites block this approach?
What's the point of 2FA anyway if an increasing amount of users just use their mobile phone for these things?
Isn't the risk of people having their phone stolen a lot higher than a computer or laptop stolen ? Even worse here is that most website allow you to use "forgot my password" to send to your e-mail account, which probably is also on your mobile phone. So in that case even your bank account is only protected by the PIN code of your mobile phone.
Is there a possibility to improve the security when one is using only his mobile phone ?

No, it’s not as insecure as 1FA. 2FA is about making life inconvenient for an attacker, not for yourself. With 1FA, anyone anywhere in the world can access your bank account if your username and password leak or can be guessed. 2FA means that the attacker has to have your phone, or another way to access your text messages if your second factor is SMS (which is deprecated). It’s true that you should avoid storing your first and second factors in the same place where possible, but even if you don’t do that, it’s still far more secure than 1FA.


How can I fuzz standalone applications? How can I fuzz standalone applications because I can't seem to wrap my head around how a fuzzer can "feed" fuzz data to a standalone application.

Most online resources use web servers as examples. The other resources give examples like opening a file with an extremely long name. my question is are there any tutorials on how one may fuzz a given software other than sending overlong get requests or opening files with long name? I'm mainly a web app pentester and I know that usually javascript limitations can be overcome by using a proxy, intercepting the request, modifying request and sending it along it's way. Is there a way to do this for binary software? what other vectors are there?

If you are asking how to fuzz-test a web application, many black-box automated web pentesting tools will already perform this.  Rather than sending in randomly generated inputs, they usually send in inputs that have been carefully crafted to be likely to expose certain kinds of vulnerabilities.

If you are doing fuzzing of a web application by hand, see also fuzzdb, a database of sample inputs that have been chosen to try to expose certain common vulnerabilities.

If you are looking for a tutorial on how to do pen-testing of a web application, you should probably ask that question separately.  There are many, many books on the subject, and some material on this site.  See, e.g., Books about Penetration Testing, Where can I find a solid BURP tutorial?, etc.

If you are looking for a tutorial on fuzzing of standalone applications, let us know.  There are many tools, tutorials, and books available.


What is the cost of SSL encryption? So, I've been looking over various websites that don't handle confidential information per se, but do accept user authentication tokens (i.e. you can create accounts with them and associate an e-mail/username with a password).

Specifically, I've been checking to see whether they implement any kind of protection with regards to these tokens, and I've been finding a disturbing number of sites simply send these tokens as plaintext POST data.

Many sites do encrypt, despite the fact that they don't handle confidential information. Other, content-equivalent sites, don't bother.

I've mentioned this to the administrators of the sites I found. One changed policy. Some didn't respond. Once used the argument that a lot of other sites don't do it, so he shouldn't bother, and it might be prohibitively expensive.

Obviously, the 'bystander effect' argument is an awful one.
But since I don't have the numbers, and would default to using SSL myself, is implementing this basic security feature really all that expensive?

Or, more specifically, his argument was that his site wasn't large enough to make the financial investment worth it. Is this an argument that makes sense?

-- And, not strictly important, but I'm curious --

Has any research been done on how many people are careful about password use? Has anyone ever put a sniffer near a public wifi and checked to see whether this could be a problem in practice for John Q. Public?

EDIT: Also, relating to that last, not-strictly-necessary, question...
In order to do a conclusive study on this subject and draw realistic conclusions, it seems like someone would have to break a number of laws, even if they were very careful in the way they handled the data, and used it for nothing apart from the study. Are there currently avenues in place by which this type of research can be done in a legal, controlled, responsible manner?

SSL is not expensive by itself. When implementing site-wide SSL for Gmail, Google found it to increase CPU load by about 1% and network load by about 2%. Of course, not every site is Gmail. Biggest costs about SSL are:

You have to manage a server certificate. The buying fee is small, much smaller than the administration time anyway, and it won't get far.
Transparent proxies (as employed by some ISP) won't be as efficient (but that's their problem, not yours).
The initial connection to your site is a bit longer (but we are talking about a one-shot sub-second delay here).

There is a widespread myth about how encryption is necessarily expensive, and that's just that: a myth, i.e. a much deformed piece of information from much older times. A basic server will support 100 MBit/s SSL with less than 10% of a single CPU core. In 1996, when a server could be a 33 MHz 80386, SSL could be viewed as expensive, but this was quite some time ago.


What exactly does `ssh -T user@domain verify` do? The example I'm specifically thinking of is:

ssh -T git@github.com verify

Looking at the docs (man ssh) I can see that -T is the flag to "Disable pseudo-terminal allocation", but what implications does that actually have on the verification?

Does this command go to the network at all?

Disable pseudo-terminal allocation

This means that the command verify is run directly on the other side and the standard input/output/error are connected directly to your local terminal.

For commands, there is usually no difference, but it is difference if you want to run interactive scripts (shell). In that point, your output would not be handled by remote terminal, but with your own and the output would not be so pretty. You can try with ssh -T other_host, where you have terminal access (you don't have on github). On github, it is also one of the resources-saving task, since TTY allocation is "not for free" if you have 31 million users (October 2018).


Cleaning pendrive without infecting I'm using Ubuntu without ever (knowingly) having had any virus issues.

Recently I put a usb pen in a computer in a print shop, and their Windows machine told me that it was infected. I would like to clean up this usb pen to start using it again.

I hope, that this virus is only for Windows and I am safe. But can I even be sure about that?

Is formatting of a USB pen always enough to be sure that it is clean? Or should I "clean deeper"?

Assuming that the virus is 'dangerous' for my Linux machine (which I hope/think not) how can I safely clean it? I mean, even inserting it into my Linux machine might cause some autorun stuff to happen, right?

First of all, the antivirus should have performed the cleanup itself if it's worth its salt. Just to be sure, you can safely wipe your USB key with the following command:

sudo dd if=/dev/zero of=/dev/[device]

...[device] being your pendrive of course. You'll have to format it again afterwards. All your data will be overwritten, though.
Whether the virus can be harmful to your Linux machine, I'd say "most likely not", but I don't have anything to back that up.


Is it possible to Decrypt two different encrypted text to the same identical text value? I know that in Hash Collision theory, you end up having a collision if two different text strings results into being the same hash values. But my question here is related to encryption.

1) I am encrypting a text "Hello" using Random IV vector as part of my encryption.

2) I am encrypting the same "Hello" text without using Random IV vector as part of my encryption.

The Cipher generated for each of the cases above should be different. But is there any chance that I should be able to decrypt it to "Hello"?

Kindest Regards,

Yes, you can decrypt both to "Hello".

However, you must always set the IV with a random value that you will use only once. You should also use a high level library, not the encryption primitives directly, or else you are most certainly bound to make mistakes that will break the security properties of the encryption.


How can I use a VPN connection on Eduroam? I'm an italian student. I recently bought a VPN from Private Internet Access. Everything works fine from home and my mobile but it does not on University's WiFi Eduroam. Does anyone know if there's a way to go through VPN in Eduroam?

I can be more specific if needed.

Thank you.

How lucky! I just solved the problem myself looking here. This is a guide for the US but it works also in Italy.

I am using OpenVPN so i just had to connect on port 1194 with udp.


secure the code of a server physically rented to the client My company rents a Debian server to the clients, that they have to connect to their own network.

The server provides various services, an administration interface, and connects to the online service of my company.

As the client has access to the computer running these services, he can read their source code on the hard drive. A malicious user can search for security vulnerabilities, and it may help to reverse engineer the online services.

How can I protect the source code from the client?

Edit:
The source code is in PHP, and some users have a root account on their servers (soon to be removed)

I'm not sure why you allow untrusted users root access to server, but the only approaches I can think of is to deny such users access to the directory containing the PHP code.

This can either done by:

Encrypting the directory containing the PHP code and decrypting it on the fly with a key that is obtained from a secure server
Fetching the PHP code from a secure location at boot-up, then caching it in memory and using that
Running the PHP code on a different server that the users don't have access to, fetching data from the shared server (e.g. via NFS) where necessary.

Note that the first two approaches are susceptible to various ways of someone sneaking a look at the code; e.g. by adding an extra PHP file that examines the other PHP files and returns their code content. You might be able to get around that by doing something clever with php-fpm so that the encrypted code is run in a single php-fpm instance and everything else is run in a second, but I wouldn't bet against someone with root access getting around that.

I would go for the third approach myself, as that's the only way to secure it.


Did Google relax their SHA1 deprecation schedule? In the original post on the subject they said that in Chrome 41:

  Sites with end-entity certificates that expire on or after 1 January 2017, and which include a SHA-1-based signature as part of the certificate chain, will be treated as “affirmatively insecure”. Subresources from such domain will be treated as “active mixed content”.

  The current visual display for “affirmatively insecure” is a lock with a red X, and a red strike-through text treatment in the URL scheme.

I did some upgrades to beat the deadline, but left the old certificate on one less-important server so I could observe this new failure mode for myself when Chrome 41 came out.

Chrome 41 is stable now, and I don't see the red X with strike-through, just the "neutral" icon that is used for unencrypted http. Clicking on that icon gives the warning about "outdated security settings", and the certificate information includes:

Signature algorithm   sha1RSA
Valid to              Tuesday, June 13, 2017 7:59:59 PM

Chrome 39 showed the "padlock with warning triangle" icon, and 40 showed the "neutral" icon, just as the original announcement promised. But 41, instead of taking the next step, seems to be doing the same thing as 40.

I can't find any updated announcement from Google. Did they slow down the deprecation schedule?

Chrome 42 has now been released, and I can answer my own question: yes, they must have slowed down. 42 has the behavior that was expected in 41. I'm still not aware of any official explanation or acknowledgement of the delay.


Salt usage for Spring security? I use the Spring security for Java web applications and I have written an authentication provider which is working without salt and now I want to either add salt or alternatively use the built-in algorithms with Spring security that appear to be SHA and that can use salt that is specified with XML. In my case I didn't use SHA but AES and the input password is matched against cryptographic string that were encoded e.g. �[�s�E�qh�%"5%��g"2T��$�` that will match against back-end in this handler.

public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        String name = authentication.getName();
        String password = authentication.getCredentials().toString();
        AdministratorAccount administratorAccount = administratorAccountService.get(name);
        CryptographyProviderAES256 aes256CryptographyProvider = new CryptographyProviderAES256(256);
        byte[] mockSecretCode = new StringBuilder().append("qwertyuiqwertyui").toString().getBytes();
        byte[] encrypted = aes256CryptographyProvider.encrypt(password.getBytes(), mockSecretCode);

        //TODO: salt
        if (administratorAccount.getPassword().equals(new String(encrypted))) {
            List<GrantedAuthority> grantedAuths = new ArrayList<>();
            grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER"));
            Authentication auth = new UsernamePasswordAuthenticationToken(name, password, grantedAuths);
            return auth;
        } else {
            return null;
        }
    }

Should I use SHA instead that is built-in with Spring security and can be added with XML instead? My Account class has variables for password and salt, how should I implement a salt? Should I generate a salt from time + random when creating the account like this:

 final Random r = new SecureRandom();
 byte[] salt = new byte[32];
 r.nextBytes(salt);

Do yourself a favour, don't try to invent your own password hashing functions. In the field of cryptography in general, and of password hashing in particular, amateur constructions are almost invariably weak, because you cannot test for security. Any programmer can make some code which is sound, i.e. which works, but no programmer can make sure that what he produced is secure.

Professional cryptographers cannot invent secure algorithms by themselves either; however, they know it. So when they produce a new algorithm, they show it to their fellow cryptographers, who do their best to try to break it. If the algorithm survives for sufficient time (several years), then the algorithm is deemed "probably secure enough to be used in production".

Unless you have your own cryptographer team and can afford to wait for a few years, you really need to rely on existing password hashing functions which have undergone this treatment and are still alive to talk about it. This basically means bcrypt or PBKDF2. More details here.

Also, don't use password.getBytes(). That getBytes() method uses the default charset, which depends on the current locale. This method is a great way to make code which breaks when used in another country. Instead, use an explicit charset, as in password.getBytes("UTF-8").


How to analyze and track what data a software sends? How can i track which program sends data over my network and can i see the contents of it?

If we have a AV software installed in a VM , can we see what it's sending from your pc when doing a scan?

With wireshark you can see all the incoming/out-coming traffic at your network. You can install wireshark at your vm.

It shows you a breakdown for every packet being exchanged from your network, you can see all the information of that packet including ip source, ip destinations,payload, protocol being used etc.

Once you've found a suspicious packet you can right click it -> follow stream which will show you the entire exchange of packets between your computer and the target server.For every packet you can see its payload,which is the actual content of the packet.

The payload will be in HEX form and possibly encrypted which is a downside at tracking exactly what information is sent.


Trying to understand Content-Security-Policy: Why do some sites (e.g Google) use a "nonce", but also allow all inline scripts and use of eval()? Here is an example of the CSP of accounts.google.com:

content-security-policy: script-src 'nonce-DanEwkxkS1rktq35Z1hVcg' 'unsafe-inline' 'unsafe-eval';object-src 'none';base-uri 'self';report-uri /cspreport

The "nonce" means it will add a whitelist to a script that has the unique ID of "DanEwkxkS1rktq35Z1hVcg" (if I understand correctly). But after that, they allow use of inline script tags as well as the eval() function (through "unsafe-inline" and "unsafe-eval" respectively). So what's the point of giving a specific whitelist to a script with ID "DanEwkxkS1rktq35Z1hVcg", but also allowing all inline scripts? Do I fundamentally misunderstand something about how CSP works?

"A whitelist for specific inline scripts using a cryptographic nonce
  (number used once). The server must generate a unique nonce value each
  time it transmits a policy. It is critical to provide an unguessable
  nonce, as bypassing a resource’s policy is otherwise trivial. See
  unsafe inline script for an example. Specifying nonce makes a modern
  browser ignore 'unsafe-inline' which could still be set for older
  browsers without nonce support."

The biggest advantage CSP brings is preventing inline JavaScript.  With this directive, they are overriding this protection for older browsers and it probably means that they couldn't completely re-write the client side of this application so it no longer depends on inline JavaScript.   Instead, they are relying on the site (hopefully) being coded to prevent cross-site scripting.  Using script-src Nonce allows modern browsers to allow inline scripts tagged with the matching nonce and disallow all others.

The page needs certain inline scripts to work.  Older browsers don't know about Nonces so to ensure the page still works in older browsers, 'unsafe-inline' is there.  Older browsers will allow all unsafe inline.  Modern browsers will only allow the nonced scripts.

This Stack Overflow answer is good one about nonces.

StackOverflow had a similar discussion.


Disabling Ping/ICMP Requests Are there any benefits from disabling Ping/ICMP requests on servers?

I've read where people say to do it but I can't seem to find any real benefits with it. Only more likely to cause more problems.

EDIT: All types of ICMP packets.

The theory is that it reduces the amount of information available to attackers. A good traceroute can be most informative.

In addition, and in theory, every additional service running on a machine is a possible source of vulnerabilities. The thingumajig that answers ICMP requests is no exception, although they are mostly very old and small thingumajigs whose bugs got shaken out long ago.

As always, there is a decision to be made of security vs convenience. Is the small increase in security worth the inconvenience of breaking standard diagnostic tools?


Is it safe to use non-ASLR DLL in an enabled ASLR EXE Is it safe to use non-ASLR DLL in an enabled ASLR EXE?
Would the DLL be loaded to and will use random addressed, or should all the dependencies enable ASLR?
In addition, what about other security mechanisms such as DEP and SHE?

On Windows, an executable that is ASLR aware (compiled with /DYNAMICBASE) can load a library (DLL) that is not compatible with ASLR.
In this situation the DLL will not typically use ASLR, though newer versions of Windows are becoming stricter and enforcing ASLR even on some images that don’t opt-in, unless relocations have been stripped (for example by linking with /FIXED).
Doing this can weaken the protection provided by randomised memory, because there will now be an image at a predictable address. However, there must first be some form of vulnerability in the program. Simply loading a DLL is not a vulnerability alone.
For example: a common way for malicious RTF documents to bypass ASLR in Microsoft Word after initial exploitation was to craft a document that ensures  otkloadr.dll is loaded into memory, read more here.
There’s also a useful blog from Raymond Chen about the difference between relocation and ASLR and some facts about ASLR from FireEye.
Regarding DEP, or NX, there’s a useful quote from a different Raymond Chen blog on enabling NX and ASLR:

The NX setting is process-wide, and the process takes its NX state
from the /NXENABLED state of the executable, not from any DLLs. It’s
yet another one of the module flags that are meaningless for DLLs. So
mix it up in the DLLs all you want. Nobody will care, because the flag
is ignored for DLLs anyway.


Building's server room is unlocked: What danger is my building in? In one of the buildings I work in, there are lawyers and accountants, web developers and marketers, and numerous other small businesses. Everyone's (shared) internet is routed through the same server room (which doubles as a broom closet), which is left unlocked and could be accessed by the public during working hours.

This seems to me to be a ridiculous security risk, but I don't know exactly how to quantify that to the building owner and/or the businesses at risk.

Exactly what sorts of risks are we facing and what danger are we in?

I can just walk in, plug something similar to this into your
network and read the unencrypted network traffic of the entire
building.
I can snip a few cables and cause a denial-of-service for multiple businesses. This will be pretty hard to diagnose if the building does not have a network admin on hand to deal with such issues.
I can steal all the networking equipment.

There is a whole bunch of things I can think of but it would be pointless to list them all. Locking the server room isn't that difficult..


Wireguard key exchange I'm trying to understand whether Wireguard's key re-exchanges are done inside of the existing encrypted tunnel, or if they are done outside of that existing encrypted tunnel.

Wireguard doesn't really have a key "re-exchange" like SSH does. It's just the same handshake over again. Each handshake's key is valid for a certain timeframe (say, 3 minutes). If you go to send a packet and the key has less than, say, a minute of life left, another handshake will be started, so that a new key is ready by the time the old one expires. Peers usually keep track of up to three handshakes at a time: the last successful one, the one before that (because some packets using the old key may arrive late), and the one in progress (if applicable).


CSRF prevention for RESTful services Am I right If I claim on that there doesn't exist any reliable protection against CSRF for a stateles environment today? I have a RESTful service (build with RESTEasy) that needs to be secured against CSRF attacks. I googled for statless CSRF prevention but what I found was only this article which is about double submits. According to the comments on this article, this approach isn't a secure countermeasure.

So, are there any other reliable countermeasures against this attack?

RESTful services are "stateless", except when it comes to authentication.

Authentication is a state that cannot be avoided and so it is allowed in a RESTful design.  In RESTful services, this state is often implemented as a authentication token or in the case of OAuth: an authentication-bearer token.  This token should be unknown to the attacker and is therefore: a suitable CSRF synchronization token.

After all if the attacker knew the authentication token, he wouldn't need CSRF to access the API, but he could.


Is this non-cookie based session scheme horribly vulnerable to some attack? I am working on a large web application that runs entirely within a single web-page. For various reasons we do not want to use cookies in this web application, at all, but we need to keep track of whether a user is currently logged in or not. All of our connections are over SSL. Here is how we plan to keep track of sessions:

With each response sent by the server, it sends an session token.

The session token is an encrypted string containing the following:

The UserID
A SessionID
A salt (randomly generated each time)
A current time-stamp
An expire time-stamp, exactly half an hour after the current time-stamp

When the client sends a request, it must also send this session token. The token is decrypted and the time-stamps are checked to see if they are half an hour apart, and that the present time is between the two time-stamps. If so, the request is processed, using the user ID to identify who made the request. If not, the request is not processed, and a response telling the client to log the user out is sent.

Will this system leave us horribly vulnerable to people falsely identifying as a user? Do you see any other problems with this?

KISS -- Keep It Simple, S___ (fill in what you will).

Pass only a session id to the client. Verify that session ID on the server side. The server should map out who the session id belongs to. The server should be responsible for expiring that session ID.

Under your current system, it is unclear whether a user can change their identity by changing the username. It is also unclear what will happen if they alter the timestamps.


How can an attacker use robots.txt? I want to understand how the robots.txt file can be use by an attacker. I know it can contain a list of paths and directories. Is that all or can we find more information in it?

That's all. What you see in robots.txt is all there is.

What makes it useful for attackers is that site administrators sometimes use robots.txt to hide sensitive information. If "https://www.example.com/sensitive_info" should remain hidden, it shouldn't be crawled by bots, so it should be in robots.txt. However, putting it there exposes it to attackers as well.


Clean install - Security risk old files I am running macOS 10.11. The system is as far as I know not infected, but natural I can not be sure. The system was in the past not as secure as it should have been (missing security updates and suchlike).

I want to use the opportunity of the update to 10.12 for a fresh and safer restart. I am going to make a clean install. Of course I have to copy my files to the new system. I fear that copying my old files will compromise my attempt to have a secure restart. I fear copying bad things to the new system. I will have to copy all my documents and media to the new system. Because of my very slow internet connection I also think about copying programs from the backup instead of downloading everything.

Am I too paranoid? What can I do to make it less likely that my new system is getting compromised by the files of the old system?

Thanks!

A good thing about macOS is that applications must be cryptographically signed.  But if you want to launch an application that is not signed, you can add an exception (that's why macOS typically only asks once).  By copying your home directory on a clean install, you don't migrate these exceptions, which means that any exceptions must be added again.

If you try to launch an application and macOS says it can't open it because it isn't signed, you should download it again if you want to be really sure.  If it only asks if it's okay to open it, it's correctly signed and thus not changed from its original.

However, there are two things that could go wrong:  Some programs run scripts, which are not cryptographically signed.  If someone were to change the script but not the binary, you'd never notice.  Also, if you copy the Library folder in your home directory, it may contain services that are started automatically.  I'd recommend not copying the Library folder, but just keeping it around in case you need something.  The same goes for dotfiles in your home directory.

All in all, there are some small risks involved in re-using your home directory, but unless you're really paranoid you can manage to get it relatively safe.  I myself consider it safe enough.


How to protect devices that are reliant on Bitlocker and a password without TPM? In working with a number of non-profit organizations, devices such as laptops used by staff are encrypted using Bitlocker. Unfortunately since the devices (often donated) do not feature TPM, Bitlocker has been enabled using local group policies.

The staff frequent different locations as part of their job.  As the devices store sensitive information such as personally identifiable information, financial data, etc, protection of data is paramount. Additionally users often remain logged in to multiple online services such as email e.g. GMail. The loss of the device is secondary from a financial or property perspective.

If a device is stolen does the use of Bitlocker without TPM offer a
degraded level of security comparatively?
If yes, what options are there to protect the data (assume that internet connectivity isn't always possible so access to data from services such as DropBox isn't always feasible. Staff often work on local copies of data)
If users remain logged into online services, are these at risk of being compromised should a device be stolen and if users do not log off?
In assessing a number of these devices, i have observed that Bitlocker is often suspended and has to be re-enabled manually. Does this increase the risk of data being compromised if a threat actor were to boot the device using a LiveCD for example?
Can the device be secured further? If so how? For example, should BIOS passwords be enabled?

A question on how secure a device is when using a pin did not specifically touch on the the questions above.

If a device is stolen does the use of Bitlocker without TPM offer a degraded level of security comparatively?

Yes, TPM are used to further protect the master key. Without it, bitlocker security is certainly degraded. Because of the secretive nature of Microsoft, it is impossible to say how much, but it would be recommendable not to trust it.

  If yes, what options are there to protect the data (assume that internet connectivity isn't always possible so access to data from services such as DropBox isn't always feasible. Staff often work on local copies of data)

Dropbox would not solve your issue anyway. You may want to look for other full disk encryption solutions. I personally use VeraCrypt, but other solutions are available as well. VeraCrypt uses a slow KDF instead of TPM, so as long as you use strong passwords, it will protect the data fine. (Note that if the computer is turned on, there are theoretical attacks such as cold-boot attacks, but these are very hard to pull off. If the computer is logged-in as well, then obviously no amount of encryption will help)

  If users remain logged into online services, are these at risk of being compromised should a device be stolen and if users do not log off?

Most online services allow you to log out from all computers. This should be done if a device is stolen. Also changing the passwords is advisable, as they may be saved in the browser or elsewhere in the computer. Though if the computer drive is encrypted, there is little risk.

  In assessing a number of these devices, i have observed that Bitlocker is often suspended and has to be re-enabled manually. Does this increase the risk of data being compromised if a threat actor were to boot the device using a LiveCD for example?

I am unsure about this. It seems to me this should not even really apply for a computer without a TPM.

  Can the device be secured further? If so how? For example, should BIOS passwords be enabled?

BIOS passwords provide little additional security. I would suggest a good FDE and strong password on boot + mediocre password for windows account. Then use [Windows Key + L] to lock the device whenever going away. The highest risk is often the laptop being snatched when unlocked, as it is by far easiest for the attackers.


Is there any tools out there to attack an unloaded system (on disk) I was wondering : is there any tools related to unloaded system hacking ?

I am asking this question because it seems to me that in a lot of case, people have access to random computer physical and could, for example : Boot from a USB, mount the "normal" system drive and tamper with it with full access. Even if the bios is locked, extracting a drive from a computer and using a SATA to USB cable is possible.

I have not seen much discussion on the topic online, can someone provide me interesting links on the subject ?

There's quite a bit on this out of there - there's a general principle that physical access equates to full access on a system.  There are methods that are designed to limit this - starting with full disk encryption, moving to Trusted Platform Module (TPM) systems in CPUs and support hardware that attempt to validate the firmware that is running and which have protected places for keys that are not susceptible to physical access (accessing them destroys them).

My understanding is that even with TPM, if someone REALLY, REALLY wants in and wants to spend the resources on it, they probably can.

x86 Considered Harmful describes some of the issues with Intel's current TPM and next gen TPM.  The problem is fundamentally very very difficult.


numbers printed on credit card My question is about the credit card it's self, Is there a law that requires me to have my card numbers printed on card, can I have a card that on front of card
 have my full name,
kind of card , {visa, master card, amex,discover}
the issuing Bank name
 then on back
have the good thru date
ccv security #
and all other info that is listed

if the card information that is needed to use the card is stored on the strip on the back , that is gathered when card is swiped for my protection can I have my credit card issued to me with no number so someone cant copy the info off card and use it .

The format of the card is established by the card brands and followed by the issuing banks. Banks will follow the established card production standards since most outsource their card production.

There are third party products, like this one, which do exactly like you mentioned. These products also allow you to store multiple cards on the same device. These products don't support EMV chips so their lifetime is limited as chip continues to replace mag stripe.

Finally, consider what security you are looking by hiding the card number. You are protecting yourself from someone capturing the number by seeing your card. Most credit card fraud happens via either skimmers or by capturing large numbers of cards numbers via electronic methods. Before modifying your card I would start with using chip whenever possible, being very selective of the ATMs you use, and limit the number of places where you have your credit card number stored.


PayPal payment reversal; scammer at work? For the past several days, I have received several monetary donations through PayPal for exactly 1 US dollar. Several hours after the donation is received, I also receive a notification from PayPal that they are "investigating a payment reversal," as "an unauthorized account activity claim was recently filed" against the transaction.

I've got to believe this is a scammer at work, but I can't figure out what attack vector they're trying. All of the emails I've received are legitimate; I've clicked no links in any of the emails, and manually logging into PayPal via their https address does indeed show these transactions in my history.

Is this someone testing out credit card numbers they've stolen? Are they probing my account somehow to see if there's money available to be had?

My PayPal account is not tied to my banking account, but I do have a credit card associated with it. I've seen no strange outgoing transactions; it's always a single dollar coming in, then being reversed.

Has anyone else seen this? What can / should I do?

Update 1: Some additional information in case anyone wonders about it.

I changed my password this morning, just in case.
My website has a PayPal donate button on it, which is possibly where whoever is doing this got my information.

Update 2: I did indeed contact PayPal after receiving these emails, and they agreed that things looked fishy. They recommended changing my password (which, as I mentioned before, I did), and they immediately closed out the questionable transactions. Since I took that action, however, I've gotten 2 or 3 more of these "donations" (though I have yet to see them be disputed). I should note that the person who submits the donation is ultimately the one who pays the PayPal fee (so, I end up with less than $1 for a $1 donation). This is a very strange situation to say the least...

Is this someone testing out credit card numbers they've stolen?

Yep. You're being used as a canary to test stolen credit cards. They found your website at random and see you're willing to accept payments. They send you a token payment of $1 to see if the card works. (They used to use iTunes to do this, where they'd buy a $1 song.)

When they see the card works, they buy as many disposable Visa gift cards as they can. This racks up a few hundred to a few thousand dollars on the card. (They used to buy goods directly but it's easier for merchants to stop shipment of a flatscreen TV than it is a stack of gift cards.)

The cardholder or the FI notices the charges and starts reversing everything, but the money has already been laundered in the form of gift cards.

Thus, the scammer successfully manages to convert stolen credit into a fistful of untraceable, disposable gift cards. These can either be used for personal gain or re-sold for a slightly lesser amount to yield actual cash.


How to secure an email subscription endpoint? I have a simple static webpage that lets users sign-up for a newsletter. Once they enter their email address, it gets sent to a public endpoint (AWS Lambda). This lambda function forwards the email address to a subscription list manager endpoint (Mailchimp) along with the API key.

The connection between the AWS Lambda function and Mailchimp is secure as no one has the API key and can't hammer my Mailchimp account. But my concern is the connection between the static webpage and the AWS Lambda endpoint. This endpoint is public and unauthenticated and I'm worried about things like people flooding the endpoint with fake addresses.

How can I best secure this? The static page is a simple Gatsby bundle.

Does the Lambda endpoint have to be public?
If your web application is running on AWS, perhaps you can route the traffic internally in a VPC and make the Lambda private / only accessible from the webserver.

Furthermore make sure that the you filter possible spam as much as possible at the webpage. Use honeypot field(s) and CAPTCHA if possible. This will be your 'first line of defense'.


Is it OK to use two halves of a key independently? If I ask AWS Key Management Service for a 64-byte key, is it OK to split it in half and use each half as a separate key? e.g. the first half for encryption and the second for HMAC?

I figure that it would be ok because assuming that AWS's keys are high quality, the distribution of information in a key ought to be uniform and the values random. i.e. no byte determines anything about some other byte.

Yes. The documentation for GenerateDataKey says it generates symmetric keys, and those are generally required to be indistinguishable from uniform random data. So for practical purposes, the two halves of the 512-bit key you generate are random and independent from each other, and thus the same as if you'd generated two 256-bit keys separately.

Think of it as equivalent in practice to flipping coins. You want 256 coin flips for an encryption key, and another 256 for a MAC key, and you want to hire Mary to flip coins for you. Do you hire her once to flip 512 coins, or twice to flip 256 coins each time? It doesn't matter...

(The fact that it's symmetric keys is a relevant assumption because if this were, for example, RSA keys or some other variety whose keys aren't just uniform random bits then it'd be a whole different answer.)


Can I generate and store keys on my Yubico? Its a simple question but there's no answer in the Yubico's website

When I recive a Yubico (from the Yubico 4 series), I know I can sign code, for example. But how is the key inside it generated? Is it generated on the manufacturing process? Can I generate a key in mmy computer and upload to it?

U2F

The keys used in U2F are generated by the device it self, you can't do it yourself. Yubico's Developer webpage explain it very clearly. For short, take a look the graph below.

Device Secret is generated in manufacture phrase. As far as I know, this secret can't changed by a software tweak. AppID is equal to web service URL. At the time of generation, an integrated RNG will generate a Nonce, feed in to a HMAC-SHA256 with AppID, keyed with the device secret, the output is the private key. Then feed the private key and the AppID into the HMAC function again, concatenate the output and the nonce, which becomes the key handle. Public key is generate by the private key, and sent it with the key handle to the web service.

X.509/PIV

This is the part about code signing and the key to do. Yes, you can generate a private key on your own machine and upload it to the Yubikey. Take a look Yubico's PIV explanation. Especially articles under Introduction/Certificate slots, Tools/YubiKey PIV Manager(if you use Windows) and Guides.

OpenPGP

Yubico is a bit lack of explaining this part, so I found a great GitHub repo contributed by drduh where it contain a full explanation how to use OpenPGP with Yubikey.


How to hide the fact that a system is virtual machine from malware I've read that many types of malware scan a system for various clues regarding virtualization software, in order to stifle forensics. Is there any way to hide the fact that a computer is a virtual machine from malware?

You usually cannot hide anything from malware well coded. There are lots and lots of ways to detect a virtual machine, and some of them cannot be faked.

Simpler malwares may look on a few places, so maybe you could fool some, but sophisticated ones will look at lots of places, in a lot of points of the code. You could run it through a debugger and analyze the code while it runs, and maybe you could get all (or some) detection points.

I believe it's cheaper and faster to use a physical computer dedicated to it. Install OS, any applications, put dummy user files (pictures, music, movies, documents), navigate on a couple sites, and take a disk image. Run the malware, take another image, and work on this one.


The difference between DDoS attacks in the cloud computing and the traditional network infrastructure Is there any difference between the DDoS attack in the cloud computing and traditional network in infrastructure?

What are the important features for detection these types of attack in cloud computing environment?

My Ph.D research is about building a model to detect DDoS in the cloud environment. I, therefore, using a classification method. In my method, I trained the naïve base classifier with traditional network infrastructure dataset and test it on the cloud dataset. But the classifier misclassifies some sort of DDoS attack. For example, Smarf attack in the non-cloud dataset is misclassified as UDP attack in the cloud dataset, or normal traffic in the cloud dataset is more similar to the Ping-of-Death attack in the non-cloud dataset

I'm going to have to disagree with the other responders. There are a variety of differences that could theoretically matter. Note that none of these are guaranteed, just that they COULD.

Your adversary is probably also able to use the cloud and scale up the attack in a much more cost-effective manner.
Some advanced adversaries could attempt something along the lines of a side channel attack. For example, if you are known to operate in a specific region or datacenter, they could attempt to choke out your available resources.
As a DDOS victim in the cloud, you could end up experiencing the pain of the attack in two different ways: one, unavailability, but the second, increased cost of resources to handle the attack.
As a DDOS victim in the cloud, you may be able to better cope with an attempted DDOS, because you may have easier access to resources that can scale with the attack. For example, you could more easily scale up your infrastructure, you are likely to have greater bandwidth, and you can more easily add new security "devices" into your traffic flows.

On the other hand, detection varies little. There's no silver bullet, no automatic answer. It's an active area for academic research. However, because you don't typically don't operate the full stack of your network infrastructure in the cloud, the cloud service provider has an interest in helping you deal with these threats. They may provide tools, documentation, or support to a bit to help with detection. Consult your provider, but as one example, AWS has some suggestions on how to use its tools for DDOS mitigation here: https://aws.amazon.com/answers/networking/aws-ddos-attack-mitigation/


How to configure Burp Suite if system proxy is handled by websense and application can only be accessed through IE? I need to capture a traffic of the application that is compatible only for IE browser, and the proxy server is handled by websense. Thus, system proxy can't be set.

Is it possible through Upstream Proxy server settings? If yes, what are the configuration specifications?

We recommend you perform testing from a system that you have administrative control over, so you can set the proxy settings. This could be a virtual machine.

If that's not possible, you may be able to set the proxy directly in the registry. There's some information on this question.

You may still need to set an Upstream Proxy within Burp, depending on the setup of the network you're on.


VPN rarely works on coffee-shop wifi I work at coffee shops a lot and signed up for Mullvad VPN to be more secure (after reading many reviews). The service works fine at home but rarely works on public Wi-Fi, whether from a chain like Starbucks or at a public library. Is it common for these places to block VPNS or is there something else I need to do before connecting to mine?

Mullvad is an openvpn implementation, which (therefore) should be capable of using either IPSec (over UDP) or TLS (over TCP).  Some customer grade routers have problems with IPSec but, more likely, a coffe shop simply allows ports 80 and 443 through the firewall and noting else.  The default OpenVPN port is 1194 which may be blocked by a restrictive firewall.

I strongly believe that Mullvad will allow you to use port 443 to connect to their servers.  The following is an excerpt from my old Mullvad openvpn.conf.  It may be outdated since I do not use it in more than two years, but I do not believe that they changed the policy:

# Notice to Mullvad customers:
#
# Apart from openvpn, you also need to install the
# package "resolvconf", available via apt, e.g.
#
# For those of you behind very restrictive firewalls,
# you can use our tunnels on tcp port 443, as well as
# on udp port 53.

Therefore:

Configure the VPN to use TLS (--tls-client/proto tcp-client)
Use port 443 (remote openvpn.mullvad.net 443)

And you should be able to avoid (most) issues with IPSec incompatibility and restrictive firewalls.


How to sniff direct websocket connection in android ( i.e. no HTTP Upgrade connections ) using BURP? I've pentested a lot of websites and a few apps too but this app eludes them all.
On the websites, when there's a websocket upgrade the BURP proxy recognizes it and starts showing it in the websockets tab. Somewhat similar happens on the apps, but not on this one.

This app doesn't do any such thing.

How this app works :

Gets it's websocket endpoints from a config, downloaded from a website. Then 'mysteriously' it makes a connection to the websocket server, which isn't visible in the BURP proxy.

My Setup :
1. Rooted phone with frida running and objection framework for ssl unpinning ( although not needed
here, as I am already able to see all the http(s) traffic from the app ).

FYI I've added my BURP cert as root authority in my android 7.0 phone.

I've also tried 'invisible proxying' ( not sure how it works ) didn't work either.

Any ideas would help ?

Thanks.

Finally I got it working.

The Problem :

The thick client wasn't respecting the mobile's proxy setting and 'invisible proxying' didn't help either as the app was using direct IP to communicate. ( This part took me a lot of time figuring out, rest part was almost ~20 minutes )

How I got it working :

Since I had a rooted phone I used ProxyDroid ( with Global Proxy setting ON, which requires root ), to configure iptables and others to route all traffic through my BURP proxy.

Bonus - Things learnt :

I had realized, while I started exploring this problem for the past 36 hours that the reason AND solution to this problem would definitely add to my android application testing skills.
This saved me a lot of endpoints I might have missed on my further android application pentesting.


What key metrics should a CIO rely on to gauge the extent of IT risk exposure? Note - This was originally asked in another Area51 proposal, which has since been deleted.

From the ISACA CGEIT (Certificate in Governance of Enterprise IT) the key categories are:

Respond to business requirements in
alignment with business strategy
Respond to governance requirements
in line with board direction
Ensure satisfaction of end users
with service offerings and service
levels
Optimise the use of information
Create IT agility
Define how business functional and
control requirements are translated
in effective and efficient automated
solutions
Acquire and maintain integrated and
standardised application systems
Acquire and maintain an integrated
and standardised IT infrastructure
Acquire and maintain IT skills that
respond to IT strategy
Ensure mutual satisfaction of third
 party relationships
Ensure seamless integration of
 applications into business
 processes
Ensure transparency and
 understanding of IT cost, benefits,
 strategy, policies and service
 levels
Ensure proper use and performance
 of the applications and technology
 solutions
Account for and protect all IT
 assets
Optimise the IT infrastructure,
     resources and capabilities
Reduce solution and service
 delivery defects and rework
Protect the achievement of IT
 objectives
Establish clarity of business
 impact of risks to IT objectives
 and resources
Ensure that critical and
 confidential information is
 withheld from those who should not
 have access to it
Ensure that automated business
 transactions and information
 exchanges can be trusted
Ensure that IT services and
 infrastructure can properly resist
 and recover from failures due to
 error, deliberate attack or
 disaster
Ensure minimum business impact in
 the event of a IT service
 disruption or change
Make sure that IT services are
 available as required
Improve IT's cost efficiency and
 its contribution to business
 profitability
Deliver projects on time and on
 budget, meeting quality standards
Maintain the integrity of
 information and processing
 infrastructure
Ensure IT compliance with laws,
 regulations and contracts
Ensure that IT demonstrates cost
 efficient service quality,
 continuous improvement and
 readiness for future change

Interestingly, you will see that only nine of those are really to do with IT security, and of those, five are around resilience, so the CIO's view of risk is not the same as an IT security professional's.

So realistically, the stats required would be in reference to:

protecting assets - attacks detected on assets vs successful attacks
access control - breaches of access control, failures to include users in policy etc
trust of automated processes - audit flags, control failures
Ensuring business continuity - successful testing of BC/DR plans
Reduction of impact - cost analysis post attacks (successful or otherwise)
Compliance - audit/regulator findings


Does finding deleted thumbnails of webpages I visited mean that I am under surveillance? I accidentally formatted my external HDD. Used several recovery programs and when it was recovered, I found many files that I have never stored them on that HDD, such as thumbnails of the images and webpages I have visited on my Mac. Does it mean that I'm under surveillance?

No, it does not mean you are under surveillance.

There are loads of reasons why thumbnails of webpages you visited would be on your hard drive. The browser might cache them, e.g. for using on the "frequently visited" page. The OS might create thumbnails of images in your temporary internet files, for quick viewing in file explorers. There are loads of temporary files on your hard drive that various programs and the OS creates for different reasons. When you run a file recovery program, you recover these files together with your ordinary documents.

So why did the files end up on your external drive, and not your main one? That is admittably a bit weird. The obvious explanation is a backup, but you say you never did one. Maybe some kind of sync function that was automatically turned on or that you forgot about using? Maybe some program using a temp folder on the wrong drive?

But more importantly, if you were under surveilence, the malware would most likely not produce files like that. Taking screenshots and storing them on the hard drive seems like a very impractical way of performing surveilence.

So, while I can not tell for sure why the files were there, I think just assuming surveillance here fails Occam's razor. Sure, I can not prove that you are not under surveillance - maybe you are - but the discovery of those files alone would not lead me to believe so.


What 2nd factor accepted on a mobile app? To respect the 2FA philosophy, after a 1st factor of authentication (login/password), we need to request a 2nd factor of authentication.

But for a mobile app, I suppose we can't use SMS OTP, email OTP or TOTP (with another mobile app) because all of theses techniques could be accessed from the same mobile?

Thereby for a mobile app the only 2nd factor authorized are a separate device (eg: Yubikey, Nitrokey, etc)?

Is it enough if we request something we known (userID + hex PIN code) and something we have (this mobile device only)? There is a ECDSA private key installed on the device and the server can check it's the good mobile device with the signature.

It all depends on what threat you want to counter. Your proposed threat mitigation (requiring a separate device) is appropriate for the threat of someone gaining unauthorised access to the device. But it is over-provisioned for your stated threat of someone gaining unauthorised access to a user's account via the app.

In your stated threat scenario, the unauthorised actor installs the app and uses the victim's credentials to log in. This can be mitigated by using MFA processes on the authorised user's authorised device.

There are different ways to do this: sending OTP codes, a local TOTP generating app, or having a process to register and authorise the device.

Authorising the device is a "what you have" form of the MFA methodology.

There is just one thing you have to consider: the security of the processes around registering that device.

If an attacker has the credentials of the user, can they also register an unauthorised device? If so, then you need to consider this new threat scenario.

This is where having a completely separate authentication process to your own is very useful, like a TOTP app on the phone. In this way, the attacker needs the credentials to your service and the credentials to the TOTP service.


When does an Apple Pay token get converted to a real credit-card Apple Pay says they store a Token on the phone and use it for transactions.  Who issues this token?  Who then converts this token to a real credit-card.  Where is the mapping from token to real card stored?

With Apple Pay, no credit card data -- even in encrypted form -- is ever stored on the iPhone or on Apple's servers. Similarly, no credit card data is ever transmitted to or stored on a merchant's servers.
When a user first signs up for Apple Pay, either via an existing iTunes credit card or by loading a new one onto the iPhone, the card information is immediately encrypted and securely sent to the appropriate credit card network. Upon determining that the credit card account is valid, a token is sent back down to the device whereupon it's safely stored within the iPhone's Secure Element.
The token is used in place of an actual credit card number and is what Apple, in its marketing materials, refers to as a unique Device Account Number.

So it's the creditcard that gets converted into a token. You can read the rest of the story here.


Supporting TLS v1.0 while remaining PCI compliant We have a significant portion of sales still coming in from users using browsers that do not yet support TLS 1.1+. We also have demands from our payment processors to stop supporting TLS 1.0 for PCI compliance.

My question is this:

Is it considered PCI compliant if your server still supports TLS 1.0 but you don't allow users using it to purchase and submit personal or credit card info.

The flow would go like this:

User visits website and tries to purchase product
Apache server would look at SSL_PROTOCOL and check to ensure the user isn't using TLSv1
If user is using TLSv1, we would inform the user in a friendly way that they need to upgrade their browser to complete their purchase, or call us at our office to help them complete the purchase.
If a user is using TLSv1.1+, we would let them go about their business.

The idea here is that if we just remove TLS 1.0 users using browsers that only support that will get a browser error page and not a nice page informing them of the problem from our website.

My question boils down to: Does PCI compliance require the server itself not support TLS 1.0, or does it only require you've mitigated the ability for personal data to be transmitted via TLS 1.0

Thanks for the advice, SO'ers.

No CHD over TLS 1.0

The core requirement as explicitly listed in PCI DSS is that cardholder data (CHD) must be securely encrypted in transit, not about particular configuration of servers. TLS 1.0 is not considered as appropriate to consider the channel securely encrypted, but even totally unencrypted channels can be used by in-scope systems if there is a valid reason and sensitive data isn't sent over them, as in your example.

The fact that your server supports TLS 1.0 will show up on reviews/scans and will raise questions, but IMHO the auditor would accept your proposed dataflow, you'd just have to file this description and explanation during the audit.

Do note that a particular institution or payment processor may also have slightly different requirements in addition to what a PCI DSS compliance audit requires.